支持向量機


文章記錄的內容是參加DataWhale的組隊學習統計學習方法(第二版)習題解答過程中的筆記與查缺補漏!
參考解答地址支持向量機

1. 比較感知機的對偶形式與線性可分支持向量機的對偶形式。

解答思路

  1. 列出感知機的原始形式;
  2. 寫出感知機的對偶形式;
  3. 列出線性可分支持向量機的原始形式;
  4. 寫出線性可分支持向量機的對偶形式;
  5. 比較感知機和線性可分支持向量機的對偶形式。

回憶一下感知機的目標函數:

\[\min \limits_{w,b} L(w,b)=-\sum_{x_i \in M} y_i(w \cdot x_i + b) \]

其中\(M\)為誤分類點的集合。

  根據書中第44頁的算法2.2

輸入:線性可分的數據集\(T=\{(x_1,y_1),(x_2,y_2),\cdots,(x_N,y_N)\}\),其中\(x_i \in R^n, y_i \in \{-1, +1\}, i=1,2,\cdots,N\);學習率\(\eta\)\(0 < \eta \leqslant 1\));
輸出:\(a,b\);感知機模型\(\displaystyle f(x)=\text{sign} \left( \sum_{j=1}^N \alpha_j y_j x_j \cdot x + b \right)\),其中\(\alpha = (\alpha_1, \alpha_2,\cdots, \alpha_N)^T\)
(1)\(\alpha \leftarrow 0,b \leftarrow 0\)
(2)在訓練集中選取數據\((x_i, y_i)\)
(3)如果\(\displaystyle y_i\left( \sum_{j=1}^N \alpha_j y_j x_j \cdot x + b \right) \leqslant 0\)

\[\alpha_i \leftarrow \alpha_i + \eta \\ b \leftarrow b + \eta y_i \]

(4)轉至(2),直至訓練集中沒有誤分類數據。

結合對偶形式的感知機模型,可知:

\[w=\sum_{i=1}^N \alpha_i y_i x_i\\ b=\sum_{i=1}^N \alpha_i y_i \]

也可以從中知道 \(\alpha_i\) 的含義:樣本 \((x_i, y_i)\) 被用於更新參數的次數(即分錯的次數)\(n_i\) 乘以學習率 \(\eta\),即 \(\alpha_i = n_i * \eta\)

  綜上所述:

  1. 感知機的原始形式中的損失函數:

\[\min_{w,b} L(w,b)=-\sum_{x_i \in M} y_i(w \cdot x_i + b) \]

  1. 感知機的對偶形式中的損失函數:可知\(w,b\)表示為\(\langle x_i,y_i \rangle\)的線性組合形式,則

\[\min_{w,b} L(w,b) = \min_{\alpha} L(\alpha) = - \sum \limits_{x_i \in M} ( y_i ( \sum_{j=1}^N \alpha_j y_j x_j \cdot x_i + \sum_{j=1}^N \alpha_j y_j ) ) \]

其中,\(\alpha = (\alpha_1, \alpha_2,\cdots, \alpha_N)^T\)

線性可分 SVM 的原始形式和對偶形式就不在這里描述了,另出文章介紹。二者的比較:

  1. 在兩者的對偶形式中,\(w,b\) 都可以表示為 \(\langle x_i,y_i \rangle\)線性組合形式;
  2. 在兩者的對偶形式中,都可以通過求解 \(\alpha=(\alpha_1, \alpha_2, \cdots, \alpha_N)^T\),最后代入由 \(x_i,y_i,\alpha_i\) 表示的 \(w\)\(b\) 公式中,從而求解最優化問題的解 \(w^*\)\(b^*\)
  3. 感知機學習得到一個分隔超平面,而線性可分支持向量機學習得到所有分隔超平面中的間隔最大分隔超平面。

為什么要引出對偶形式?[1]

  1. 從對偶形式學習算法過程可以看出,樣本點的特征向量以內積的形式存在於感知機對偶形式的訓練算法中,凡是涉及到矩陣,向量內積的運算量就非常大(現實中特征維度很高),這里我們如果事先計算好所有的內積,存儲於 Gram 矩陣中,以后碰到更新的點,直接從 Gram 矩陣中查找即可,相當於我就初始化運算一遍 Gram 矩陣,以后都是查詢,大大加快了計算速度;
  2. 跟 SVM 的對偶形式其實有類似之處。

2. 已知正例點\(x_1=(1,2)^T,x_2=(2,3)^T,x_3=(3,3)^T\),負例點\(x_4=(2,1)^T,x_5=(3,2)^T\),試求最大間隔分離平面和分類決策函數,並在圖中畫出分離超平面、間隔邊界及支持向量。

解答思路

  1. 通過調用 sklearn.svm 的 SVC 類構建模型,根據題目中的數據訓練模型,得到 \(w\)\(b\) 和支持向量;
  2. 調用 matplotlib 庫,畫出分離超平面、間隔邊界和支持向量。

具體過程參考這里

3. 線性支持向量機還可以定義為以下形式:

\[\begin{array}{cl} \displaystyle \min \limits_{w,b,\xi} & \displaystyle \frac{1}{2} \|w\|^2 + C \sum_{i=1}^N \xi_i^2 \\ \text{s.t.} & y_i(w \cdot x_i + b) \geqslant 1 - \xi_i, \quad i=1,2,\cdots, N \\ & \xi_i \geqslant 0, \quad i=1,2,\cdots, N \end{array} \]

試求其對偶形式。

解答思路:
參考書中第127頁7.2.2節“學習的對偶算法”內容`

  1. 根據附錄C 拉格朗日對偶性,寫出拉格朗日函數;
  2. \(L(w,b,\xi,\alpha,\mu)\)\(w,b,\xi\) 的極小;
  3. \(\displaystyle \min \limits_{w,b,\xi} L(w,b,\xi,\alpha,\mu)\)\(\alpha\) 的極大;
  4. 整理得到對偶形式。

具體過程參考這里

4. 證明內積的正整數冪函數:$$K(x,z)=(x \bullet z)^p$$是正定核函數,這里\(p\)是正整數,\(x,z\in R^n\)

解答思路:

  1. 寫出正定核函數的判定依據
  2. 使用數學歸納法,證明
    1. \(p=1\) 時,根據定理 7.5,證明 \(K(x, z)=x \bullet z\) 是正定核函數
    2. 假設當 \(p=k\)\(k>1\) 時,\(K(x, z)=(x \bullet z)^k\) 是正定核函數
    3. 證明當 \(p=k+1\) 時,\(K(x, z)=(x \bullet z)^{k+1}\) 是正定核函數

先看看什么是正定核函數,根據書中第139頁定理7.5(正定核的充要條件):

\(K: \mathcal{X} \times \mathcal{X} \rightarrow R\)是對稱函數,則\(K(x,z)\)為正定核函數的充要條件是對任意\(x_i \in \mathcal{X}, i=1,2,\cdots, m\)\(K(x, z)\)對應的Gram矩陣:

\[K = [K(x_i, x_j)]_{m \times m} \]

是半正定矩陣。

關於半正定矩陣可以參考這這里

具體證明過程參考這里

References


  1. 《淺析感知機(三)--收斂性證明與對偶形式以及python代碼講解》 ↩︎


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM