1. 程式人生 > >scikit-learn中關於SVM的一些常識

scikit-learn中關於SVM的一些常識

一 . 支援向量機的優缺點分析

支援向量機(SVMs)是一個監督學習演算法集,可以用來進行分類、迴歸以及異常值檢測等任務。

這種演算法的優點有:

(1)在高維空間中效率非常高;

(2)對於維數大於樣本數目的情況也很有效;

(3)在決策函式(待優化的函式)中,只有部分訓練樣本點會被用到(僅有支援向量會對決策函式有影響),因此,對於樣本空間很大的情況,能夠節省記憶體;

(4)對於線性不可分的情形,引入核函式(避免維度災難),可以引入不同的核函式來構造決策函式,常見的有(線性核,多項式核,高斯核,拉普拉斯核,Sigmoid核),也可以自定義一些其他的核;

支援向量機的缺點包括:

(1)如果特徵(屬性)數目遠大於樣本數目,支援向量機表現出的效果可能不是很好;

(2)支援向量機的輸出不具有概率意義;(如需得到概率輸出,需進行很繁瑣的處理)

二. 步步深入支援向量機

首先一般所說的支援向量機是一個二分類演算法,對於線性分類和非線性分類具有較好的效果。通常所說的支援向量機經過擴充套件,也可以解決多分類問題,另外,支援向量也可以用於迴歸問題。對於支援向量機的理解,需要從線性(可分)支援向量機,引入核函式解決線性不可分問題(線性不可分支援向量機),軟間隔線性(可分)支援向量機,支援向量迴歸四個層面步步深入來理解SVMs.

1. 對於訓練樣本集(假設是這些樣本是線性可分的),試圖找到一個劃分超平面將這兩類樣本分開,但是這樣的劃分超平面不止一個,我們需要找到位於兩類訓練樣本“正中間”的那一個劃分超平面,因為這個超平面對訓練樣本的“容忍”性最優,這個超平面的分類結果最魯棒,對新樣本的泛化能力最強。

線性(可分)支援向量機的演算法過程如下:


對於上面演算法中的第一步,是如何構造上面所示的約束優化問題?按照劃分超平面的要求,建模可得一個凸二次規劃問題(如下所示),這個形式稱為SVM的基本形式。


必定可以得到全域性最優解,但可以採用更加高效的演算法進行求解。這裡,是將上面的基本形式按照拉格朗日乘子法轉化為其對偶問題,對偶問題的形式即為所要構造的約束優化問題。具體如何利用拉格朗日乘子法將SVM的基本形式轉化為其對偶問題這裡不進行推導,具體推導過程可參考http://www.cnblogs.com/LeftNotEasy/archive/2011/05/02/basic-of-svm.html

在 SVM模型中提到了兩種非常典型的演算法(拉格朗日乘子法,SMO演算法),利用拉格朗日乘子法轉化為其對偶問題,然後對於這個對偶問題(是一個多變數二次規劃問題),採用SMO演算法(序列最小化演算法)可以高效求解。線性可分支援向量機是支援向量最簡單最理想的模型,現實中往往是比較複雜的情形。