[Hands On ML] 5. 支持向量机
文章目錄
- 1. 線性支持向量機(jī)分類
- 2. 非線性支持向量機(jī)分類
- 2.1 多項(xiàng)式核
- 2.2 高斯 RBF 核
- 3. 支持向量機(jī)回歸
- 4. 原理
本文為《機(jī)器學(xué)習(xí)實(shí)戰(zhàn):基于Scikit-Learn和TensorFlow》的讀書筆記。
中文翻譯參考
SVM 特別適合應(yīng)用于復(fù)雜但中小規(guī)模數(shù)據(jù)集的分類問題。
可參考:《統(tǒng)計(jì)學(xué)習(xí)方法》支持向量機(jī)(Support Vector Machines,SVM) 筆記
1. 線性支持向量機(jī)分類
- 硬間隔最大化:數(shù)據(jù)必須線性可分,間隔內(nèi)無數(shù)據(jù)點(diǎn)
- 軟件間隔最大化:允許部分點(diǎn)在間隔內(nèi),甚至越過分類線,使用超參數(shù) c 控制
較小的 c:懲罰小,間隔更大,較大的 c:懲罰大,間隔小
如果 SVM 模型過擬合,可以嘗試通過減小超參數(shù)C去調(diào)整
SVM 對特征縮放比較敏感
2. 非線性支持向量機(jī)分類
很多時候,數(shù)據(jù)是線性不可分的,我們可以增加特征,下圖左側(cè)數(shù)據(jù)線性不可分,增加 x2 項(xiàng)以后就可分了
2.1 多項(xiàng)式核
- 添加多項(xiàng)式特征,產(chǎn)生了大量的特征,使模型變慢
- 使用核技巧,可以取得同等的效果,同時沒有特征組合爆炸
- 如果模型過擬合,可以減小多項(xiàng)式核的階數(shù),欠擬合則增大階數(shù)
- 超參數(shù) coef0 控制高階多項(xiàng)式與低階多項(xiàng)式對模型的影響
2.2 高斯 RBF 核
gamma1, gamma2 = 0.1, 5 C1, C2 = 0.001, 1000 hyperparams = (gamma1, C1), (gamma1, C2), (gamma2, C1), (gamma2, C2)svm_clfs = [] for gamma, C in hyperparams:rbf_kernel_svm_clf = Pipeline([("scaler", StandardScaler()),("svm_clf", SVC(kernel="rbf", gamma=gamma, C=C))])rbf_kernel_svm_clf.fit(X, y)svm_clfs.append(rbf_kernel_svm_clf)plt.figure(figsize=(11, 7))for i, svm_clf in enumerate(svm_clfs):plt.subplot(221 + i)plot_predictions(svm_clf, [-1.5, 2.5, -1, 1.5])plot_dataset(X, y, [-1.5, 2.5, -1, 1.5])gamma, C = hyperparams[i]plt.title(r"$\gamma = {}, C = {}$".format(gamma, C), fontsize=16)plt.show()- 增大 γ 使鐘型曲線更窄,在單個樣本周圍環(huán)繞
- 較小 γ 使鐘型曲線更寬,樣本有更大的影響范圍,判定邊界最終則更加平滑
- 如果模型過擬合,減小γ值,若欠擬合,增大γ
計(jì)算復(fù)雜度
3. 支持向量機(jī)回歸
回歸:在間隔內(nèi)放置盡可能多的樣本點(diǎn)
from sklearn.svm import LinearSVR svm_reg = LinearSVR(epsilon=1.5, random_state=1)間隔大小由 ?\epsilon? 控制
from sklearn.svm import SVR svm_poly_reg1 = SVR(kernel="poly", degree=2, C=100, epsilon=0.1, gamma="auto") svm_poly_reg2 = SVR(kernel="poly", degree=2, C=0.01, epsilon=0.1, gamma="auto")多項(xiàng)式核化的非線性SVM
4. 原理
y^={0if?wTx+b<01if?wTx+b≥0\hat{y}=\left\{\begin{array}{l}0 \text { if } \mathbf{w}^{T} \mathbf{x}+b<0 \\ 1 \text { if } \mathbf{w}^{T} \mathbf{x}+b \geq 0\end{array}\right.y^?={0?if?wTx+b<01?if?wTx+b≥0?
- 兩個平面的交界線,決策邊界
- 虛線表示:決策函數(shù)等于 1 或 -1 的點(diǎn):它們平行,且到?jīng)Q策邊界的距離相等,形成一個間隔
- 訓(xùn)練線性 SVM 分類器意味著找到w值和b值使得這一個間隔盡可能大,同時避免間隔違規(guī)(硬間隔)或限制它們(軟間隔)
總結(jié)
以上是生活随笔為你收集整理的[Hands On ML] 5. 支持向量机的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 1221. 分割平衡字
- 下一篇: LeetCode 1487. 保证文件名