O kernel é uma maneira de calcular o produto escalar de dois vetores e em alguns espaços (possivelmente com dimensões muito altas), razão pela qual as funções do kernel são algumas vezes chamadas de "produto escalar generalizado".yxy
Suponha que tenhamos um mapeamento que traga nossos vetores em para algum espaço de recurso . Em seguida, o produto escalar de e neste espaço é . Um kernel é uma função que corresponde a esse produto escalar, ou seja, .R n R m x y φ( x ) T φ( y )kk( x , y )=φ( x ) T φ( y )φ:Rn→RmRnRmxyφ(x)Tφ(y)kk(x,y)=φ(x)Tφ(y)
Por que isso é útil? Os kernels permitem calcular produtos de ponto em algum espaço de recurso sem nem mesmo saber o que é esse espaço e o que é .φ
Por exemplo, considere um kernel polinomial simples com . Isso não parece corresponder a nenhuma função de mapeamento , é apenas uma função que retorna um número real. Supondo que e , vamos expandir esta expressão:x , y ∈ R 2 φ x = ( x 1 , x 2 ) y = ( Y 1 , Y 2 )k(x,y)=(1+xTy)2x,y∈R2φx=(x1,x2)y=(y1,y2)
k(x,y)=(1+xTy)2=(1+x1y1+x2y2)2==1+x21y21+x22y22+2x1y1+2x2y2+2x1x2y1y2
Observe que isso nada mais é do que um produto escalar entre dois vetores e e . Portanto, o kernel calcula um produto de ponto em Espaço 6-dimensional sem visitar explicitamente este espaço.(1,x21,x22,2–√x1,2–√x2,2–√x1x2)(1,y21,y22,2–√y1,2–√y2,2–√y1y2)φ(x)=φ(x1,x2)=(1,x21,x22,2–√x1,2–√x2,2–√x1x2)k(x,y)=(1+xTy)2=φ(x)Tφ(y)
Outro exemplo é o kernel gaussiano . Se expandirmos essa função por Taylor, veremos que ela corresponde a um codomain de dimensão infinita de .k(x,y)=exp(−γ∥x−y∥2)φ
Por fim, eu recomendaria um curso on-line "Learning from Data", do professor Yaser Abu-Mostafa, como uma boa introdução aos métodos baseados em kernel. Especificamente, as palestras "Support Vector Machines" , "Kernel Methods" e "Radial Basis Functions" são sobre kernels.