支持向量機(Support Vector Machine)在處理線性數據集,非線性數據集都有較好的效果。瞭解機器學習或者是模式識別的都應該知道。
、SVM之所以強大是因為其採用的相關技術,如最大類間隔,鬆弛變量,核函數等。這些技術使其在眾多機器學方法中脫穎而出。就算放在現在,SVM在機器學習中也別大量使用,這與他的高效、簡潔、易用的特點分不開。而且它的處理思想與目前的機器學習有深厚的關係。支持向量機進行分類的目的也是一樣,得到一個分類器或分類模型,它的分類器模型根據數據集的不同而不同,如果數據集是二維的則得到的就是一個直線型的超平面,若是三維數據得到的就是一個平面型的超平面。通過這樣的超平面把數據做一個劃分,它需要使正例和反例間的間隔最大,使其泛化能力最強。那麼接下來的部分就介紹如何來得到這個所謂的超平面。以下內容分為最優間隔分類器和核函數。
- 最優間隔分類器
SVM的分類器是超平面,我們需要什麼樣的超平面呢?下面是一個超平面的示意圖。
分類器的優化目標通常是最小化分類器誤差,但對SVM而言,優化的目標最大化分類間隔。間隔指的是兩個分離的超平面間的距離,其中最靠近超平面的訓練樣本又稱為支持向量(Support Vector)。假設在一個二維空間中,數據集分佈如下圖所示:
其中:
接下來需要樣本取訓練一個線性分類器,如上圖所示的直線H:
當:
輸出+1;小於0時輸出-1。sgn()函數表示取符號。
就是需要尋找的分類超平面,。這個分類面到兩個類最近的那些樣本的距離相同,而且最大。
假設上圖中的兩個分類超平面平行且距離相等:
此時需要兩個條件:
1) 沒有熱河樣本在這兩個平面之間;
2) 這兩個平面的距離需要最大。
然後就可以對數據集進行劃分。但是會遇到另外的問題,怎麼樣吧非線性的數據集轉換為線性的數據集呢?就是下面的內容核函數:
- 核函數
核函數可以把非線性數據集映射到一個更高或無窮維度的空間,在新空間轉換為線性數據集。那核函數怎麼把線性不可分的數據轉換為線性可分的數據集呢?以下圖為例:
它的功能就是將左邊在二維空間非線性的數據集,映射到三維空間後變成一個線性可分的數據集,其中超平面可以把數據分為上下兩個部分。
常用的核函數:
其實核函數就想當於神經網絡中的隱藏層,所以SVM應用很廣泛。但現在隨著神經網絡的不斷推進,已經被深度學習超越,SVM核函數的選擇是它的難點,相比於神經網絡其靈活性和可擴展性也較低。以上內容就是對機器學習基礎中關於SVM的離理論部分學習。
閱讀更多 科創小新 的文章