機器學習(7)-SVM與核函式
阿新 • • 發佈:2019-01-09
1.SVM介紹
是一個類似於邏輯迴歸的方法,用於對不同因素影響的某個結果的分類。
但邏輯迴歸主要採用的是sigmoid函式,SVM有自己常用的核函式:linear線性核、rbf徑向基、poly多項式
比方說,要對一堆香蕉和黃瓜進行分類~~~
首先要明確的是,我們常見的香蕉為黃色,黃瓜為綠色(為什麼不叫綠瓜??)。但是香蕉有綠色的,黃瓜也有黃色的???
好吧。這是我搜的,真的是巨醜!!!
我們採集香蕉和黃瓜的各項特徵資訊:氣味,顏色,重量,長度………彙集成特徵點,利用linear線性的分類器進行分類。如下圖
紅色的是香蕉,綠色的黃瓜,能夠看出來,分類的依據是兩類圖中的兩個點決定的,也就是兩點連線的中垂線!
而且將這條線沿著垂直兩點之間的連線移動,會發現,分類的結果並不會改變。這就是SVM的特點:是依賴於特徵點當中的最特殊的點進行分類的。
這一部分的python實現與邏輯迴歸非常相似,原始碼與資料集 可參考
2.kernel核函式
- linear
簡單的線性核函式,上文提到的香蕉和黃瓜的分類就是線性核函式的應用
主要應用於線性可分的情況 - rbf
高斯核函式,可以實現高維投射
就好比這樣的分類特徵點,用線性的不管怎麼分,結果都是很不理想的,這時候用rbf從圖中的二維空間投射到三維的。(這裡在投射的時候,經過了一系列的公式上的轉換,不在此贅述)
經過投射之後呢,就變成了下面的這個樣子
看上去像是被一個超平面分割了,其實應該把這些點看成一個圓錐的大體樣子,兩類之間的分割變成了一個曲面,這個曲面就是rbf擬合的結果了。 - poly
多項式核函式也是可以實現低維到高維的對映,採用的頻率並不是很高
前一個文章:邏輯迴歸 中提到的案例的實現,邏輯迴歸的結果是:
用rbf核函式重新擬合之後結果更加的準確,誤差也更加的小了
上圖:
from sklearn.svm import SVC
classifier = SVC(kernel = 'rbf', random_state = 0)
classifier.fit(X_train, y_train)