César Souza

nos últimos anos, os métodos do Kernel receberam grande atenção, particularmente devido à crescente popularidade das máquinas Vectoras de suporte. Funções do Kernel podem ser usadas em muitas aplicações como elas fornecem uma ponte simples da linearidade à não linearidade para algoritmos que podem ser expressos em termos de produtos dot. Neste artigo, vamos listar algumas funções do kernel e algumas de suas propriedades.

  • verifique o código fonte para todas as funções do kernel aqui.

muitas destas funções foram incorporadas em Accord.NET, um quadro para a criação de aplicações de aprendizagem de máquinas, estatísticas e visão de computador.

Conteúdo

  1. Kernel Métodos
    1. O Kernel Trick
    2. Kernel Propriedades
    3. como Escolher o Kernel correto
  2. Funções de Kernel
    1. Linear Kernel
    2. Kernel Polinomial
    3. Gaussian Kernel
    4. Exponencial Kernel
    5. Laplaciano Kernel
    6. ANOVA Kernel
    7. Tangente Hiperbólica (Sigmóide) Kernel
    8. Racional Quadrática Kernel
    9. Multiquadric Kernel
    10. Inverso Multiquadric Kernel
    11. Circular Kernel
    12. Esférica Kernel
    13. Onda de Kernel
    14. o Poder do Kernel
    15. Log do Kernel
    16. Spline Kernel
    17. B-Spline Kernel
    18. c ao de Bessel de Kernel
    19. Cauchy Kernel
    20. Qui-Quadrado Kernel
    21. Histograma de Intersecção do Kernel
    22. Generalizada Histograma de Intersecção do Kernel
    23. Generalizada T-Student Kernel
    24. Bayesiana Kernel
    25. Wavelet Kernel
  3. código Fonte
  4. Veja também:

Métodos de Kernel

Kernel métodos são uma classe de algoritmos para análise de padrões ou de reconhecimento, cujo mais conhecido elemento é a máquina de vetor de suporte (SVM). A tarefa geral do padrão de análise é encontrar e estudar os tipos gerais de relações (como clusters, classificações, principais componentes, correlações, classificações), em geral, tipos de dados (tais como sequências, documentos de texto, conjuntos de pontos, vetores, imagens, gráficos, etc) (Wikipédia, 2010a).

A principal característica dos métodos do núcleo, no entanto, é a sua abordagem distinta a este problema. Os métodos do Kernel mapeiam os dados em espaços dimensionais mais elevados na esperança de que neste espaço dimensional mais elevado os dados possam tornar-se mais facilmente separados ou mais bem estruturados. Também não há restrições na forma deste mapeamento, que poderia até levar a espaços dimensionais infinitos. Esta função de mapeamento, no entanto, dificilmente precisa ser computada por causa de uma ferramenta chamada truque do kernel.

o truque do Kernel

o truque do Kernel é uma ferramenta muito interessante e poderosa. É poderoso porque fornece uma ponte da linearidade à não-linearidade a qualquer algoritmo que pode expresso apenas em termos de produtos dot entre dois vetores. Vem do fato de que, se primeiro mapearmos nossos dados de entrada em um espaço dimensional superior, um algoritmo linear operando neste espaço se comportará não linearmente no espaço de entrada original.

Now, the Kernel trick is really interesting because that mapping does not need to be ever computed. Se nosso algoritmo pode ser expresso apenas em termos de um produto interno entre dois vetores, tudo o que precisamos é substituir este produto interno pelo produto interno de algum outro espaço adequado. É aí que reside o “truque”: sempre que um produto Ponto é usado, ele é substituído por uma função Kernel. A função kernel denota um produto interno no espaço de características, e é geralmente denotada como:

K(x,y) = <φ(x),φ(y)>

Usando a função Kernel, o algoritmo pode ser feita em maior dimensão o espaço sem explicitamente o mapeamento de pontos de entrada para este espaço. Isso é altamente desejável, pois às vezes nosso espaço de características de dimensão superior poderia até ser infinito-dimensional e, portanto, inviável de computar.

as propriedades do núcleo

as funções do núcleo devem ser contínuas, simétricas e, de preferência, devem ter uma matriz Gram positiva (semi-) definida. Kernels que são ditos satisfazer o teorema de Mercer são positivos semi-definidos, significando que suas matrizes de kernel têm apenas valores Eigen não-negativos. O uso de um kernel definido positivo assegura que o problema de otimização será convexo e a solução será única.

no entanto, muitas funções do kernel que não são definidas rigorosamente positivas também foram mostradas para executar muito bem na prática. Um exemplo é o kernel Sigmoid, que, apesar de seu uso amplo, não é positivo semi-definitivo para certos valores de seus parâmetros. Boughorbel (2005) também demonstrou experimentalmente que Kernels que são apenas definidos condicionalmente positivos podem possivelmente superar a maioria dos kernels clássicos em algumas aplicações.Kernels

também podem ser classificados como fixos anisotrópicos, estacionários isotrópicos, compactamente suportados, localmente estacionários, não estacionários ou separáveis. Além disso, kernels também pode ser rotulado de escala-invariante ou escala-dependente, que é uma propriedade interessante como kernels escala-invariante conduzir o processo de treinamento invariante a uma escala dos dados.

escolher o Kernel direito

escolher o kernel mais apropriado depende muito do problema à mão-e afinar os seus parâmetros podem facilmente tornar-se uma tarefa tediosa e pesada. A seleção automática do kernel é possível e é discutida nos trabalhos de Tom Howley e Michael Madden.

a escolha de um Kernel depende do problema em mãos porque depende do que estamos tentando modelar. Um kernel polinomial, por exemplo, nos permite modelar conjunções de recursos até a ordem do polinômio. Funções de base Radial permite escolher círculos (ou hiper – esferas) – em construção com o núcleo Linear, que permite apenas escolher linhas (ou hiperplanos).

a motivação por trás da escolha de um kernel particular pode ser muito intuitiva e direta, dependendo do tipo de informação que esperamos extrair sobre os dados. Por favor, veja as notas finais sobre este tópico, desde a introdução à recuperação de informação, por Manning, Raghavan e Schütze para uma melhor explicação sobre o assunto.

funções do núcleo

abaixo está uma lista de algumas funções do núcleo disponíveis na literatura existente. Como foi o caso com artigos anteriores, cada Notação LaTeX para as fórmulas abaixo estão prontamente disponíveis a partir de sua tag html de texto alternativo. Não posso garantir que todos eles estejam perfeitamente correctos, portanto, usem-nos por vossa conta e risco. A maioria deles tem links para artigos onde foram originalmente usados ou propostos.

1. Linear Kernel

  • Linear kernel documentation-linear kernel source code-how to create SVMs in. net with Accord.NET

o núcleo Linear é a função de núcleo mais simples. Ele é dado pelo produto interno <x,y> além de um opcional constante c. Kernel algoritmos usando um kernel linear são muitas vezes equivalente ao seu kernel não homólogos, i.e. KPCA com kernel linear é o mesmo padrão de PCA.

k (x, y) = x^T y + c

2. Kernel polinomial

o kernel polinomial é um kernel não-estacionário. Kernels polinomiais são bem adequados para problemas onde todos os dados de treinamento são normalizados.

k(x, y) = (Alfa x^T y + C)^d
parâmetros ajustáveis são o declive alfa, o termo constante c e o grau polinomial d.

3. Kernel gaussiano

o kernel Gaussiano é um exemplo de kernel de função radial.

k(x, y) = expleft(-frac{ lVert x-y rVert ^2}{2sigma^2}direito)

em Alternativa, também pode ser implementado usando

k(x, y) = expleft(- gama lVert x-y rVert ^2 )

O parâmetro ajustável sigma desempenha um papel importante no desempenho do kernel, e deve ser cuidadosamente ajustada para o problema em questão. Se sobrestimado, o exponencial se comportará quase linearmente e a projeção de dimensão superior começará a perder sua potência não-linear. Por outro lado, se subestimado, a função não será regularizada e o limite de decisão será altamente sensível ao ruído nos dados de treinamento.

4. Kernel exponencial

o kernel Exponencial está intimamente relacionado com o kernel Gaussiano, com apenas o quadrado da norma deixado de fora. É também um núcleo de função radial.

k(x, y) = expleft(-frac{ lVert x-y rVert }{2sigma^2}direito)

5. O Kernel Laplaciano

o kernel Laplace é completamente equivalente ao kernel exponencial, exceto por ser menos sensível para alterações no parâmetro sigma. Sendo equivalente,é também um núcleo de função radial.

k(x, y) = expleft(- frac{lVert x-y rVert }{sigma}direito)

é importante notar que as observações feitas sobre o sigma parâmetro para o kernel Gaussiano também se aplicam ao Exponencial e Laplaciano kernels.

6. O kernel ANOVA

o kernel ANOVA é também um kernel de função radial, assim como os kernels Gaussianos e Laplacianos. Diz-se que tem um bom desempenho em problemas de regressão multidimensional (Hofmann, 2008).

k(x, y) = sum_{k=1}^n exp (-sigma (x^k - y^k)^2)^d

7. O Kernel tangente hiperbólico (Sigmoid)

o Kernel tangente hiperbólico também é conhecido como o Kernel Sigmoid e como o kernel Perceptron Multilayer (MLP). O núcleo Sigmoid vem do campo de Redes Neurais, onde a função sigmoid bipolar é frequentemente usada como uma função de ativação para neurônios artificiais.

k(x, y) = tanh (alpha x^T y + c)

é interessante notar que um modelo SVM usando uma sigmóide função kernel é equivalente a um dois-camada de rede neural perceptron. Este kernel era bastante popular para máquinas vectoriais de suporte devido à sua origem da teoria da rede neural. Além disso, apesar de ser apenas condicionalmente positivo definitivo, constatou-se que teve um bom desempenho na prática.

Existem dois parâmetros ajustáveis no núcleo sigmoid, o declive alfa e a constante de intercepção C. um valor comum para alfa é 1/N, onde N é a dimensão dos dados. Um estudo mais detalhado sobre kernels sigmoid pode ser encontrado nas obras de Hsuan-Tien e Chih-Jen.

8. Rational Quadratic Kernel

The Rational Quadratic kernel is less computationally intensive than the Gaussian kernel and can be used as an alternative when using the Gaussian becomes too expensive.

k(x, y) = 1 - frac{lVert x-y rVert^2}{lVert x-y rVert^2 + c}

9. O núcleo Multiquadrico

o núcleo Multiquadrico pode ser usado nas mesmas situações que o núcleo quadrático racional. Como é o caso do kernel Sigmoid, é também um exemplo de um kernel definido não-positivo.

k (x, y) = sqrt{lVert x-y rVert^2 + C^2}

10. Núcleo Multiquadrico inverso

o núcleo quadrático inverso. Tal como acontece com o núcleo Gaussiano, ele resulta em uma matriz de núcleo com rank completo (Micchelli, 1986) e, portanto, forma um espaço de recursos de dimensão infinita.

k(x, y) = frac{1}{sqrt{lVert x-y rVert^2 + theta^2}}

11. Núcleo Circular

o núcleo circular é usado em aplicações geostáticas. É um exemplo de um kernel estacionário isotrópico e é positivo definido em R2.

k(x, y) = frac{2}{pi} arccos ( - frac{ lVert x-y rVert}{sigma}) - frac{2}{pi} frac{ lVert x-y rVert}{sigma} sqrt{1 - esquerda(frac{ lVert x-y rVert}{sigma} right)^2}
mbox{se}~ lVert x-y rVert sigma mbox{, caso contrário, zero}

12. O núcleo esférico

o núcleo esférico é semelhante ao núcleo circular, mas é positivo definido em R3.

k(x, y) = 1 - frac{3}{2} frac{lVert x-y rVert}{sigma} + frac{1}{2} esquerda( frac{ lVert x-y rVert}{sigma} right)^3

mbox{se}~ lVert x-y rVert sigma mbox{, caso contrário, zero}

13. O núcleo de onda

o núcleo de onda é também semi-definitivo positivo simétrico (Huang, 2008).

k(x, y) = frac{theta}{lVert x-y rVert direita} pecado frac{lVert x-y rVert }{theta}

14. O núcleo de potência

o núcleo de potência é também conhecido como o núcleo triangular (não rectificado). É um exemplo de kernel invariante em escala (Sahbi e Fleuret, 2004) e também é apenas condicionalmente positivo definitivo.

k(x,y) = - lVert x-y rVert ^d

15. Log Kernel

o kernel Log parece ser particularmente interessante para as imagens, mas é apenas condicionalmente positivo definido.

k(x,y) = - log (lVert x-y rVert ^d + 1)

16. O kernel Spline

o kernel Spline é dado como um polinômio cúbico de peças sábio, como derivado nos trabalhos de Gunn (1998).

k(x, y) = 1 + xy + xy~min(x,y) - frac{x+y}{2}~min(x,y)^2+frac{1}{3}min(x,y)^3

no Entanto, o que ele realmente quer dizer é:

k(x,y) = prod_{i=1}^d 1 + x_i y_i + x_i y_i min(x_i, y_i) - frac{x_i + y_i}{2} min(x_i,y_i)^2 + frac{min(x_i,y_i)^3}{3}

Comx,y em R^d

17. B-Spline (Radial Basis Function) Kernel

o kernel B-Spline é definido no intervalo . É dado pela fórmula recursiva:

k(x,y) = B_{2p+1}(x-y)

mbox{onde~} p em N mbox{~com~} B_{i+1} := B_i otimo B_0.

No trabalho de Bart Hamers é dado por:

k(x, y) = prod_{p=1}^d B_{2n+1}(x_p - y_p)

como Alternativa, Bn pode ser calculado usando a expressão explícita (Fomel, 2000):

B_n(x) = frac{1}{n!} sum_{k=0}^{n+1} binom{n + 1}{k} (-1)^k (x + frac{n+1}{2} - k)^n_ +

em que x+ é definida como a função de potência truncada:

x^d_+ = begin{cases} x^d, mbox{se }x 0 0, mbox{senão} end{cases}

18. Kernel de Bessel

o kernel de Bessel é bem conhecido na teoria dos espaços de função de suavidade fracionada. É dado por:

k(x, y) = frac{J_{v+1}( sigma lVert x-y rVert)}{ lVert x-y rVert ^ {-n(v+1)} }

, onde J é a função de Bessel de primeiro tipo. No entanto, no Kernlab para R documentação, o de Bessel de kernel é dito ser:

k(x,x') = - Bessel_{(nu+1)}^n (sigma |x - x'|^2)') = - Bessel_{(nu+1)}^n (sigma |x - x'|^2)

19. Cauchy Kernel

o kernel Cauchy vem da distribuição Cauchy (Basak, 2008). É um núcleo de cauda longa e pode ser usado para dar influência e sensibilidade de longo alcance sobre o espaço de alta dimensão.

k(x, y) = frac{1}{1 + frac{lVert x-y rVert^2}{sigma^2} }

20. Kernel Chi-Square

o kernel Chi-Square vem da distribuição Chi-Square:

k(x,y) = 1 - sum_{i=1}^n frac{(x_i-y_i)^2}{frac{1}{2}(x_i+y_i)}

no Entanto, como observado pelo comentarista Alexis Mignon, esta versão do kernel é apenas condicionalmente positivo-definido (CPD). Positivo-definido versão deste kernel é dada em (Vedaldi e Zisserman, 2011) como

e é adequado para ser utilizado por outros métodos de máquinas de vetor de suporte.

21. Histogram Intersection Kernel

the Histogram Intersection Kernel is also known as The Min Kernel and has been proved useful in image classification.

k(x,y) = sum_{i=1}^N min(x_i,y_i)

22. A intersecção generalizada do histograma

o núcleo de intersecção generalizada do histograma é construído com base no núcleo de intersecção do histograma para classificação de imagens, mas aplica-se numa variedade muito maior de contextos (Boughorbel, 2005). É dado por:

k(x,y) = sum_{i=1}^m min(|x_i|^alpha|y_i|^beta)

23. Generalized T-Student Kernel

the Generalized T-Student Kernel has been proved to be a Mercel Kernel, thus having a positive semi-definite Kernel matrix (Boughorbel, 2004). É dado por:

k(x,y) = frac{1}{1 + lVert x-y rVert ^d}

24. Bayesiana Kernel

Bayesiano de kernel pode ser dada como:

k(x,y) = prod_{i=1}^N kappa_l (x_l,y_l)

onde

kappa_l(a,b) = sum_{c {0;1}} P(Y=c médio X_l=a) ~ P(Y=c médio X_l=b)

no Entanto, ele realmente depende do problema que está sendo modelado. Para mais informações, por favor, veja o trabalho de Alashwal, Deris e Othman, no qual eles usaram uma SVM com kernels Bayesianos na previsão de interações proteína-proteína.

25. Wavelet de Kernel

A Wavelet de kernel (Zhang et al, 2004) vem da teoria de Wavelets e é dado como:

k(x,y) = prod_{i=1}^N h(frac{x_i-c_i}{a}) : h(frac{y_i-c_i}{a})

a, Onde a e c são as wavelets dilatação e a tradução coeficientes, respectivamente (forma apresentada acima é uma simplificação, por favor consulte o documento original para obter detalhes). Uma tradução invariável versão deste kernel pode ser dada como:

k(x,y) = prod_{i=1}^N h(frac{x_i-y_i}{a})

Onde em h(x) denota um termo função. No papel, Li Zhang, Weida Zhou, e Licheng Jiao, os autores sugerem uma possível h(x) como:

h(x) = cos(1.75 x)exp(-frac{x^2}{2})

Que também se manifestar como uma admissível função de kernel.

código fonte

Accord.NET Framework. Alguns também estão disponíveis na sequência deste artigo, máquinas vetoriais de Suporte de Kernel para classificação e regressão em C#. Eles são fornecidos juntamente com uma implementação abrangente e simples de SVMs (Support Vector Machines) Em C#. No entanto, para as últimas fontes, que podem conter correções de bugs e outras melhorias, por favor baixe a versão mais recente disponível de Accord.NET.

Veja também:

  • Kernel Máquinas de Vetor de Suporte (kSVMs)
  • Análise de Componentes Principais (PCA)
  • Kernel Análise de Componentes Principais (KPCA)
  • Análise Discriminante Linear (LDA)
  • Não-Linear, Análise Discriminante com Kernels (KDA)
  • Análise de Regressão Logística em C#
  • Accord.NET Quadro: a Computação Científica em .NET
  • Haar-recurso de detecção de objetos em C# (Viola-Jones Classificador)
  • o Reconhecimento de Escrita manual utilizando o Kernel Análise Discriminante
  • o Reconhecimento de Escrita manual Revisitado: Máquinas Vetoras de suporte ao Kernel
  • Análise de regressão logística
  • contribuidores Wiki de Previsão em linha. “Kernel Methods.”On-Line Prediction Wiki. http://onlineprediction.net/?n=Main.KernelMethods (accessed March 3, 2010).
  • Genton, Marc G. ” Classes de Kernels for Machine Learning: a Statistics Perspective.”Journal of Machine Learning Research 2 (2001) 299-312.Hofmann, T., B. Schölkopf, and A. J. Smola. “Kernel methods in machine learning.” Anao. Estatista. Volume 36, Number 3 (2008), 1171-1220.Gunn, S. R. (1998, Maio). “Suporte a máquinas vetoras para classificação e regressão.”Technical report, Faculty of Engineering, Science and Mathematics School of Electronics and Computer Science.Karatzoglou, A., Smola, A., Hornik, K. and Zeileis, A. ” Kernlab – an R package for kernel Learning.” (2004).
  • Karatzoglou, A., Smola, A., Hornik, K. and Zeileis, A. “Kernlab – an S4 package for kernel methods in R.” J. Statistical Software, 11, 9 (2004).Karatzoglou, A., Smola, A., Hornik, K. and Zeileis, A. ” R: Kernel Functions.”Documentation for package ‘kernlab’ version 0.9-5. http://rss.acs.unt.edu/Rdoc/library/kernlab/html/dots.html (accessed March 3, 2010).
  • Howley, T. and Madden, M. G. “the genetic kernel support vector machine: Description and evaluation”. Revisão De Inteligência Artificial. Volume 24, Number 3 (2005), 379-395.Shawkat Ali e Kate A. Smith. “Kernel Width Selection for SVM Classification: A Meta-Learning Approach.”International Journal of Data Warehousing & Mining, 1 (4), 78-97, October-December 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.”Technical report, Department of Computer Science, National Taiwan University, 2003.Boughorbel, S., Jean-Philippe Tarel, and Nozha Boujemaa. “Project-Imedia: Object Recognition.”INRIA-INRIA Activity Reports-RalyX. http://ralyx.inria.fr/2004/Raweb/imedia/uid84.html (accessed March 3, 2010).Huang, Lingkang. “Variable Selection in Multi-class Support Vector Machine and Applications in Genomic Data Analysis.”PhD Thesis, 2008.Manning, Christopher D., Prabhakar Raghavan, e Hinrich Schütze. “Nonlinear SVMs.”The Stanford NLP (Natural Language Processing) Group. http://nlp.stanford.edu/IR-book/html/htmledition/nonlinear-svms-1.html (accessed March 3, 2010).Fomel, Sergey. “Inverse B-spline interpolation.”Stanford Exploration Project, 2000. http://sepwww.stanford.edu/public/docs/sep105/sergey2/paper_html/node5.html (accessed March 3, 2010).Basak, Jayanta. “A least square kernel machine with box constraints.”International Conference on Pattern Recognition 2008 1 (2008): 1-4.Alashwal, H., Safaai Deris, and 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”. INRIA Research Report, N-5143, Março de 2004.Sabri Boughorbel, Jean-Philippe Tarel e Nozha Boujemaa. “Generalized histogram intersection kernel for image recognition”. Proceedings of the 2005 Conference on Image Processing, volume 3, pages 161-164, 2005.Micchelli, Charles. Interpolação de dados dispersos: matrizes de distância e funções definidas condicionalmente positivas. Constructive Approximation 2, no. 1 (1986): 11-22.
  • contribuidores da Wikipédia, ” Kernel methods,”Wikipedia, the Free Encyclopedia, http://en.wikipedia.org/w/index.php?title=Kernel_methods&oldid=340911970 (accessed March 3, 2010).
  • contribuidores da Wikipédia, ” Kernel trick,”Wikipedia, the Free Encyclopedia, http://en.wikipedia.org/w/index.php?title=Kernel_trick&oldid=269422477 (accessed March 3, 2010).Weisstein, Eric W. ” Positive Semidefinite Matrix.”From MathWorld-A Wolfram Web Resource. http://mathworld.wolfram.com/PositiveSemidefiniteMatrix.html
  • Hamers B. “Kernel Models for Large Scale Applications”, Ph. D. , Katholieke Universiteit Leuven, Bélgica, 2004.Li Zhang, Weida Zhou, Licheng Jiao. Máquina De Suporte Wavelet. Transacções do IEEE sobre Sistema, homem e Cibernética, Parte B, 2004, 34(1): 34-39.
  • Vedaldi, A. and Zisserman, A. Efficient Additive Kernels via Explicit Feature Maps. IEEE Transactions on Pattern Recognition and Machine Intelligence, Vol. XX, No. XX, junho, 2011.

citando este trabalho

Se você quiser, por favor cite este trabalho como: Souza, César R. “funções Kernel para aplicações de aprendizagem automática.”17 Mar. 2010. Site. <http://crsouza.blogspot.com/2010/03/kernel-functions-for-machine-learning.html>.

Related Posts

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *