SVM – 核函數


  核函數的起源是對於線性不可分的分類情況,其實可以通過p次方多項式,及非線性模型進行分類;然后對於這類非線性多次方的,其實可以按照廣義線性模型來進行升維變形,使之成為線性模型,這樣就可以放到SVM中來進行處理了(svm只能處理非線性模型)。

  但是升維之后是有維度爆炸現象的(二次方對應6維度,三次方對應19維度),為了解決這個問題,核函數出場了,簡單講核函數就是計算計算是在低維進行,但是形式卻是映射到高維。

  SVM的優化目標:

  假設xi和xj都是低維非線性的函數,我們定義映射到高維的函數為φ(x),那么上面的式子可以寫成:

  核函數,就是實現了計算在低維計算,返回形式是高維:

K(x, z) = φ(x) * φ(z)

  但是這種映射並不是容易獲取的,需要滿足Gram矩陣K = [K(x,z)]是半正定型,也就是說,一個函數想要成為核函數,必須要滿足里面任何點的集合形成的Gram矩陣是半正定矩陣。

  這里解釋一下,gram矩陣是指n維歐式空間中任意k個向量內積組成的矩陣:

  關於正定矩陣:M是n階方陣,對於非0向量,z.T *M*z > 0,矩陣的乘法還是矩陣,這里> 0,我理解是因為乘法形式的行列式的值是大於0的。

  半正定矩陣和正定矩陣就是一字之差:z.T * M * z >= 0,半正定允許等於0,所以范圍更加寬廣,所以血統不那么純正,所以稱之為半正定(越純正要求越嚴格)。

  話題再扯回來,如果想要滿足核函數,那么函數K的矩陣要滿足Gram矩陣是半正定的;這個門檻其實很高的,好在我們數學大佬們已經帶我們走出探索的沼澤,並且親自指出了常用的核函數與:

  線性核函數(Linear Kernel)

  K(x, z) = x·z,線性svm就是使用這個核函數;

  多項式核函數(Polynomial Kernel)

  k(x, z) = (γx·z + r)^d,其中gamma,r以及d需要自己調參;

  高斯核函數(Gaussian Kernel),也稱之為徑向基和函數(Radial Basis Function,RBF):

  K(x, z)=xp(γ||xz||²)

  Sigmoid核函數:

  K(x,z)=tanh(γxz+r),其中γ和r需要自己調參;

 

參考:

https://www.cnblogs.com/pinard/p/6103615.html 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM