Kernel è un modo per calcolare il prodotto scalare di due vettori ed y in qualche (dimensionale possibilmente molto alto) spazio delle caratteristiche, motivo per cui le funzioni del kernel vengono talvolta chiamati "prodotto scalare generalizzato".xy
Supponiamo di avere una mappatura che porta i nostri vettori in R n in qualche spazio di funzioni R m . Poi il prodotto scalare di x ed y in questo spazio èφ( xφ:Rn→RmRnRmxy . Un kernel è una funzione k che corrisponde a questo prodotto punto, cioè k ( x , y ) = φ ( x ) T φ ( y ) .φ(x)Tφ(y)kk(x,y)=φ(x)Tφ(y)
Perché è utile? I kernel offrono un modo per calcolare i prodotti punto in alcuni spazi delle funzionalità senza nemmeno sapere cosa sia questo spazio e cosa sia .φ
Ad esempio, considera un semplice kernel polinomiale con x , y ∈ R 2 . Questo non sembra corrispondere a nessuna funzione di mappatura φ , è solo una funzione che restituisce un numero reale. Supponendo che x = ( x 1 , x 2 ) e y = ( y 1 , y 2 ) , espandiamo questa espressione: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
Si noti che questo non è altro che un prodotto punto tra due vettori (1,x21,x22,2–√x1,2–√x2,2–√x1x2) e eφ(x)=φ(x1,x2)=(( 1 , y21, y22, 2-√y1, 2-√y2, 2-√y1y2). Quindi il kernelk(x,y)=(1+φ ( x ) = φ ( x1, x2) = ( 1 , x21,x22, 2-√X1, 2-√X2, 2-√X1X2)calcola un prodotto punto nello spazio 6-dimensionale senza visitare esplicitamente questo spazio.k ( x , y ) = ( 1 + xTy )2= φ ( x )Tφ ( y )
Un altro esempio è il kernel gaussiano . Se Taylor espandiamo questa funzione, vedremo che corrisponde a un codice infinito dimensionale di φ .k ( x , y ) = exp(−γ∥x−y∥2)φ
Infine, consiglierei un corso online "Imparare dai dati" del professor Yaser Abu-Mostafa come buona introduzione ai metodi basati sul kernel. In particolare, le lezioni "Support Vector Machines" , "Kernel Methods" e "Radial Basis Functions" riguardano i kernel.