支持向量機(一)線性可分的支持向量機與硬間隔最大化

        支持向量機其實和感知機的模型思想挺相似的,都是找出一個分離超平面對數據進行二分類。它是定義在特徵空間上的間隔最大的線性分類器,這個間隔最大化使它區別於感知機;感知機通過迭代算法找出的分離超平面可以是不唯一的,但是支持向量機由於有最大化間隔的限制,即所有的支持向量點到分離超平面的距離之和是最大的,所以它的分離超平面是唯一的;實際上支持向量機還有核技巧,即數據本來是非線性可分的,但是通過映射(核技巧)將其轉化爲線性可分,所以它也是個非線性分類器。

        感知機必須對線性可分的數據集有效,但是支持向量機不僅對線性可分的數據有效,也對線性不可分的數據有效;其可以分爲三種情況:

  1. 當數據線性可分的時候,通過硬間隔最大化產生線性可分的支持向量機,也叫硬間隔支持向量機)。
  2. 當數據線性近似可分的時候,通過軟件各最大化產生線性支持向量機,也叫軟件各支持向量機。
  3. 當數據線性不可分的時候,通過核技巧即軟件各最大化,學習非線性支持向量機。

    我們這裏先介紹線性可分的支持向量機。

  1. 函數間隔

        對於線性可分的支持向量機,我們需要找出一個超平面(對於二維的數據就是一條直線),將所以的數據點分開,就如下圖所示:

                                                             

        中間的那條直線,就是我們需要求的直線L:。對於點xi,如果wxi+b>0,則我們可以判斷點在直線的上方,如果wxi+b<0則我們可以判斷點在直線的下方,其中|wxi+b|可以相對的表示點到直線的遠近,越遠我們就可以認爲對這個分類結果越確信。其中wx+b的符號與類標記y的符號是否一致能夠表示分類是否正確。假設對於對於所有的樣本點(xi,yi)都分類正確,則yi的符號和wxi+b的符號是相同的yi(wxi+b)>0,否則是相反的yi(wxi+b)<0,所以我們可以用來表示分類的正確性以及確信度,這就是函數間隔的概念。

定義超平面關於樣本點(xi,yi)的函數間隔爲:

                                                           

對於直線ωx+b=0我們將ω和b同時擴大n倍,直線本身是不會變的,但是帶入函數間隔公式我們發現函數間隔也擴大了n倍,所以說對於同一個點,同一條直線,衡量標準不同,函數間隔也就不同,那麼計算起來就麻煩了;所以我們需要對直線做些限制,規範化||ω||=1,就是令ω的第二範式等於1。先得到下面公式:

                                        

2.幾何間隔及間隔最大化

        機器學習中我們常用距離衡量樣本之間的關係;我們這篇內容主要是說的硬間隔最大化,這個間隔也就是幾何間隔,換到這裏也就是點到直線的距離。

                

        公式2是我們熟悉的點到超平面的距離公式。反看公式1,在線性可分的情況下,是恆大於0的,而yi只是起到了符號的作用,所以得出下列公式:

                    

        即函數間隔和幾何間隔的關係,如果||ω||=1,那麼函數間隔等於幾何間隔。

        間隔最大化的直觀解釋是:對訓練數據集找到幾何間隔最大的超平面意味着以充分大的確信度對訓練數據進行分類,也就是說,不僅將正負實例分開,而且對最難分的實例點(裏超平面最近的點)也有足夠大的確信度將其分卡,這樣的超平面應該對爲止的新實例有很好的分類預測能力。

        下面我們給出最大間隔分離超平面的約束最優化問題:

         ,

       條件:,

第一個表達式表示我們希望最大化超平面(ω,b)關於訓練數據集的集合間隔γ,條件表示這個集合間隔最少是γ。考慮到幾何間隔和函數間隔之間的關係,即公式3,將約束問題修改爲下列形式:

            ,

            條件:,

        是函數間隔,通過1中的函數間隔的介紹,我們知道,函數間隔是受w和b影響的,即同時擴大多少倍,函數間隔也是擴大多少倍的,但是將其除以一個||w||後這個成以的倍數就被約掉了,所以說上面公式4的最後話問題是不受影響的,也就是說不管函數間隔怎麼變,幾何間隔是不受影響的,那麼我們也可以把函數間隔設爲一個固定的值1,從而可以大大簡化我們的模型以及計算。那我們的目標就成了最大化,考慮到後面計算的問題,將其轉化爲更加一般的形式,其等價於最小化,所以我們得到了最終的最優化約束問題:

   

條件:,

        這個是個凸二次規劃的問題,我們就可以用拉格朗日乘子法進行計算了。

3.學習對偶算法

        對於這個凸二次規劃的問題,我們需要運用拉格朗日對偶性通過拉格朗日乘子法進行計算。我們首先需要構建拉格朗日函數,首先需要引入拉格朗日乘子,由於yi和xi是n個,所以我們需要引入n個乘子,得到拉格朗日函數:

                                          

        原始問題是極小極大問題即,將其轉化爲其對偶問題,即極大極小問題,然後分別對w和b求導,並且令導數等於0得:

        然後將上式帶入拉格朗日乘子法得出來的式子得:

                                                         

       求其對應的α的最大問題:

                                                       

        將其轉化爲求最小值的問題,即與之等價的對偶問題:

                                

                               條件:,

                                         

        到目前爲止我們已經構建了約束的最優解問題,接下來就是要求解了。給出其學習算法,只是一個思路:

                                        

    求得了w和b,也就得到了我們的分離超平面,然後我們就可以進行分類了。

4.支持向量

        最後說這個支持向量什麼含義,先看圖:

                                                     

        決定分離超平面時只有支持向量起作用,而其它實例點並不起作用。如果移動支持向量將改變所求的解;但是如果在間隔邊界外移動其它實例點,甚至去掉這些點,解是不會改變的。由於支持向量在確定分離超平面中起着決定新作用,所以講這種分類模型成爲支持向量機。支持向量的個數一般很少,所以支持向量機由很少的「重要的」訓練樣本確定。

        怎麼理解上面的話,首先我們的條件中α是大於0的。從上圖中我麼可以看到,支持向量距離分類超平面的距離爲,這個ω是我們最終求的最優的結果,換個思路說,這個距離是是支持向量到分離超平面的距離,和其他點是沒有關係的,不管你的其他點怎麼變,只要這些支持向量不變,這個距離是不變的,也就是最終的結果是不變的,所以說ω和b值依賴於訓練數據中對應α>0的點,其他是沒有影響的,而α的條件時大於等於0,所以最終結果是非支持向量的拉格朗日乘子αi都是等於0的。