1. 程式人生 > >【機器學習算法-python實現】svm支持向量機(3)—核函數

【機器學習算法-python實現】svm支持向量機(3)—核函數

pla fontsize .cn python view 分類 數據 方法 color

版權聲明:本文為博主原創文章,未經博主同意不得轉載。 https://blog.csdn.net/gshengod/article/details/24983333

(轉載請註明出處:http://blog.csdn.net/buptgshengod)

1.背景知識

? ?前面我們提到的數據集都是線性可分的。這樣我們能夠用SMO等方法找到支持向量的集合。然而當我們遇到線性不可分的數據集時候,是不是svm就不起作用了呢?這裏用到了一種方法叫做核函數,它將低維度的數據轉換成高緯度的從而實現線性可分。
? ? ?可能有的人不明確為什麽低維度的數據集轉換成高維度的就能夠實現線性可分,以下摘抄一個網上的樣例解釋一下。看以下這個圖,我們設紅色的區域是一組數據 ,而直線ab除了紅色區域以外是還有一組數據。

由於直線是一維的,所以我們無法找到一條直線區分這兩組數據。 技術分享圖片
? ? ? ? 單是當我們把這組數據引入二維之後。我們能夠得到一組曲線,它在ab直線上部分指向黑色直線部分,ab直線下部指向紅色部分。 技術分享圖片

? ? ? 我們通過這個樣例能夠看到核函數的作用,由於svm的結果僅僅跟向量內積有關系。所以我們能夠配合核函數實現隨意數據集的分類。

假設有人問,假設就是有一定的點數使得我們不管添加多少維度都不能實現分類,這就是引用松弛變量的意義。忽略這一部分點,由於它們非常有可能是噪聲。


2.代碼部分

? ? ?由於核函數有非常多種類,比較經常使用的就是徑向基核函數(RBF)。這個準確率是比較高的。公式: 技術分享圖片
 K = exp(K/(-1*kTup[1]**2))



? ??

【機器學習算法-python實現】svm支持向量機(3)—核函數