Hier zijn x en y twee datapunten in 3 dimensies. Laten we aannemen dat we x en y moeten toewijzen aan een 9-dimensionale ruimte. We moeten de volgende berekeningen uitvoeren om het eindresultaat te krijgen, dat slechts een scalair is. De rekenkundige complexiteit is in dit geval O(n²).
However, if we use the kernel function, which is denoted as k(x, y), instead of doing the complicated computations in the 9-dimensional space, we reach the same result within the 3-dimensional space by calculating the dot product of x -transpose and y. The computational complexity, in this case, is O(n).
In essence, what the kernel trick does for us is to offer a more efficient and less expensive way to transform data into higher dimensions. With that saying, the application of the kernel trick is not limited to the SVM algorithm. Bij alle berekeningen waarbij de puntproducten (x, y) een rol spelen, kan de kerneltruc worden toegepast.
Verschillende kernelfuncties
Er zijn verschillende kernels. De meest populaire zijn de polynomiale kernel en de radiale basisfunctie (RBF) kernel.
“Intuïtief kijkt de polynomiale kernel niet alleen naar de gegeven kenmerken van invoermonsters om hun overeenkomst te bepalen, maar ook naar combinaties daarvan” (Wikipedia), net als in het voorbeeld hierboven. Met n originele kenmerken en d polynomiale graden, levert de polynomiale kernel n^d uitgebreide kenmerken op.
Het formaat van polynomiale kernel
De RBF-kernel wordt ook wel de Gaussiaanse kernel genoemd. Er is een oneindig aantal dimensies in de feature space omdat deze kan worden uitgebreid met de Taylor Series. In de onderstaande indeling bepaalt de parameter γ hoeveel invloed een enkel trainingsvoorbeeld heeft. Hoe groter deze is, hoe dichter andere voorbeelden moeten zijn om te worden beïnvloed (sklearn documentatie).
De opmaak van de RBF-kernel
Er zijn verschillende opties voor de kernelfuncties in de sklearn-bibliotheek in Python. Je kunt zelfs een eigen kernel bouwen als dat nodig is.
Het einde
De kerneltruc klinkt als een “perfect” plan. Een belangrijk punt om in gedachten te houden is echter dat wanneer we gegevens in een hogere dimensie plaatsen, de kans bestaat dat we het model overfitten. Daarom zijn de keuze van de juiste kernelfunctie (inclusief de juiste parameters) en regularisatie van groot belang.
Als je nieuwsgierig bent naar wat regularisatie is, heb ik een artikel geschreven over wat ik ervan versta en dat kun je hier vinden.
Ik hoop dat je dit artikel leuk vindt. Laat het me zoals altijd weten als je vragen, opmerkingen, suggesties, enz. hebt. Bedankt voor het lezen 🙂