一,支持向量機(SVM)定義算法
支持向量機(SVM)和邏輯迴歸相似,也是二元分類,可是約束條件不一樣,它的目標是尋找一個超平面分割數據,這個超平面一側是分類爲-1的數據,一側是是分類是1的數據網絡
這樣的超平面有不少,支持向量機還有一個約束條件是使兩側數據到這個超平面的距離最小值最大,因此支持向量機也叫大間距分類(Large Margin Classfication)函數
爲了使超平面和數據有間距,分類爲1的\(\theta^{T}x^{(i)} \geq 1\), 分類爲0的\(\theta^{T}x^{(i)} \leq -1\)優化
因此代價函數就變爲,\( min_{(\theta)} \frac{1}{m}\left[ \sum_{i=1}^{m} y^{(i)}cost_{1}{(\theta^{T}x^{(i)})} + (1 - y^{(i)})cost_{0}{(\theta^{T}x^{(i)})} \right] + \frac{\lambda}{2m}\sum_{j=1}^{n} {\theta_{j}}^{2}\)3d
\(cost_{1}{(\theta^{T}x^{(i)})}\)和\(cost_{0}{(\theta^{T}x^{(i)})}\)以下圖所示blog
二,理解支持向量機rem
1,向量的內積io
向量內積能夠理解爲一個向量到另外一個向量的投影乘以另外一個向量的膜lambda
\(u^{T}v = p \cdot ||u|| = u_{1}v_{1} + u_{2}v_{2}\)神經網絡
p是u到v的投影(有正負),\(||u|| = \sqrt{{u_{1}}^{2} + {u_{2}}^{2}}\)
2,SVM決策邊界(超平面)
爲了使超平面和數據有間距,分類爲1的\(\theta^{T}x^{(i)} \geq 1\), 分類爲0的\(\theta^{T}x^{(i)} \leq -1\),而不是以像邏輯迴歸同樣以0爲界限
超平面是由\(\theta\)決定,以兩個特徵的數據爲例,先假設\(\theta_{0} = 0\)
綠線表示決策邊界(超平面),藍線表示決策邊界(超平面)的法向量\(\theta\),由圖易得,數據\(X^{(i)}\)到\(\theta\)的投影\(p^{(i)}\)就是到決策邊界(超平面)的距離,
由於約束條件是分類爲1的\(\theta^{T}x^{(i)} \geq 1\), 分類爲0的\(\theta^{T}x^{(i)} \leq -1\)
即\(p^{(i)} \cdot ||\theta|| \geq 1( if\ y^{(i)} = 1)\)
\(p^{(i)} \cdot ||\theta|| \leq 1 (if\ y^{(i)} = -1)\)
能夠合併 \(y \cdot p^{(i)} \cdot ||\theta|| \geq 1\)
由於約束條件總能知足,因此只要\(||\theta||\)越小,投影\(p^{(i)}\)就越大,間距就越大,就越符合咱們SVM的要求
又由於\( \frac{1}{2}\sum_{j=1}^{n} {\theta_{j}}^{2} = \frac{1}{2}||\theta||^{2}\),m是常數,並不影響求\(\theta\)的最小值,用C取代\(\lambda\), \(C= \frac{1}{\lambda}\)
\( min_{(\theta)} C\left[ \sum_{i=1}^{m} y^{(i)}cost_{1}{(\theta^{T}x^{(i)})} + (1 - y^{(i)})cost_{0}{(\theta^{T}x^{(i)})} \right] + \sum_{j=1}^{n} {\theta_{j}}^{2}\)
咱們通常設C很大,爲了使\(\left[ \sum_{i=1}^{m} y^{(i)}cost_{1}{(\theta^{T}x^{(i)})} + (1 - y^{(i)})cost_{0}{(\theta^{T}x^{(i)})} \right]\)儘可能小,儘可能知足約束條件,線性可分
3,內核(Kernel)
能夠經過內核構造非線性決策邊界函數,選定幾個標記點\(l^{(i)}\),把每一個數據與這些標記點的遠近做爲新特徵,高斯內核的構造方式以下
高斯內核的方差變化示意圖
一個非線性例子
選取每一個訓練數據爲標記點
使用高斯內核的SVM
C和\(\sigma \)和SVM模型的影響
儘管咱們可使用庫來實現SVM,可是咱們仍是須要本身選擇常數C和內核(Kernel)
咱們還可以使用線性內核(不使用內核,直接用\(\theta^{T}x \geq 0\))
在調用高斯內核產生新的特徵f時,必須使用特徵縮放(Feature Scaling),不然權值大的某個特徵直接決定改新數據
咱們還可以使用其它內核,但必須知足塞爾定理(Mercer's Theorem),塞爾定理保證SVM的優化正確運行,收斂於最小值
可使用多現實內核
多元分類的處理和邏輯迴歸處理相似,能夠當作K個二元分類
邏輯迴歸仍是SVM
使用邏輯迴歸仍是SVM的一種方法是取決於特徵數量n和訓練數據數量m
1,n大,m小\(n \geq m, n=10,000, m = 10....1000\),使用邏輯迴歸或者是沒有內核的SVM
2,n小,m中等\(n=1-1,000, m = 10....10,000\),使用帶高斯內核的SVM
3,n小,m大\(n=1-1,000, m = 50,000+\),增長特徵值,而後使用邏輯迴歸或者不帶內核的SVM(帶高斯內核訓練會很慢)
PS: 神經網絡適用於以上全部狀況,惋惜訓練數據實在太慢
PS: 不帶內核的SVM和邏輯迴歸相似,在使用其中一種時,能夠嘗試使用另一種,比較看那個效果好
PS:SVM算法是凸優化問題,老是能找到全局最小或接近它的值
以上只是一種參考方法,重要的仍是取決於數據的多少,特徵是否足夠充分等等其餘因素