美文网首页
[監督式]SVM(Support Vector Machines

[監督式]SVM(Support Vector Machines

作者: RJ阿杰 | 来源:发表于2019-04-09 18:06 被阅读0次

    SVM(Support Vector Machines)

    建議可以先讀PLA(感知器)


    我們在一個分類問題中,我們需要找到一個超平面(Hyperplane)來分隔不同的類別,就如同圖中的線,但能分隔不同的類別的超平面有無限多個(圖中就有3個),我們希望得到的是最右圖那一條線,他的margin(邊界)(灰色區域)越大越好,意思就是這條線離所有的點越遠越好,這樣的好處是能容忍的測量誤差大,不容易overfitting。

    這邊與PLA不同的是,我們不將bias轉成w_0以及加上x_0=1



    x(x_n)表示空間中的某個座標,x'表示在平面上的某個座標,我們假設有一個平面是w^T x'+b,假設兩個剛好在平面上的兩個點x',x'',表示w^T x'=-b而且w^T x''=-b,那麼w^T(x''-x')=0

    而(x''-x')是一個向量,那w^T(x''-x')=0表示w是(x''-x')的法向量,則x到平面的距離distance(x,h)就是(x-x')向量到w方向的投影,得到的距離會再加上絕對值避免負值。

    distance=cos\theta ||(x-x')||
    = | \ \frac{w^T (x-x')}{||w|| \ ||(x-x')||} ||(x-x')|| \ | = | \ \frac{w^T (x-x')}{||w||} \ | = | \ \frac{w^T x + b}{||w||} \ |


    我們希望最後找到的這個預測的值是與y同(正負)號的,,然而margin(邊界)代表的最小值,我們要找到能讓邊界最大的w跟b為解。
    假設我們找到一個解為,但同時也為解,括號內可以任意縮放,這邊的w、b為常數(不是未知數),這樣我們還是有無限多組解,我們希望只要找到唯一的一組。
    現在我們限制條件 進行放縮只能是讓它跟 相乘會是 1,也就是 ,這樣原本的 margin(b,w) 就是可以轉換成 的長度。
    變成求滿足(1) max 及 (2) min 這兩個條件的w、b。
    我們放鬆條件使讓我們方便求解。
    變成求滿足(1) max 及 (2) min 這兩個條件的w、b,但放鬆條件會不會讓我們得到不同的解(w,b)。
    使min 成立的w中能使最大的那個會不會與使min 成立的w中能使最大的那個相同? 答案是兩個最佳解相同。

    如果現在找到的解(w,b)是最佳解,y_n (w^T x_n + b) > 1.126,因爲是最優解,所以當前的(w,b)一定是讓\frac{ 1 }{||w||}的值最大的解,此時我們可以縮放w跟b同除1.126,會得到y_n ( \frac{w^T}{1.126} x_n + \frac{b}{1.126}) = 1,而此時的w應該能比原本的1.126w得到更大的\frac{ 1 }{||w||},那麼原先假設不成立。同理可證,在y_n (w^T x_n + b) = 1不等於1時的(w,b)均不是最優解。

    然後我們將求最大值\frac{ 1 }{||w||}改成求||w||最小值,||w|| = \sqrt{ w^T w },然後把根號拿掉,加上1/2。




    w=[w1 w2],如上圖一個簡單的例子,我們解出來最佳解是x1 - x2 - 1 = 0這個超平面,而這個超平面也稱為 Support Vector Machine(SVM),剛好在最佳解邊界上的點我們稱為支持向量(Support Vector)。

    前面使用的是簡單的例子,但如果難一點的呢?我們應該怎麼解?這邊有條件限制我們沒辦法用Gradient Descent解。
    觀察所有的限制式就會發現 SVM 可以用二次規劃(quadratic programming)來找出最佳解。

    上圖將原本式子轉成二次規劃的形式,然後我們就可以解w,b了。

    kernel

    kernel可以參考這篇

    柔化邊界(Softening Margins)

    Softening Margins可以參考這篇

    實作

    sklearn.svm.LinearSVC
    In-Depth: Support Vector Machines
    吴恩达机器学习课python代码

    參考PPT來自林軒田機器學習技法有興趣可以上youtube或coursera上課

    相关文章

      网友评论

          本文标题:[監督式]SVM(Support Vector Machines

          本文链接:https://www.haomeiwen.com/subject/prerbqtx.html