1. 程式人生 > >演算法工程師修仙之路:吳恩達機器學習(十四)

演算法工程師修仙之路:吳恩達機器學習(十四)

吳恩達機器學習筆記及作業程式碼實現中文版

第十章 支援向量機


直觀上對大間隔的理解

  • 人們有時將支援向量機看作是大間距分類器。

  • 支援向量機模型的代價函式,在左邊這裡我畫出了關於 z 的代價函式 c o s t

    1 ( z ) cost_1(z) ,此函式用於正樣本,而在右邊這裡我畫出了關於 z 的代價函式 c
    o s t 0 ( z ) cost_0(z)
    ,橫軸表示 z。
    在這裡插入圖片描述

  • 最小化代價函式的必要條件

    • 如果你有一個正樣本, y = 1 y=1 ,則只有在z >= 1時,代價函式 c o s t 1 ( z ) cost_1(z) 才等於0。換句話說,如果你有一個正樣本,我們會希望 θ T x &gt; = 1 \theta^Tx&gt;=1 ,反之,如果 y = 0 y=0 ,函式 c o s t 0 ( z ) cost_0(z) ,它只有在z <= -1的區間裡函式值為 0。
    • 事實上,如果你有一個正樣本 y = 1 y=1 ,則其實我們僅僅要求 θ T x \theta^Tx 大於等於 0,就能將該樣本恰當分出,這是因為如果 θ T x &gt; 0 \theta^Tx&gt;0 的話,我們的模型代價函式值為0,類似地,如果你有一個負樣本,則僅需要 θ T x &lt; = 0 \theta^Tx&lt;=0 就會將負例正確分離。
    • 但是,支援向量機的要求更高,不僅僅要能正確分開輸入的樣本,即不僅僅要求 θ T x &gt; 0 \theta^Tx&gt;0 ,我們需要的是比0值大很多,比如大於等於1,或者比0小很多,比如我希望它小於等於-1,這就相當於在支援向量機中嵌入了一個額外的安全因子,或者說安全的間距因子。
  • 如果 C C 非常大,則最小化代價函式的時候,我們將會很希望找到一個使第一項為 0 的最優解。因此,讓我們嘗試在代價項的第一項為 0 的情形下理解該優化問題。

    • 首先支援向量機的代價函式表示如下: m i n θ C i = 1 m [ y ( i ) c o s t 1 ( θ T x ( i ) ) + ( 1 y ( i ) ) c o s t 0 ( θ T x ( i ) ) ] + 1 2 i = 1 n θ j 2 min_\theta C\sum_{i=1}^{m}[y^{(i)}cost_1(\theta^Tx^{(i)})+(1-y^{(i)})cost_0(\theta^Tx^{(i)})]+\frac{1}{2}\sum_{i=1}^{n}\theta_j^2
    • 我們已經看到輸入一個訓練樣本標籤為 y = 1 y=1 ,你想令第一項為 0,你需要做的是找到一個 θ \theta ,使得 θ T x &gt; = 1 \theta^Tx&gt;=1 ,類似地,對於一個訓練樣本,標籤為 y = 0 y=0 ,為了使 c o s t 0 ( z ) cost_0(z) 函式的值為0,我們需要 θ T x &lt; = 1 \theta^Tx&lt;=-1
    • 因為我們將選擇引數使第一項為0,因此這個函式的第一項為0,因此是 C C 乘以 0 加上二分之一乘以第二項。這將遵從以下的約束: θ T x &gt; = 1 \theta^Tx&gt;=1 ,如果 y ( i ) y^{(i)} 是等於 1 的, θ T x &lt; = 1 \theta^Tx&lt;=-1 ,如果樣本 y ( i ) y^{(i)} 是一個負樣本。
  • 具體而言,如果你考察下面這樣一個數據集,其中有正樣本,也有負樣本,可以看到這個資料集是線性可分的。
    在這裡插入圖片描述

  • 支援向量機將會選擇這個黑色的決策邊界,黑線看起來是更穩健的決策界。在分離正樣本和負樣本上它顯得的更好。數學上來講,這條黑線有更大的距離,這個距離叫做間距(margin)。

  • 當畫出兩條額外的藍線,我們看到黑色的決策界和訓練樣本之間有更大的最短距離。然而粉線和藍線離訓練樣本就非常近,在分離樣本的時候就會比黑線表現差。因此,這個距離叫做支援向量機的間距,而這是支援向量機具有魯棒性的原因,因為它努力用一個最大間距來分離樣本,因此支援向量機有時被稱為大間距分類器。
    在這裡插入圖片描述

  • 我們將這個大間距分類器中的正則化因子常數 C C 設定的非常大,因此對這樣的一個數據集,也許我們將選擇黑線這樣的決策界,從而最大間距地分離開正樣本和負樣本。

  • 在讓代價函式最小化的過程中,我們希望找出在 y = 1 y=1 y = 0 y=0 兩種情況下都使得代價函式中左邊的這一項儘量為零的引數。如果我們找到了這樣的引數,則我們的最小化問題便轉變成:
    在這裡插入圖片描述

  • 事實上,支援向量機現在要比這個大間距分類器所體現得更成熟,尤其是當你使用大間距分類器的時候,你的學習演算法會受異常點(outlier)的影響。

    • 比如我們加入一個額外的正樣本:
      在這裡插入圖片描述
    • 在這裡,如果你加了這個樣本,為了將樣本用最大間距分開,也許我最終會得到一條類似這樣粉色的線的決策界,僅僅基於一個異常值,僅僅基於一個樣本,就將我的決策界從這條黑線變到這條粉線,這實在是不明智的。
    • 而如果正則化引數 C C 設定的非常大,這事實上正是支援向量機將會做的。它將決策界,從黑線變到了粉線,但是如果 C C 設定的小一點, 如果你將 C C 設定的不要太大,則你最終會得到這條黑線。
    • 當然資料如果不是線性可分的,如果你在這裡有一些正樣本或者你在這裡有一些負樣本,則支援向量機也會將它們恰當分開。因此,大間距分類器的描述,僅僅是從直觀上給出了正則化引數 C C 非常大的情形。
    • C C 的作用類似於 1 / λ 1/\lambda λ \lambda 是我們之前使用過的正則化引數。這只是 C C 非常大的情形,或者等價 λ \lambda 非常小的情形。你最終會得到類似粉線這樣的決策界,但是實際上應用支援向量機的時候,當 C C 不是非常非常大的時候,它可以忽略掉一些異常點的影響,得到更好的決策界。甚至當你的資料不是線性可分的時候,支援向量機也可以給出好的結果。
  • C C 較大時,相當於 λ \lambda 較小,可能會導致過擬合,高方差; C C 較小時,相當於 λ \lambda 較大,可能會導致低擬合,高偏差。