1.背景
強烈推薦閱讀(http://www.cnblogs.com/jerrylead/archive/2011/03/13/1982639.html)
支援向量機SVM(support vector machines)。SVM是一種二值分類器,是近些年比較流行的一種分類演算法。
本文,首先要介紹一些基本的知識概念,在下一章將對SVM進行簡單地代碼實現。
2.基本概念
(1)線性可分
首先介紹一下什麼叫線性可分,引用一張上一節的圖。線性可分實際上就是可以用一條直線將兩種不同的點區分開來。由此我們可以得到線性不可分就是兩種點混合在一起不能區分。但是線性不可分的點其實也可以用數學方法區分開來。比如說一個四維的資料集我們可以用一個三維的對象將其分開,這個對象叫做超平面。下圖的超平面就是那條藍線。
(2)支援向量
支援向量,現在我們知道了超平面的概念,支援向量其實就是距離超平面在最近的向量。以上圖為例,就是距離藍線最近的那些點。方法就是點到線的距離判定。一旦我們找到了這些支援向量,那麼我們就可以放大這些向量,只考慮這些對象,用到的是序列最小最佳化的思想。
(3)拉格朗日乘子法
對於支援向量的求法,我們需要一定的約束條件。比如說我們設點到超平面的距離是d,我們要求取d>1的點作為約束條件。因為如果沒有這個約束條件會使得計算出現誤差。
這個公式是我們去點到超平面距離最小的點的集合,且滿足
。在存在約束條件情況下求極值的問題,我們用到拉格朗日乘子法(參見百度百科)。
(4)變型
參照拉格朗日公式F(x1,x2,...λ)=f(x1,x2,...)-λg(x1,x2...)。我們把上面的式子變型為
本欄目更多精彩內容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/sjjg/
約束條件就變成了
上式的參數c使鬆弛變數,因為我們看到圖中一些紅點被分到了綠點的範圍裡,為了考慮到這種問題,引入一個變數來控制。svm的主要任務是計算參數C。
作者:csdn部落格 李博Garvin