apache 开源 java 云计算 Firefox linux php nginx shell Android centos 程序员 编程 Ubuntu Windows google 微软 Python mysql wordpress

【機器學習算法-python實現】svm支持向量機(1)—理論知識介紹

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...)。我們把上面的式子變型為

 約束條件就變成了


上式的參數c使松弛變量,因為我們看到圖中一些紅點被分到了綠點的範圍裏,為了考慮到這種問題,引入一個變量來控制。svm的主要任務是計算參數C。

延伸阅读

    评论