1. 程式人生 > >支援向量機與SMO優化演算法

支援向量機與SMO優化演算法

1 演算法概述

1.1 工作原理

類似於感知機,用一個分離超平面將正負類分開,不同之處在於,感知機只是要求分開正負類,而支援向量機要求找出分離間隔最大的超平面。

1.2 三要素

模型:超平面分類決策模型

策略:分類間隔最大化、合頁損失函式最小化

演算法:凸二次規劃、序列最小化演算法(SMO)

1.3 線性可分支援向量機與硬間隔

1.3.1 函式間隔和幾何間隔

我們定義函式間隔為  ,超平面為 

如果我們成比例的改變 w 和 b,超平面沒有任何變化,但是函式間隔卻同比增大或減小,這是沒有意義的,所以無法把函式間隔當做優化目標。但我們可以對法向量w增加一些約束,這時函式間隔成為幾何間隔。

1.3.2 約束條件最優化問題

由於函式間隔對最優化問題的解沒有影響,所以對其取1,最優化目標變為凸二次規劃問題(有最優解)



1.3.3對偶演算法

使用對偶演算法的原因:1,對偶問題往往更容易求解 2,引入核函式,推廣到非線性分類問題

將約束條件作為拉格朗日乘子,構建拉格朗日函式,極大化拉格朗日函式才能等價於原問題。原問題極小極大問題,轉換為極大極小問題。

對偶最優化問題的解為α(>0),由α求出原始問題的解 w 和 b,組成分離超平面。

1.3.4 KKT條件

(1)拉格朗日函式L對原始問題引數w、b和拉格朗日乘子向量α的偏導數為零。

(2)第二項拉乘子與約束條件的乘積和小於等於零。

(3)第三項仿射函式等於零

(4)拉格朗日乘子α大於等於零。

(5)拉乘子與約束條件的乘積等於零(對偶互補條件)

1.3.5 支援向量

由於w和b只依賴於訓練資料中對應於α>0的點,其他點沒有影響,所以稱其為支援向量。

根據kkt互補條件,支援向量就是位於間隔邊界上的點。

1.4 線性支援向量機與軟間隔

1.4.1 軟間隔

線性可分支援向量機,對線性不可分訓練資料是不適用的,因為不等式約束條件不能都成立。這時我們就需要修改間隔的標準,使其成為軟間隔最大化。對於某些不能滿足函式間隔大於1的點,引入一個鬆弛變數,使函式間隔大於1-

加上懲罰引數C,原始問題如下:



      

C越大,代表對誤分類懲罰力度越大。

1.4.2 對偶演算法

對偶形式化後,約束條件變為0<= α <= C,w可由 KKT 條件推出,而b需要進一步限制條件,即kkt互補條件和0<α<C,由此可推出b的計算公式。

1.5 非線性支援向量機與核函式

非線性分類問題是指通過利用非線性模型才能更好地進行分類的問題。所採取的辦法是將原問題輸入空間對映到一個新的空間(希爾伯特空間),在新空間中,原來線性不可分的資料變得線性可分,從而把非線性問題變換為線性問題。

在支援向量機問題中,將對偶問題目標函式中的內積用核函式代替,分類決策函式同樣。

常用核函式:多項式核函式、高斯核函式、字串核函式

2 序列最小化演算法(SMO)

2.1 工作原理

支援向量機的問題可以形式化為凸二次規劃問題,此問題可以有全域性最優解,但當訓練集容量很大時,演算法往往變得低效,所以我們引入一個優化演算法提高效率。

基本思路:如果所有變數的解都滿足最優化問題的KKT條件,那麼最優化的解就得到了。也就是說,我們通過不斷優化變數滿足KKT條件,直到所有變數都符合條件,此時,我們求得的解就是最優解。

2.2 優化方法

每次選擇兩個變數,固定其他所有變數,這樣構建的一個二次規劃問題有解析解,如果這兩個變數得到了優化,那麼原始的二次規劃問題也更接近最優解。

α1:第一個變數的選擇為外層迴圈,選取違反KKT條件最嚴重的的樣本點。首先遍歷0<α<C的樣本點,即在間隔邊界上的點,然後在遍歷整體訓練集。

α2:第二個變數的選擇希望使其有足夠大的變化,找到差值最大的作為其選擇。

注:更新完變數後,要對其剪輯,滿足不等式約束。

優點:泛化能力強,計算開銷小,結果易於解釋

缺點:對引數調節和核函式的選擇敏感

參考資料:統計學習方法(李航)、機器學習實戰(Peter)