1. 程式人生 > >小楠楠的小白to大白之路

小楠楠的小白to大白之路

在搜尋了很多資料後終於搞明白了SVM,對幾個關鍵的部分做一些記錄。
SVM的全稱Support Vector Machine,中文名支援向量機,是一種分類演算法,常見於二分類問題,和常見的二分類演算法不同,該演算法是在兩類(或多類,以下簡寫為兩類)標記之間找到離兩類標記最遠的一個超平面來分割資料,比如二維點就是找一條線來分割,三維點就是找一個平面來分割,n維資料找一個n-1維超平面來分割。
如何找這個超平面是最關鍵的部分,也就是演算法需要計算的部分,在這我記錄以下數學推導。這裡寫圖片描述
在兩個超平面之間距離為圖中的m(可以根據幾何推導,和二維類似)要最大化,只要使||w||最小化,即讓它最小,這個||w||指的是它的模,也就是讓w^2最小,為了求導之後消去係數,我們讓w^2/2最小。還有一個限制條件,就是所有的點都在H1和H2之外,即yi (wTxi + b)>=1。我們所求的是這裡寫圖片描述

第二個是約束條件
接下來我們要使用拉格朗日乘數法來優化這個問題,使w^2/2最小,構造拉格朗日函式這裡寫圖片描述
對w、b分別求偏導,得這裡寫圖片描述,代入到拉格朗日函式這裡寫圖片描述,得這裡寫圖片描述
這裡我有一個問題開始沒有搞明白,就是為什麼含aiyi的項全部消掉了,其實這是因為kkt條件下(參見http://www.cnblogs.com/zhangchaoyang/articles/2726873.html這裡寫圖片描述是能推匯出一定是ai=0或yi=0不會是我之前想的情況有正有負- -