【Machine Learning, Coursera】機器學習Week7 支援向量機的應用
SVMs in Practice
本節內容:
SVM的引數選擇、SVM解決多分類問題、實踐中logistic迴歸和SVM的選擇
相關機器學習概念:
線性核函式(Linear kernel)
1. Using SVM Packages
有許多軟體庫可以實現SVM,Ng常用的是liblinear和libsvm
要使用現成的軟體庫,需要我們自己選擇的有:
-引數C
-核函式(相似度函式)
如果特徵變數n很大而樣本量m很小,為了避免過擬合,可以選用線性核函式Llinear kernel)去擬合一個線性邊界。
線性核函式(Linear kernel)實質上就是不使用任何核函式:
若,預測
如果特徵變數n很小而樣本量m很大,此時可以選用高斯核函式(Gaussian kernel)去擬合一個更復雜的非線性邊界。
高斯核函式(Gaussian kernel):
, where
如果選用高斯核函式,我們還需要選擇.
如果使用Octave或者Matlab實現SVM,我們需要自己寫出核函式的程式碼。以高斯核函式為例:
function sim = gaussianKernel(x1, x2, sigma) % Note: x1 and x2 are column vectors % sim = gaussianKernel(x1, x2) returns a gaussian kernel between x1 and x2 % and returns the value in sim sim = exp(-(x1-x2)'*(x1-x2)/(2*sigma.^2)); end
NOTE: 使用高斯核函式之前要對特徵變數進行歸一化處理
線性核函式和高斯核函式是最常用的兩種核函式,其他可能遇到的核函式包括:
多項式核函式(Polynomial kernel)
字串核函式(String kernel),卡方核函式(Chi-square kernel),直方圖交叉核函式(Histogram intersection kernel)
NOTE: 不是所有的相似度函式都是有效的核函式,它們必須滿足摩塞爾定理(Mercer’s Theorem),以保證優化結果不會發散。
2. Multi-class Classification
SVM多分類問題的兩種解決思路:
1、SVM包內建的多分類函式
2、一對多(one vs. all)
和logistic迴歸的多分類問題一樣,,有。我們選擇使最大的類別.
3. Logistic Regression vs. SVMs
為了在有限的時間內得到最好的訓練效果,建議:
如果n相對m而言很大,使用logistic迴歸或者不帶核函式的SVM
如果n很小(如1~1,000),m大小適中(如10 ~ 50,000),使用高斯核函式的SVM
如果n很小,m很大(>50,000),人工選擇更多的特徵變數,使用logistic迴歸或者不帶核函式的SVM
NOTE: 一個好的神經網路可能可以得到更好的訓練效果,但訓練一個神經網路的時間成本可能會更高
NOTE: SVM的優化問題是凸優化問題,不用擔心區域性最優問題