1. 程式人生 > >SVM學習筆記(一)

SVM學習筆記(一)

梯度下降法、拉格朗日乘子法、KKT條件回顧

感知器模型回顧

SVM線性可分

SVM線性不可分

核函式

SMO

重點:梯度下降法,拉格朗日乘子法,KKT條件

梯度下降法

梯度下降法常用於求解無約束情況下凸函式的極小值,是一種迭代型別的演算法,因為凸函式只有一個極值點,故求解出來的極小值就是函式的最小值點。

由於梯度下降法中負梯度方向作為變數的方向,所以有可能導致最終求解的值是區域性最優解,所以使用梯度下降的時候,一般需要進行一些調優策略:

學習率的選擇:學習率過大,表示每次迭代更新時的變化比較大,有可能會跳過最優解;學習率過小,表示每次迭代更新時變化較小,就會導致迭代速度過慢,很長時間都不能結束。

演算法初始引數的選擇:初始值不同最終獲得的最小值也有不同,因為梯度下降法求解的是區域性最優解,所以一般情況下,選擇多次不同初始值運演算法,並最終返回損失函式最小情況下的結果值。

標準化:由於樣本不同特徵值的取值範圍不同,可能導致在各個不同引數上迭代速度不同,為了減少特徵取值的影響,可以將特徵進行標準化操作。

梯度下降法種類:

批量梯度下降法(BGD):使用所有樣本在當前點的梯度值來對變數引數進行更新操作;

隨機梯度下降法(SGD):在更新變數引數的時候選取一個樣本的梯度來更新引數。

小批量梯度下降法(MBDG):集合BGD和SDG的特性,從原始資料中,每次選擇n個樣本來更新引數值,一般n選擇10

有約束優化問題

最優化問題一般是指對於某個函式而言,求解在其指定作用域上的全域性最小值問題,一般分為一下三種情況(備註:以下幾種方式求出來的都有可能是區域性最小值,只有當函式是凸函式的時候,才可以得到全域性最小值):

無約束問題:求解方式一般梯度下降法、牛頓法、座標軸下降法等;

等式約束問題:求解方式一般為拉格朗日乘子法

不等式約束問題:求解方式一般為KKT條件

拉格朗日乘子法

拉格朗日乘子法就是當我們的優化函式存在等值約束的情況下的一種最優化求解方式;其中引數α稱為拉格朗日乘子。

拉格朗日乘子法理解

拉格朗日乘子法的目的:為了定義一個新的無約束問題,等價原來的有約束問題,從而將約束問題無約束化。泛拉格朗日函式有如下定義:

原始問題

對偶問題

在優化問題中,目標函式f(x)存在多種形式,如果目標函式和約束條件都為變數的線性函式,則稱問題為線性規劃;如果目標函式為二次函式,則稱最優化問題為二次規劃。每個線性規劃問題都有一個對應的對偶問題。對偶問題具有以下幾個特性:

1.對偶問題的對偶是原問題;

2.無論原始問題是否是凸的;

3.對偶問題可以給出原始問題的一個下界;

4.當滿足一定條件的時候,原始問題和對偶問題的解是完美等價的;

KKT條件

KKT條件是泛拉格朗日乘子法的一種形式;主要應用在當我們的優化函式存在不等值約束的情況下的一種最優化求解方式;KKT條件即滿足不等式約束情況下的條件。

KKT條件理解

當可行解在約束內部區域的時候,令β=0即可消去約束。

對於引數β的取值而言,在等值約束中,約束函式和目標函式的梯度只要滿足平行即可,而在不等式約束中,若β≠0,這說明可行解在約束區域的邊界上,這時候可行解應該儘可能的靠近無約束情況下的解,所以在約束邊界上,目標函式的梯度方向應該遠離約束區域超無約束時的解,此時約束函式的梯度方向與目標函式的扶梯度方形應相同;從而可以得到β>0

KKT條件總結

1.拉爾朗日取得可行解的蟲咬條件;

2.將不等式約束轉換後的一個約束,稱為鬆弛互補條件;

3.初始的約束條件;

4.不等式約束條件需要滿足的條件;

感知器模型

感知器演算法是最古老的分類演算法之一,原理比較簡單,不過模型的分類泛化能力比較弱,不過感知器模型是SVM、神經網路、深度學習等演算法的基礎。

感知器的思想很簡單:比如班上有男生女生,感知器模型就是試圖找到一條直線,能夠把所有男學員和女學員分隔開,如果是高維空間中,感知器模型尋找的就是一個超平面,能夠把所有的二元類別分割開。感知器模型的前提是:資料是線性可分的。

直接使用梯度下降法就可以對損失函式求解,不過由於這裡的m分類錯誤的樣本集合,不是固定的,所以我們不能使用批量梯度下降法(BGD求解,只能使用隨機梯度下降法(SGD)或者小批量梯度下降(MBGD);一般在感知器模型中使用SGD來求解。

SVM

支援向量機(Support Vector Machine,SVM)本身是一個二元分類演算法,是感知器演算法模型的一種擴充套件,現在的SVM演算法支援線性分類和非線性分類的應用,並且也能夠直接將SVM應用於迴歸應用中,同時通過OVR或者OVO的方式我們也可以將SVM應用在多元分類領域中。在不考慮整合學習演算法,不考慮特定的資料集的時候,在分類演算法中SVM可以說是特別優秀的。

線性可分SVM

線性可分SVM

SVM模型是讓所有的分類點在各自類別的支援向量的兩邊,同時要求支援向量儘可能的遠離這個超平面,用數學公式表示如下:

線性可分SVM

SVM目標函式/損失函式為:

將此時的目標函式和約束條件使用KKT條件轉換為拉格朗日函式,從而轉換為無約束的優化函式.

引入拉格朗日乘子後,優化目標變成:

根據拉格朗日對偶化特性,將該優化目標轉換為等價的對偶問題來求解,從而優化目標變成:

所以對於該優化函式而言,可以先求優化函式對於w和b的極小值,然後再求解對於拉格朗日乘子β的極大值。

首先求讓函式L極小化的時候w和b的取值,這個機制可以直接通過對函式L分別求w和b的偏導數得到:

將求解出來的w和吧帶入優化函式L中,定義優化之後的函式如下:

通過對w、b極小化後我們最終得到的優化函式只和β有關,所以此時我們可以直接極大化我們的優化函式,得到β的值,從而可以得到最終得到w和b的值。

假設存在最優解β*;根據w、b和β的關係,可以分別計算對應的w值和b值(一般使用所有支援向量的計算均值來作為實際的b值);

線性可分SVM的演算法流程

線性可分SVM總結

  1. 要求資料必須是線性可分的;
  2. 純線性可分的SVM模型對於異常資料的預測可能會不太準;
  3. 對於線性可分的資料,SVM分類器的效果非常不錯。

SVM的軟間隔模型

線性可分SVM中要求資料必須是線性可分的,才可以找到分類的超平面,但是有的時候線性資料中存在少量的異常點,由於這些異常點導致了資料集不夠線性劃分;直白來講就是:正常資料本身是線性可分的,但是由於存在異常點資料,導致資料集不夠線性可分;

如果線性資料中存在異常點導致沒法直接使用SVM線性分割模型的時候,我們可以通過引入軟間隔的概念來解決這個問題;

硬間隔:可以認為線性劃分SVM中的距離度量就是硬間隔,線上性劃分SVM中,要求函式距離一定大於1的,最大化的硬間隔條件為:

軟間隔:SVM對於訓練集中每個樣本都引入一個鬆弛因子(ε),是的函式距離加上鬆弛因子後的值是大於等於1;這表示相對於硬間隔,對於樣本到超平面距離的要求就放鬆了。

鬆弛因子(ε)越大,表示樣本點距離超平面就越近,如果鬆弛因子大於1,那麼表示允許樣本點分錯,所以說加入鬆弛因子是有成本的,過大的鬆弛因子可能會導致模型分類錯誤,所以最終的目標函式就轉換成為:

C越大表示對誤差分類的懲罰越大,C越小表示對誤分類的懲罰越小;C值的給定需要調參。

將w、b、ε的值帶入L函式中,就可以消去優化函式中的w、b、ε,定義優化之後的函式如下:

最終優化後的而目標函式/損失函式和線性可分SVM模型基本一樣,除了約束條件不同而已,也就是說也可以使用SMO演算法來求解.

在硬間隔最大化的時候,支援向量比較簡單,就是離超平面的函式距離為1的樣本點就是支援向量.

在軟間隔中,根據KKT條件中的對偶互補條件:β(y(wx+b)-1+ε)=0,從而有:

SVM軟間隔模型的演算法流程

SVM的軟間隔模型總結

  1. 可以解決線性資料中懈怠異常點的分類模型構建的問題;
  2. 通過引入懲罰項係數(鬆弛因子),可以增加模型的泛化能力,即魯棒性;
  3. 如果給定的懲罰項係數越小,表示模型構建時,就允許存在越多的分類錯誤樣本,也就是表示此時的模型在訓練集上的準確率比較低,在測試集上的準確率比較高;如果懲罰項係數越大,表示在模型構建的時候,就越不允許存在分類錯誤的樣本,也就表示此時的模型在訓練集上的準確率較高,在測試集上的準確率較低.

非線性可分SVM

不管是線性可分還是加入懲罰係數後的軟間隔線性可分SVM其實都要求資料本身是線性可分的,對於完全不可以線性可分的資料,這兩種演算法模型就沒法解決這個問題了。

多項式迴歸回顧

線上性迴歸中,我們可以通過多項式擴充套件將低微的資料擴充套件成為高維的資料,從而可以使用線性迴歸模型來解決問題。也就是說對於二維空間中不是線性可分的資料,將其對映到高維空間中,變成了線性可分的資料。

結合多項式迴歸在處理非線性可分資料事的作用,在SVM的線性不可分的資料上,如果將資料對映到高維空間中,那麼資料就會變成線性可分的,從而可以使用線性可分SVM模型或者軟間隔線性可分SVM模型。

也就是說,對於線性不可分SVM模型來講,重點就是將低維特徵資料到高維特徵資料之間的對映。

定義一個從低維到高維特徵空間的對映函式,非線性可分SVM的優化目標函式:

可以看到的是,只需要將原來的低維空間中的兩個向量的點積轉換為高維空間中兩個向量的點積即可。

這樣一來問題就解決了嗎?似乎是的:拿到非線性資料,就找到一個對映,然後一股腦把原來的資料對映到新空間中,再做線性SVM即可。不過事實上沒有這麼簡單!其實剛才的方法稍想一下就會發現有問題:在最初的例子裡做了一個二階多項式的轉換,對於二維空間做對映,選擇的新空間是原始空間的所有一階和二階的組合,得到了5個維度;如果原始空間是三維,那麼我們會得到9維的新空間;如果原始空間是n位,那麼我們會得到一個n(n+3)/2維的新空間;這個數目是呈爆炸性增長的,這給計算帶來了非常大的困難,而且如果遇到無窮維的情況,就根本無從計算。

核函式

假設函式是從一個低維特徵空間到高維特徵空間的一個對映,那麼如果存在函式K(x,z),對於任意的低維特徵向量x和z,都有:

稱函式K(x,z)為核函式(Kernal funcation)

核函式在解決線性不可分問題的時候,採取的方式是:使用低維空間上的計算來避免在高維空間中向量內記得恐怖計算量;也就是說此時SVM模型可以應用在高維特徵空間中資料可線性分割的優點,同時又避免了引入這個高維特徵空間恐怖的內積計算量。

核函式總結

  1. 核函式可以自定義;核函式必須是徵訂和函式,即Gram舉證是半正定矩陣;
  2. 核函式的價值在於它雖然也是特徵進行從低維到高維的轉換,但核函式它事先在低維上進行計算,而將實質上的分類效果表現在了高維上,也就如上文所說的避免了直接在高維空間中的複雜計算;
  3. 通過核函式,可以將非線性可分的資料轉換為線性可分資料;

高斯核函式公式證明(擴充套件)

SMO

序列最小優化演算法(Sequential minimal optimization,SMO)是一種用於解決SVM訓練過程中產生的優化問題的演算法。論文詳見:Sequencial Minimal Optimization-a Fast Alg for Training SVM.pdf

 

從而可以得到解決問題的思路如下:

首先,初始化一個β值,讓它滿足對偶問題的兩個初始限制;

然後不斷優化這個β值,使得由它確定的分割超平面滿足g(x)目標條件,而且在優化過程中,始終保證β滿足初始限制條件。

備註:這個求解過程中,和傳統的思路不太一樣,不是對目標函式求最小值,而是讓g(x)目標條件儘可能的滿足。

在這樣一個過程中,到底如何優化這個β值呢?整理可以發現β值的優化必須遵循以下兩個基本原則:

每次優化的時候,必須同時優化β的兩個分量;因為如果只優化一個分量的話,新的β值就沒法滿足初始限制條件中的等式約束條件了。

每次優化的兩個分量應該是違反g(x)目標條件比較多的。也就是說,本來應當是大於等於1的,越是小於1違反g(x)目標條件就越多。

或者換一種思路來理解,因為目標函式中存在m個變數,直接優化比較難,利用啟發式的方法E/M演算法思想,每次優化的時候,只優化兩個變數,將其他的變數看成常數項,這樣SMO演算法就將一個複雜的優化演算法轉換成一個比較簡單的兩變數優化問題了。

可以發現SMO演算法中,是選擇兩個合適β變數迭代,其他變數作為常量來進行優化的一個過程,那麼兩個變數怎麼選擇呢???

每次優化的時候,必須同時優化β的兩個分量;因為如果只優化一個分量的話,新的β值就設法滿足初始限制條件中的等式約束條件了。

每次優化的兩個分量應該是違反g(x)目標條件比較多的。也就是說,本來應該是大於等於1的,越是小於1違反g(x)目標條件就越多。

SMO計算閾值b和差值Ei

SMO演算法流程總結

SVR(迴歸問題的SVM)

SVM和決策樹一樣,可以將模型直接應用到迴歸問題中;在SVM的分類模型(SVC)中,目標函式條件如下:

在簡答的線性迴歸中,我們最小化一個正則化的誤差函式:

 

scitit-learn SVM演算法庫概述