SVC和SVR


SVC和SVR

我們可以發現,在sklearn的SVM中有sklearn.svm.SVC()和sklearn.svm.SVR()兩個方法,他們對應的其實是SVM在分類和回歸兩種問題下的結構:

  • support vector classify(SVC)支持分類機做二分類的,找出分類面,解決分類問題
  • support vector regression(SCR)支持回歸機做曲線擬合、函數回歸 ,做預測,溫度,天氣,股票
  • 這些都會用於數據挖掘、文本分類、語音識別、生物信息,具體問題具體分析

對於SVC,其實就是我們之前學過的SVM,這里就說一下SVR

知乎這個回答講的非常好,我這里摘錄如下:

簡介

直觀上來講 SVM 分類(SVC Support Vector Classification)與 SVR(Support Vector Regression)圖形上的區別如下:

img

對於樣本 [公式] ,傳統的回歸模型通常直接輸出 [公式] 與真實輸出 [公式] 之間的差別來計算損失,當且僅當 [公式][公式] 完全相同時,損失才是零。與此不同 SVR 假設我們能容忍 [公式][公式] 之間最多有 [公式] 的偏差,即僅當 [公式][公式] 之間的差別絕對值大於 [公式] 時才計算損失。這相當於以 [公式] 為中心 構建一個寬度為 [公式] 的間隔帶,若樣本落入此間隔帶,則認為是預測正確的,如下圖:

img

數學形式

【參考】

img

於是 SVR 問題可以形式化為:

[公式]

其中 C 正則化常數, [公式] 是下圖的 ε-不敏感損失(ε-insensitive loss)函數:

[公式]

img

引入松弛變量 [公式][公式] (間隔兩側的松弛程度有可能不同),可以將式(C2)重寫為:

[公式]

img

拉格朗日對偶形式

通過引入 [公式] ,由拉格朗日乘子可以得到式(C3) 的拉格朗日函數:

[公式]

[公式] 帶入上式,並令 [公式] 的偏導為零,得到:

[公式]

將式(C5)帶入式(C4)可以得到 SVR 的對偶問題:

[公式]

KKT 與最終決策函數

上述過程滿足的 KKT 條件為:

[公式]

可以看出,當且僅當 [公式] 時, [公式] 能取非零值,當且僅當, [公式][公式] 能取非零值。換言之,僅當樣本 [公式] 不落入 ε-間隔帶中,相應的 [公式][公式] 才能取非零值。此外,約束 [公式][公式] 不能同時成立,因此 [公式][公式] 中至少有一個為零。

將式(C5)第一項帶入決策函數,可得最終的決策函數為:

[公式]

能使上式中 [公式] 成立的樣本即為 SVR 的支持向量,他們必然落在ε-間隔帶之外。顯然 SVR 的支持向量僅是訓練樣本的一部分,即其解仍然具有稀疏性。

由 KKT 條件可以看出,對於每個樣本 [公式] 都有 [公式][公式] ,於是在得到 [公式] 之后,若 [公式] 則必有 [公式] ,繼而有:

[公式]

因此,若求解式(C6)得到 \alpha_i 后,理論上說可以任意選取滿足 [公式] 的樣本,通過式(C9)求得 b。在實踐中采用一種更魯棒的辦法:選擇多個(或所有)滿足條件 [公式] 的樣本求解 b 后去平均值。

核函數的形式最終的決策函數為:

[公式]

其中 [公式] 為核函數。

不同核的回歸效果

【參考】

img

下面這一段實踐建議我個人覺得也是很中用的:

基於 Sklearn 的實踐建議

【參考】

  • sklearn - Tips on Practical Use

  • 避免數據拷貝

  • 核緩存的大小:對於 SCVSVRNuSVCNuSVR,核函數緩存的大小對於大型問題的運行時間有着非常大的影響。如果有足夠多的內存,建議把cache_size的大小設置的盡可能的大。

  • 設置 C:1 是一個合理的默認選擇,如果有較多噪點數據,你應該較少 C 的大小。

  • SVM 算法不是尺度不變,因此強烈建議縮放你的數據。如將輸入向量 X 的每個屬性縮放到[0,1] 或者 [-1,1],或者標准化為均值為 0 方差為 1 。另外,在測試向量時也應該使用相同的縮放,已獲得有意義的結果。

  • 對於SVC,如果分類的數據不平衡(如有很多的正例很少的負例),可以設置class_weight='balanced',或者嘗試不同的懲罰參數 C

  • 底層實現的隨機性:SVCNuSVC的底層實現使用了隨機數生成器,在概率估計時混洗數據(當 probability 設置為 True),隨機性可以通過 random_state 參數控制。如果 probability 設置為False ,這些估計不是隨機的,random_state 對結果不在有影響。

  • 使用 L1 懲罰來產生稀疏解


Reference

  1. https://www.cnblogs.com/ylHe/p/7676173.html
  2. https://zhuanlan.zhihu.com/p/50166358


免責聲明!

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



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