十大機器學習算法之支持向量機(一)

1、隨便說點

這個系列就是想要記述一下自己學習機器學習算法的一個心路歷程的對算法的認識,如果有幫助到更多人(還是小開心的~~~~),如果有錯誤的話歡迎各路大神積極的跟我聯繫修正錯誤,免的誤導大家。

2、正題

2.1、課前知識

SVM是一種監督式學習方法。對於線性不可分的情況,支持向量機通過使用非線性映射把向量映射到一個更高維的空間裏,基於機構風險最小化理論,在這個空間裏建立有一個分割超平面,使得學習期得到全局最優化,並且在整個樣本空間的期望風險以某個概率滿足一定上界。在分開數據的超平面兩邊建有兩個相互平行的超平面。分割超平面使得兩個平行的超平面的距離最大化。這個距離越大,分類器的總體誤差就會越小,分類效果越好。

2.2、帶領大家再看一遍logistic迴歸

Logistic迴歸的目的是從特徵學習出一個0/1分類模型,而這個模型是將特徵的線性組合作爲自變量,由於自變量的取值是負無窮到正無窮。因此,使用logistic函數將自變量映射到(0,1)上,映射後的值被認爲是屬於y=1的概率。
形式化表示:
假設函數:
這裏寫圖片描述
其中x是n維的特徵向量,函數g就是logistic函數。
函數g(x)的圖像是:
這裏寫圖片描述
可以看到,無窮被映射到了(0,1)上。而假設函數就是特徵屬於y=1的概率。
這裏寫圖片描述
這裏寫圖片描述
當新來一個特徵時候,我們只需要求出這裏寫圖片描述如果大於0.5,則特徵就是屬於y=1的類,反之,則是屬於y=0的類。
回過頭來再看一遍,我們會發現,這裏寫圖片描述只與這裏寫圖片描述有關,這裏寫圖片描述>0,那麼這裏寫圖片描述>0.5,g(z)只不過是用來映射的函數,真正的決定特徵是屬於哪一個類別的還是這裏寫圖片描述。可以看出當這裏寫圖片描述趨近於正無窮的時候,特徵值是接近於1的,反之則是接近於-1。我們訓練模型的目的就是希望訓練數據中y=1的特徵這裏寫圖片描述>>0,而y=0的特徵遠遠小於0。Logistic迴歸的目的就是要學習得到這個θ,使得正例的特徵遠遠大於0,負例的特徵遠遠小於0,而且是要在所有的實例上達到這個訓練目的。

2.3形式化表示

在SVM中使用的標籤是-1和1,替換的是logistic迴歸中的0和1 (其實標籤數據都是無所謂多少的,只是爲了更好的區分而已)。θ替換成了w和b。以前這裏寫圖片描述,其中這裏寫圖片描述=1的。我們現在把這裏寫圖片描述替換爲b,其他的θ替換爲w,替換後爲:這裏寫圖片描述可以進一步簡化爲這裏寫圖片描述,同時這裏寫圖片描述。也就是說最終y由y=0和y=1變爲y=-1和y=1,只是這些標記數據變化之外。其他都沒有什麼區別。現在的假設函數爲:這裏寫圖片描述。上一小節我們說過只需要考慮這裏寫圖片描述的正負問題,不用關心函數g(z)的大小變化,因此這裏我們將g(z)做一個簡化處理,把他簡單的映射到-1和1上。映射關係如下所示:
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

2.4函數間隔和幾何間隔

我跟你們分享一下我理解的函數間隔和幾何間隔。函數間隔顧名思義由函數出發計算出來的間隔,就是我們數學上學習到的計算點到平面的距離;幾何間隔就是計算的點到平面的距離除以係數。接下來聽我慢慢道來。

函數間隔

概念:點到超平面的距離。給定一個訓練樣本這裏寫圖片描述,x是特徵,y是標籤,i標示第i個樣本。
定義函數間隔如下:
這裏寫圖片描述
超平面(w,b)關於訓練樣本集中所有樣本點這裏寫圖片描述的函數間隔的最小值就是超平面關於訓練樣本集的函數間隔:
這裏寫圖片描述
我們能夠想象的到。當這裏寫圖片描述=1的時候,在我們的g(z)中,這裏寫圖片描述是大於等於0的,此時的函數間隔實際上就是這裏寫圖片描述。爲了使函數間隔最大(也就是確定樣本是正例還是反例的確信度最大化),當這裏寫圖片描述=1時,這裏寫圖片描述應該是一個極大數(是一個絕對值極大的數)。因此,函數間隔代表了我們認爲特徵是正例還是反例的置信度。
但是,這樣定義的函數間隔是有問題的,我們爲了使這裏寫圖片描述最大化,我們可以試着同時按照比例增大w和b的值(比如2w,2b)則這個時候的函數間隔變爲原來的2倍,但是超平面並沒有發生變化,所以,這個函數間隔是由BUG存在的,只是使用這一個來定義遠遠不夠,這個時候就要我們的幾何間隔出面了。

幾何間隔

先看一張圖
這裏寫圖片描述
對於圖中A這裏寫圖片描述點,其垂直投影到超平面的對應點爲B,w是垂直於超平面的一個向量,r爲樣本點A到超平面的距離,此時有單位向量爲這裏寫圖片描述,所以B點的座標爲這裏寫圖片描述(利用幾何知識計算),帶入到超平面這裏寫圖片描述=0得到:
這裏寫圖片描述
進一步得到:
這裏寫圖片描述
r就是點到超平面的距離。爲了求得r的絕對值,令r乘上對應的類別y,即可得出幾何間隔。R=yr
由此可以看出,及時同時增大w和b的倍數,幾何間隔的大小是不會改變的。當||w||=1時,幾何間隔即爲函數間隔。
從上面的定義中我們可以看出來,幾何間隔和函數間隔之間的區別就在於||w||,幾何間隔就等於函數間隔除以||w||。函數間隔這裏寫圖片描述實際上就是f(x),只是認爲定義的間隔度量,而幾何間隔f(x)/||w||纔是直觀上的點到超平面的距離。

2.5最優間隔分類器

在前面我們說過,我們的目標就是尋找到一個超平面,這個超平面使得離這個超平面的距離是越大越好,達到最大就是我們想要的效果。(就是我們所說的使得所有的點都必須遠離超平面,如果最近的都遠離了,那麼其他的點肯定也都是遠離的),我們現在所關心的就是要儘量使得離得最近的點到超平面的距離最大。畫個圖比較明瞭************************(好醜的圖,不忍直視)
這裏寫圖片描述就是圖中A點和B點離超平面的距離最大化。
形式化表示爲:
這裏寫圖片描述
這裏||w||=1規約w,使得求得的是幾何間隔而不是函數間隔。
到現在爲止,我們已經把模型定義出來了,如果我們已經求得w和b,那麼對於新到來的一個x,我們只需要代入到公式當中,就可以對他進行分類,這個就成爲最優間隔分類器。我們現在的問題就是怎麼去把w和b求出來。
由於||w||=1不是凸函數,我們把這個進行處理,考慮到我們前面2.4節中講到的幾何間隔和函數間隔的關係,這裏寫圖片描述,我們把上面等式重新換個方式寫出來:
這裏寫圖片描述
這個時候其實我們求得的最大值還是幾何間隔,只不過此時的w不需要再受到||w||=1的約束。但是這個時候目標函數並不是凸函數,沒有現成的算法求最優,所以我們還是要修改,前面說到,同時擴大w和b的倍數,對結果並沒有什麼影響,但是我們還是要求出一組w和b的值,因此,我們需要對函數間隔做一些限制,以保證我們的解是唯一的。我們爲了簡單,取函數間隔爲1,也即是距離超平面最近的點的距離定義爲:1/||w||。由於求1/||w||的最大值,就相當於求這裏寫圖片描述的最小值,因此,改寫之後的結果爲:
這裏寫圖片描述
這個就比較讓我們滿意了,只有線性約束,而且這還是一個典型的二次規劃問題(目標函數是自變量的二次函數)。代入現有的優化軟件求解即可。
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
總算把前面一些知識算是說完了,有啥新增的我會在更新,下面一篇就要好好的步入正題中的正題,我們的核心————SVM。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章