Coursera:Standford Machine Learning Week 7 筆記

支援向量機(Support Vector Machines)


大間隔分類器(Large Margin Classification)

最佳化目標(Optimization Objective)

在工業界和學術界有另一個強大的演算法:支援向量機(SVM)。相對邏輯斯迴歸與神經網路,SVM 在學習複雜的非線性方程時,提供了更加清晰及強大的方法。

支援向量機的推導從邏輯斯迴歸開始:

Logistic Regression Hypothesis
Sigmoid Activation Function

每個樣本 (x, y) 都會為總成本函數添加這一項。

表示一個樣本所對應的表達式。

y = 1 時,盡可能提高 z 使 hθ(x) 趨近 1 ,使總成本降至 0。

SVM 將原本的曲線更動為直線,設定 z = 1 時,成本為 0 。

y = 0 時,盡可能降低 z 使 hθ(x) 趨近 1 ,使總成本降至 0。

SVM 將原本的曲線更動為直線,設定 z = -1 時,成本為 0 。

邏輯斯迴歸的成本函數(Logistic Regression Cost Function)

Logistic Regression Cost Function

支援向量機的成本函數(Support Vector Machine Cost Function)

替換 log 項並去除包含 m 的常數項(不影響 θ ),最終替換 λC(類似 1/λ = C ,但實際得到的 θ 未必相同)。

Support Vector Machine Cost Function

不同於邏輯斯迴歸,SVM 的假設函數不給我們機率,而是直接預測 1 或 0 。

大間隔的直觀解釋(Large Margin Intuition)

實際上,我們希望 θ‘x >= 1 才預測 y = 1 ; θ’x <= -1 才預測 y = 0 ,使其更加安全。

Support Vector Machine Hypothesis Function

更加安全的設置會使決策邊界落在黑線的位置,黑線與所有的訓練樣本有比較大的間隔。

SVM Decision Boundary: Linearly Separable Case

如果將 C 設置太大,SVM 的決策邊界會對離群值(outliers)很敏感。反之,會忽略掉一些離群值。

如果資料是線性不可分的,太大的 C 也會恰好將它們分開,它也等價於正規化參數 λ 很小的時候。

大間隔分類器的數學(Mathematics Behind Large Margin Classification)

SVM 決策邊界(SVM Decision Boundary)

SVM Decision Boundary

假設我們只有兩個參數:

假設 p(i)x(i)θ 上的投影(projection)。

我們重新定義此決策邊界:

SVM Decision Boundary

簡單假設 θ0 = 0 ,也意味決策邊界必須通過原點 (0, 0) 。

θ 總是與決策邊界形成直角。

SVM 實際上演著很嚴謹的數學理論,其涉及的概念很多,請參考延伸閱讀所列出的文章。

延伸閱讀

A Tutorial on Support Vector Machines for Pattern Recognition

http://blog.csdn.net/walilk/article/details/53542645

http://blog.pluskid.org/?page_id=683

http://www.blogjava.net/zhenandaci/category/31868.html


核(Kernels)

TK

高斯核函數(Gaussian Kernel Function)

使用核訓練 SVM

SVM 參數 C

  • 偏誤和變異之權衡(Bias-Variance Tradeoff)
  • 類似 1/λ( λ 是正規化參數)
  • 太大的 C 會導致低偏誤高變異(過度配適)
  • 太小的 C 會導致高偏誤低變異(配適缺乏)

SVM 參數 σ²

  • 用於計算 f
  • 太大的 σ² 會導致 f 特徵值越平滑,即更高的偏誤及更低的變異
  • 太小的 σ² 會導致 f 特徵值突出,即低偏誤高變異

練習SVM(SVMs in Practice)

TK

你亦可選擇其它的核,線性核(Linear Kernel)和高斯核(Gaussian Kernel)是最常見的。如果想使用其他相似的函數,需滿足 Mercer’s Theorem。

  • 多項式核(Polynomial Kernel)
  • 字串核(String Kernel)
  • 卡方核(Chi-Squared Kernel)
  • 直方圖交叉核(Histogram Intersection Kernel)