Negli ultimi anni, i metodi del kernel hanno ricevuto grande attenzione, in particolare a causa della crescente popolarità delle macchine vettoriali di supporto. Le funzioni del kernel possono essere utilizzate in molte applicazioni in quanto forniscono un semplice ponte dalla linearità alla non linearità per algoritmi che possono essere espressi in termini di prodotti dot. In questo articolo, elencheremo alcune funzioni del kernel e alcune delle loro proprietà.
- Controllare il codice sorgente per tutte le funzioni del kernel qui.
Molte di queste funzioni sono state incorporate in Accord.NET, un framework per la creazione di applicazioni di machine learning, statistiche e computer vision.
- Contenuto
- Kernel Metodi
- Il trucco del Kernel
- Proprietà del kernel
- La scelta del kernel giusto
- Funzioni del kernel
- 1. Kernel lineare
- 2. Kernel polinomiale
- 3. Kernel gaussiano
- 4. Kernel esponenziale
- 5. Kernel Laplaciano
- 6. Kernel ANOVA
- 7. Kernel tangente iperbolica (Sigmoid)
- 8. Kernel quadratico razionale
- 9. Kernel Multiquadric
- 10. Kernel Multiquadrico inverso
- 11. Kernel circolare
- 12. Kernel sferico
- 13. Kernel Wave
- 14. Power Kernel
- 15. Log Kernel
- 16. Kernel Spline
- 17. B-Spline (Radial Basis Function) Kernel
- 18. Kernel di Bessel
- 19. Kernel Cauchy
- 20. Kernel Chi-Quadrato
- 21. Kernel intersezione istogramma
- 22. Intersezione istogramma generalizzata
- 23. Kernel T-Student generalizzato
- 24. Bayesiano Kernel
- 25. Wavelet Kernel
- Codice sorgente
- Vedi anche
- Citando questo lavoro
Contenuto
- Kernel Metodi
- Il Kernel Trucco
- Kernel Proprietà
- Scegliere il Giusto Kernel
- Funzioni del Kernel
- Lineare Kernel
- Polinomio Kernel
- Controllo del Kernel
- Esponenziale del Kernel
- Laplaciano Kernel
- ANOVA Kernel
- Tangente Iperbolica (Sigma) Kernel
- Razionale Quadratica Kernel
- Multiquadric Kernel
- Inversa Multiquadric Kernel
- Circolare del Kernel
- Sferica Kernel
- Onda Kernel
- Potenza del Kernel
- Log del Kernel
- Spline Kernel
- B-Spline Kernel
- Bessel Kernel
- Cauchy Kernel
- Chi-Quadrato Kernel
- Istogramma Intersezione Kernel
- Generalizzata Istogramma Intersezione Kernel
- Generalizzata T-Student Kernel
- Bayesiano Kernel
- Wavelet Kernel
- codice Sorgente
- Vedi anche
Kernel Metodi
Kernel sono i metodi di una classe di algoritmi per l’analisi dei modelli o di riconoscimento, di cui il più noto è l’elemento support vector machine (SVM). Il compito generale dell’analisi dei pattern è trovare e studiare tipi generali di relazioni (come cluster, classifiche, componenti principali, correlazioni, classificazioni) in tipi generali di dati (come sequenze, documenti di testo, insiemi di punti, vettori, immagini, grafici, ecc.) (Wikipedia, 2010a).
La caratteristica principale dei metodi del Kernel, tuttavia, è il loro approccio distinto a questo problema. I metodi del kernel mappano i dati in spazi dimensionali superiori nella speranza che in questo spazio dimensionale superiore i dati possano essere più facilmente separati o meglio strutturati. Non ci sono inoltre vincoli sulla forma di questa mappatura, che potrebbe persino portare a spazi a dimensione infinita. Questa funzione di mappatura, tuttavia, non ha quasi bisogno di essere calcolata a causa di uno strumento chiamato kernel trick.
Il trucco del Kernel
Il trucco del Kernel è uno strumento molto interessante e potente. È potente perché fornisce un ponte dalla linearità alla non linearità a qualsiasi algoritmo che può essere espresso esclusivamente in termini di prodotti dot tra due vettori. Deriva dal fatto che, se prima mappiamo i nostri dati di input in uno spazio di dimensione superiore, un algoritmo lineare che opera in questo spazio si comporterà in modo non lineare nello spazio di input originale.
Ora, il trucco del Kernel è davvero interessante perché quella mappatura non ha bisogno di essere mai calcolata. Se il nostro algoritmo può essere espresso solo in termini di un prodotto interno tra due vettori, tutto ciò di cui abbiamo bisogno è sostituire questo prodotto interno con il prodotto interno da qualche altro spazio adatto. È qui che risiede il “trucco”: ovunque venga utilizzato un prodotto dot, viene sostituito con una funzione Kernel. La funzione kernel denota un prodotto interno nello spazio feature ed è solitamente indicata come:
K(x,y) = <φ(x),φ(y)>
Utilizzando la funzione Kernel, l’algoritmo può quindi essere portato in uno spazio di dimensione superiore senza mappare esplicitamente i punti di input in questo spazio. Questo è altamente desiderabile, poiché a volte il nostro spazio di caratteristiche di dimensione superiore potrebbe persino essere infinito-dimensionale e quindi irrealizzabile da calcolare.
Proprietà del kernel
Le funzioni del kernel devono essere continue, simmetriche e preferibilmente devono avere una matrice di Gram positiva (semi-) definita. I kernel che si dice soddisfino il teorema di Mercer sono semi-definiti positivi, il che significa che le loro matrici del kernel hanno solo valori di Eigen non negativi. L’uso di un kernel definito positivo assicura che il problema di ottimizzazione sarà convesso e la soluzione sarà unica.
Tuttavia, molte funzioni del kernel che non sono strettamente definitive positive hanno dimostrato di funzionare molto bene nella pratica. Un esempio è il kernel Sigmoid, che, nonostante il suo ampio utilizzo, non è semi-definito positivo per determinati valori dei suoi parametri. Boughorbel (2005) ha anche dimostrato sperimentalmente che i kernel che sono definiti solo condizionatamente positivi possono forse sovraperformare la maggior parte dei kernel classici in alcune applicazioni.
I kernel possono anche essere classificati come stazionari anisotropi, stazionari isotropi, supportati in modo compatto, localmente stazionari, non stazionari o separabili. Inoltre, i kernel possono anche essere etichettati come scale-invariant o scale-dependant, che è una proprietà interessante poiché i kernel scale-invariant guidano il processo di allenamento invariante a un ridimensionamento dei dati.
La scelta del kernel giusto
La scelta del kernel più appropriato dipende molto dal problema in questione – e la messa a punto dei suoi parametri può facilmente diventare un compito noioso e ingombrante. La selezione automatica del kernel è possibile ed è discussa nelle opere di Tom Howley e Michael Madden.
La scelta di un Kernel dipende dal problema in questione perché dipende da ciò che stiamo cercando di modellare. Un kernel polinomiale, ad esempio, ci consente di modellare le congiunzioni delle caratteristiche fino all’ordine del polinomio. Le funzioni di base radiali consentono di individuare cerchi (o ipersfere) – in costrizione con il kernel lineare, che consente solo di individuare linee (o iperpiani).
La motivazione alla base della scelta di un particolare kernel può essere molto intuitiva e diretta a seconda del tipo di informazioni che ci aspettiamo di estrarre sui dati. Si prega di consultare le note finali su questo argomento da Introduction to Information Retrieval, di Manning, Raghavan e Schütze per una spiegazione migliore sull’argomento.
Funzioni del kernel
Di seguito è riportato un elenco di alcune funzioni del kernel disponibili nella letteratura esistente. Come nel caso degli articoli precedenti, ogni notazione LaTeX per le formule sottostanti è prontamente disponibile dal loro tag html di testo alternativo. Non posso garantire che tutti siano perfettamente corretti, quindi utilizzarli a proprio rischio. La maggior parte di essi ha collegamenti ad articoli in cui sono stati originariamente utilizzati o proposti.
1. Kernel lineare
- Documentazione del kernel lineare – codice sorgente del kernel lineare-come creare SVM in. NET con Accord.NET
Il kernel lineare è la funzione del kernel più semplice. È dato dal prodotto interno<x,y> più una costante opzionale c. Gli algoritmi del kernel che utilizzano un kernel lineare sono spesso equivalenti alle loro controparti non-kernel, cioè KPCA con kernel lineare è lo stesso del PCA standard.
2. Kernel polinomiale
Il kernel polinomiale è un kernel non stazionario. I kernel polinomiali sono adatti per problemi in cui tutti i dati di allenamento sono normalizzati.
I parametri regolabili sono la pendenza alfa, il termine costante c e il grado polinomiale d.
3. Kernel gaussiano
Il kernel gaussiano è un esempio di kernel di funzione di base radiale.
in Alternativa, si potrebbe anche essere implementato usando
I parametri regolabili sigma gioca un ruolo importante nelle prestazioni del kernel, e deve essere attentamente studiata per il problema a portata di mano. Se sopravvalutato, l’esponenziale si comporterà quasi linearmente e la proiezione dimensionale superiore inizierà a perdere la sua potenza non lineare. D’altra parte, se sottovalutato, la funzione mancherà di regolarizzazione e il limite di decisione sarà altamente sensibile al rumore nei dati di allenamento.
4. Kernel esponenziale
Il kernel esponenziale è strettamente correlato al kernel gaussiano, con solo il quadrato della norma lasciato fuori. È anche un kernel di funzione di base radiale.
5. Kernel Laplaciano
Il Kernel Laplace è completamente equivalente al kernel esponenziale, tranne per essere meno sensibile alle modifiche del parametro sigma. Essendo equivalente, è anche un kernel di funzione di base radiale.
È importante notare che le osservazioni fatte sul parametro sigma per il kernel gaussiano si applicano anche ai kernel Esponenziale e laplaciano.
6. Kernel ANOVA
Il kernel ANOVA è anche un kernel di funzione di base radiale, proprio come i kernel gaussiani e laplaciani. Si dice che funzioni bene nei problemi di regressione multidimensionale (Hofmann, 2008).
7. Kernel tangente iperbolica (Sigmoid)
Il Kernel tangente iperbolica è anche conosciuto come Kernel Sigmoid e come kernel Perceptron multistrato (MLP). Il Kernel Sigmoid proviene dal campo delle reti neurali, dove la funzione sigmoidica bipolare viene spesso utilizzata come funzione di attivazione per i neuroni artificiali.
È interessante notare che un modello SVM che utilizza una funzione del kernel sigmoid è equivalente a una rete neurale perceptron a due strati. Questo kernel era molto popolare per le macchine vettoriali di supporto a causa della sua origine dalla teoria delle reti neurali. Inoltre, pur essendo definito solo condizionalmente positivo, è stato trovato per funzionare bene nella pratica.
Ci sono due parametri regolabili nel kernel sigmoid, la pendenza alfa e la costante di intercettazione c. Un valore comune per alfa è 1 / N, dove N è la dimensione dei dati. Uno studio più dettagliato sui kernel sigmoidei può essere trovato nelle opere di Hsuan-Tien e Chih-Jen.
8. Kernel quadratico razionale
Il kernel quadratico razionale è meno computazionalmente intensivo del kernel gaussiano e può essere usato come alternativa quando l’uso del gaussiano diventa troppo costoso.
9. Kernel Multiquadric
Il kernel Multiquadric può essere utilizzato nelle stesse situazioni del kernel Rational Quadratic. Come nel caso del kernel Sigmoid, è anche un esempio di kernel definito non positivo.
10. Kernel Multiquadrico inverso
Il kernel Multi quadrico inverso. Come con il kernel gaussiano, risulta in una matrice del kernel con rango completo (Micchelli, 1986) e quindi forma uno spazio di funzionalità di dimensione infinita.
11. Kernel circolare
Il kernel circolare viene utilizzato nelle applicazioni geostatiche. È un esempio di un kernel stazionario isotropico ed è definito positivo in R2.
12. Kernel sferico
Il kernel sferico è simile al kernel circolare, ma è definito positivo in R3.
13. Kernel Wave
Il kernel Wave è anche simmetrico positivo semi-definito (Huang, 2008).
14. Power Kernel
Il Power kernel è anche conosciuto come kernel triangolare (non rettificato). È un esempio di kernel scala-invariante (Sahbi e Fleuret, 2004) ed è anche definito solo condizionatamente positivo.
15. Log Kernel
Il log kernel sembra essere particolarmente interessante per le immagini, ma è solo condizionatamente positivo definito.
16. Kernel Spline
Il kernel Spline è dato come un polinomio cubico a pezzi, come derivato nelle opere di Gunn (1998).
Tuttavia, ciò che realmente dire è:
Con
17. B-Spline (Radial Basis Function) Kernel
Il kernel B-Spline è definito sull’intervallo . È dato dalla formula ricorsiva:
Nel lavoro di Bart Hamers è dato da:
in Alternativa, Bn può essere calcolata utilizzando l’espressione esplicita (Fomel, 2000):
Dove x + è definita come la funzione di potenza troncata:
18. Kernel di Bessel
Il kernel di Bessel è ben noto nella teoria degli spazi di funzione della scorrevolezza frazionaria. È dato da:
dove J è la funzione di Bessel di primo tipo. Tuttavia, nella documentazione Kernlab for R, il kernel di Bessel è detto:
19. Kernel Cauchy
Il kernel Cauchy proviene dalla distribuzione Cauchy (Basak, 2008). È un kernel a coda lunga e può essere utilizzato per dare influenza e sensibilità a lungo raggio sullo spazio ad alta dimensione.
20. Kernel Chi-Quadrato
Il kernel Chi-Quadrato viene dalla distribuzione Chi-Quadrato:
Tuttavia, come notato da commentatore Alexis Mignon, questa versione del kernel è solo condizionatamente positivo-preciso (CPD). Una versione definita positiva di questo kernel è data in (Vedaldi e Zisserman, 2011) come
ed è adatta per essere utilizzata con metodi diversi dalle macchine vettoriali di supporto.
21. Kernel intersezione istogramma
Il Kernel intersezione istogramma è noto anche come il Kernel Min ed è stato dimostrato utile nella classificazione delle immagini.
22. Intersezione istogramma generalizzata
Il kernel di intersezione istogramma generalizzato è costruito in base al kernel di intersezione istogramma per la classificazione delle immagini, ma si applica in una varietà molto più ampia di contesti (Boughorbel, 2005). È dato da:
23. Kernel T-Student generalizzato
Il Kernel T-Student generalizzato ha dimostrato di essere un kernel Mercel, avendo quindi una matrice Kernel semi-definita positiva (Boughorbel, 2004). È dato da:
24. Bayesiano Kernel
Bayesiano kernel potrebbe essere dato come:
dove
Tuttavia, in realtà dipende dal problema che viene modellata. Per ulteriori informazioni, vedere il lavoro di Alashwal, Deris e Othman, in cui hanno usato un SVM con kernel bayesiani nella previsione delle interazioni proteina-proteina.
25. Wavelet Kernel
Wavelet kernel (Zhang et al, 2004) viene da Wavelet teoria ed è dato come:
Dove a e c sono i wavelet dilatazione e traduzione coefficienti, rispettivamente (il modulo qui presentata è una semplificazione, si prega di consultare la carta originale per i dettagli). Una versione invariante di traduzione di questo kernel può essere data come:
Dove in entrambi h(x) denota una funzione wavelet madre. Nel lavoro di Li Zhang, Weida Zhou e Licheng Jiao, gli autori suggeriscono una possibile h(x) come:
Che dimostrano anche come una funzione del kernel ammissibile.
Codice sorgente
L’ultima versione del codice sorgente per quasi tutti i kernel sopra elencati è disponibile nel Accord.NET Quadro. Alcuni sono disponibili anche nel seguito di questo articolo, Macchine vettoriali di supporto del kernel per la classificazione e la regressione in C#. Sono forniti insieme a un’implementazione completa e semplice di SVM (Support Vector Machines) in C#. Tuttavia, per le fonti più recenti, che possono contenere correzioni di bug e altri miglioramenti, si prega di scaricare la versione più recente disponibile di Accord.NET.
Vedi anche
- Kernel Support Vector Machines (kSVMs)
- Analisi delle Componenti Principali (PCA)
- Kernel Analisi delle Componenti Principali (KPCA)
- Analisi Discriminante Lineare (LDA)
- Non-Analisi Discriminante Lineare con Kernel (KDA)
- Analisi di Regressione Logistica in C#
- Il Accord.NET Quadro: il Calcolo Scientifico in .NET
- Haar-funzione di rilevamento di oggetti in C# (Viola-Jones Classificatore)
- Riconoscimento della scrittura mediante Analisi Discriminante del Kernel
- il Riconoscimento della Grafia Rivisitato: Macchine vettoriali di supporto del kernel
- Analisi di regressione logistica
- Contributori Wiki di previsione on-line. “Metodi del kernel.”Wiki di previsione on-line. http://onlineprediction.net/?n=Main.KernelMethods (accesso 3 marzo 2010).
- Genton, Marc G. ” Classi di kernel per l’apprendimento automatico: una prospettiva statistica.”Journal of Machine Learning Research 2 (2001) 299-312.
- Hofmann, T., B. Schölkopf e A. J. Smola. “Metodi del kernel nell’apprendimento automatico.” Ann. Statista. Volume 36, Numero 3 (2008), 1171-1220.
- Gunn, SR (1998, maggio). “Support vector machines for classification and regression.”Relazione tecnica, Facoltà di Ingegneria, Scienze e Matematica Scuola di Elettronica e Informatica.
- Karatzoglou, A., Smola, A., Hornik, K. e Zeileis, A. “Kernlab – un pacchetto R per l’apprendimento del kernel.” (2004).
- Karatzoglou, A., Smola, A., Hornik, K. e Zeileis ,A. “Kernlab – an S4 package for kernel methods in R.” J. Statistical Software, 11, 9 (2004).
- Karatzoglou, A., Smola, A., Hornik, K. e Zeileis, A. “R: Funzioni del kernel.”Documentazione per il pacchetto ‘kernlab’ versione 0.9-5. http://rss.acs.unt.edu/Rdoc/library/kernlab/html/dots.html (accesso 3 marzo 2010).
- Howley, T. e Madden, M. G. “The genetic kernel support vector machine: Description and evaluation”. Recensione di intelligenza artificiale. Volume 24, Numero 3 (2005), 379-395.e ‘ il momento di fare un salto di qualità. “Kernel Width Selection for SVM Classification: A Meta-Learning Approach.”International Journal of Data Warehousing& Mining, 1 (4), 78-97, ottobre-dicembre 2005.
- Hsuan-Tien Lin e Chih-Jen Lin. “A study on sigmoid kernels for SVM and the training of non – PSD kernels by SMO-type methods.”Relazione tecnica, Dipartimento di Informatica, Università nazionale di Taiwan, 2003.
- Boughorbel, S., Jean-Philippe Tarel, e Nozha Boujemaa. “Project-Imedia: Object Recognition.”INRIA-Rapporti di attività INRIA-RalyX. http://ralyx.inria.fr/2004/Raweb/imedia/uid84.html (accesso 3 marzo 2010).
- Huang, Lingkang. “Selezione variabile in macchina vettoriale di supporto multi-classe e applicazioni nell’analisi dei dati genomici.”Tesi di dottorato, 2008.
- Manning, Christopher D., Prabhakar Raghavan e Hinrich Schütze. “SVM non lineari.”Il gruppo Stanford NLP (Natural Language Processing). http://nlp.stanford.edu/IR-book/html/htmledition/nonlinear-svms-1.html (accesso 3 marzo 2010).
- Fomel, Sergey. “Inverse B-spline interpolation.”Stanford Exploration Project, 2000. http://sepwww.stanford.edu/public/docs/sep105/sergey2/paper_html/node5.html (accesso 3 marzo 2010).
- Basak, Jayanta. “Una macchina kernel almeno quadrata con vincoli box.”International Conference on Pattern Recognition 2008 1 (2008): 1-4.
- Alashwal, H., Safaai Deris, e Razib M. Othman. “A Bayesian Kernel for the Prediction of Protein-Protein Interactions.”International Journal of Computational Intelligence 5, no. 2 (2009): 119-124.
- Hichem Sahbi e François Fleuret. “Kernel methods and scale invariance using the triangular kernel”. Rapporto di ricerca dell’INRIA, N-5143, marzo 2004.
- Sabri Boughorbel, Jean-Philippe Tarel e Nozha Boujemaa. “Generalized histogram intersection kernel for image recognition”. Atti della Conferenza 2005 sull’elaborazione delle immagini, volume 3, pagine 161-164, 2005.
- Micchelli, Carlo. Interpolazione di dati sparsi: matrici di distanza e funzioni definite condizionatamente positive. Approssimazione costruttiva 2, n. 1 (1986): 11-22.
- Contributori di Wikipedia, “Metodi del Kernel”, Wikipedia, L’Enciclopedia Libera, http://en.wikipedia.org/w/index.php?title=Kernel_methods&oldid=340911970 (accesso 3 marzo 2010).
- Contributori di Wikipedia, “Kernel trick”, Wikipedia, L’Enciclopedia Libera, http://en.wikipedia.org/w/index.php?title=Kernel_trick&oldid=269422477 (accesso 3 marzo 2010).
- Weisstein, Eric W. “Matrice semidefinita positiva.”Da MathWorld – Una risorsa Web Wolfram. http://mathworld.wolfram.com/PositiveSemidefiniteMatrix.html
- Hamers B. “Kernel Models for Large Scale Applications”, Ph. D., Katholieke Universiteit Leuven, Belgium, 2004.
- Li Zhang, Weida Zhou, Licheng Jiao. Wavelet Supporto macchina vettoriale. Transazioni IEEE su sistema, uomo e cibernetica, Parte B, 2004, 34(1): 34-39.
- Vedaldi, A. e Zisserman, A. Kernel additivi efficienti tramite mappe di funzionalità esplicite. IEEE Transactions on Pattern Recognition and Machine Intelligence, Vol. XX, No. XX, giugno 2011.
Citando questo lavoro
Se si desidera, si prega di citare questo lavoro come: Souza, César R. “Funzioni del kernel per applicazioni di apprendimento automatico.”17 Mar. 2010. Web. <http://crsouza.blogspot.com/2010/03/kernel-functions-for-machine-learning.html>.