SVM問題再理解與分析——我的角度

歡迎關注我的博客:http://www.cnblogs.com/xujianqing/
支持向量機問題
問題先按照幾何間隔最大化的原則引出他的問題為


上面的約束條件就是一個不等式約束,
可以寫成

這個是SVM的基本型
對它引入拉格朗日乘子,即對上式添加拉格朗日乘子
該問題的拉格朗日函數可以寫成:

對偶問題
先定義一個概念:Wolfe對偶:定義問題
是凸優化問題
的對偶
再定義一個概念:約束規格:
考慮一般約束問題
在式(6)的可行域
,在這
個約束函數
都是可微函數,引進下列兩種對約束的限制性條件(約束規格)
1、線性條件:
個約束函數都是線性函數
2、梯度無關條件:梯度向量集
線性無關,其中
為
處的有效集
在這里引入一個定理: Wolfe對偶定理:
考慮連續可微的凸優化問題
,其中
和每一個
都是連續可微的凸函數,且定義約束規格中的任意一個約束規格成立,則有以下的:
(1)若原始問題
有解,則它的Wolfe對偶問題
有解
(2)若原始問題和它的Wolfe對偶問題分別有可行解
,則這兩個解分別為原始問題和對偶問題最優解的充要條件是它們相應的原始問題和對偶問題的目標函數值相等
對其原始問題引入式
中的對偶問題
就是令拉格朗日函數對
求偏導數,並令他們等於0
把式(7)中的兩個代入原始的拉格朗日函數可得到式:
故得到了SVM基本型的對偶問題為:
求解出
后在求出
和
由對偶問題解出的
是拉格朗日乘子,對應着訓練樣本
,而且需要滿足KKT條件,於是就有下式
這里解釋了支持向量貢獻了超平面的計算和非支持向量對超平面沒有影響之間的關系
線性支持向量機與軟間隔
在支持向量機中,解決線性不可分問題主要有兩種方法:硬間隔核函數空間映射,線性軟間隔,一般作用的時候是兩者結合起來。
在線性可分的的情況下,支持向量機要求所有的點都要滿足約束條件,但是事情往往沒有那么完美的滿足,在線性不可分的情況下,並不是所有的點都會滿足,為了解決這個問題,就引入了一個懲罰項,這個懲罰項對不滿足約束條件
進行懲罰處理。這里引入一個松弛變量
,直觀的可以看一下,我們對在分類問題中進行一些調整了,就是把約束條件放寬,原本的約束條件
轉化為:
.當然引入了松弛條件,這時候付出的代價當然要進行相應的調整了,於是我們對分類錯誤或者分類的效果不滿意的點進行了懲罰處理。
這個懲罰處理就體現在了最終需要優化的目標函數當中:軟間隔的svm需要優化的目標函數就是:
這里的C就是權衡一下壞點所占有的比重,當
時,那時候就強制要求所有的樣例點都要滿足約束條件,於是上面的問題就轉化為一個硬間隔的svm。對式(12)進行優化,代表着兩層含義:使得間隔盡量大,同時使得分類點的個數盡量少。
於是軟間隔的SVM的原始問題可以描述成下式
式(13)是一個凸二次規划問題,在這里面可以證明得到
的解是唯一的,而
的解是不唯一的,
的解存在於一個區間中,具體證明見書《數據挖掘中的新方法——支持向量機》,當然為了求解式(13)的問題,我們同樣要通過求解其對偶問題,從而得到該問題的解。
同樣引入拉格朗日函數
對偶問題是拉格朗日的極大極小問題,同樣先要求關於
的極小
可得到
上面三個式子代入(14)可得到
再對
求
的極大,即可得到對偶問題
對約束條件進行轉換,消去
從而只留下
,即后面三個約束條件變為

對偶問題就轉為:
這里繼續討論軟間隔的SVM的kkt條件,該優化問題具體的kkt條件和原始的KKT條件進行比對理解
損失函數
在軟間隔的SVM中引入懲罰項對間隔進行軟化,其實懲罰項的系數C含義是權衡懲罰項的比重,但是后面具體的懲罰項只是用一個
來表示,卻要經過選取,具體的定義就是損失函數
損失函數是評價預測准確度的一種度量,預測:某個假設推斷出的結果,損失函數是與假設密切相關的。
常見的損失函數:
0-1損失函數:
此時軟間隔的優化函數為:
不敏感損失函數
hinge損失函數 :
,此時的優化函數為:
指數損失函數:
對率損失函數:
在這里證明一下如果在軟間隔的SVM中,該原始問題采用的是式(23)的話,
那么其實他的損失函數就是用hinge函數,該函數的作用后面會提,先來證明一下:參考《統計學習方法》李航P114
證明:線性支持向量機原始最優化問題式(23)等價於最優化問題
證明:令
當
時

當
時



故滿足式(23)的約束條件:

最優化問題
可以寫成:

取
可以得到:

命題得證
所以在用線性支持向量機的時候,我們其實默認的損失函數就是hinge損失函數,它和其他損失函數的圖像如下圖所示
支持向量
這里又要說到支持向量的概念了,在求解線性支持向量中我們需要滿足KKT條件下對問題進行優化,在上述我們給過那個圖
對於任意的訓練樣本
總有
或者
.當
時,則該樣本不會對結果
產生影響;當
時,則
,這時候的樣本會對結果產生影響,即樣本就是支持向量。此時分為兩種情況看
,當
時,此時由約束條件
得到,
,
此時樣本落在間隔的邊界上面。這時候損失函數是0
,當
時,此時由約束條件
得到,
,
當
時,此時樣本落在間隔的內部,即兩個間隔之間。當
時,此時樣本錯誤分類。這時候損失函數起作用,根據樣本點的分類情況而定。
所以從上述可以看出對於最終結果的影響是支持向量在起作用,當然這個作用的大小主要看的是該點被分類的效果,因為從合頁損失函數的圖像來看,只有當分類的效果即
的時候,此時的分類效果正好,不被懲罰即損失為0,在分類的效果不好的時候此時的懲罰項起作用,即損失不為0.所以合頁函數不僅要分的正確,還要分的具有足夠高的置信度,還有因為合頁函數在
上面為0了,就保證了svm解的稀疏性,就是在分類很正確的情況下,該樣本是不會對決策函數產生影響的。大於1的時候損失為0,退化為硬間隔的情況,硬間隔的情況下又因為分類正確,且不是在邊界上的點,於是就不起作用了。
當然我們可以把合頁損失函數用另外的損失來替換,例如把he頁函數替換為對率的時候,這時候由於對率函數連續光滑,這樣就算是在后面分類正確的情況下,還是會產生損失,由此這樣的點還是會對模型的構建產生影響,於是就是得不到關於支持向量概念的東西。其實這時候的模型會變為一個對率回歸的模型。
正如上述,損失函數的性質直接對模型的性質產生影響,由此我們可以用一個更加簡潔的方式來表達一下目標函數:
式24的第一項表示這個模型的一些屬性,固有屬性,是根據先驗知識得到的,第二項是這個模型在這個訓練集上面的誤差項,這里的誤差項表示着經驗風險,當然我們希望在訓練集上面的誤差很小,有一種辦法就是構造出很完美的第一項出來,它對數據的描述很精確,但是又不希望模型對於這個訓練集過度精確的描述,以至於把一些不是通用的特征都學進去。所以我們需要優化的是這兩個矛盾的一種同一。所以很多的學習任務,能把優化的目標函數寫出來,那才是王道。具體見描述https://www.zhihu.com/question/59461289
VC維概念的理解
VC維
我們在對一個問題進行學習的時候,會得到一些問題的決策函數
,但是決策函數是不唯一的,這些決策函數構成的集合就叫做假設集,用
來表示。我們通常是從這個假設集里面找一個使得經驗風險最小的
來作為決策函數。
vc維是度量一個假設集
的表達能力的,對於VC維的定義:
先定義幾個概念:
(1)
:這個概念是表示:
設:
1、
是一個假設集,理解為決策函數的集合,它們在
上取值為-1或者+1
2、
就是
空間里面的m個點構成的集合
把
中的每一個點代入
中的一個函數
,得到一個m維的向量(f(x_1,\cdots,f(x_m))),其實這個向量就是-1和+1構成的向量,當把
里面的所有的
都取到后,所得到的不同的m維向量的個數就是
打散:還是上面的
和
,如果
就稱為
被
打散
打散其實可以這樣理解:

看上面的圖,上面的
是二維空間上的線性指示函數

令
,上面的圖中,
被
打散,就是如上圖所示,當取不同的
的時候,那三個點的決策值是不一樣的值,可以取編
種情況,這樣就能說明,
被
打散
增長函數
:

VC維表示的是在空間
中能打散的最多的點數。這里的最多是存在性問題。
其實有一個結論:在
維空間中
中的線性指示函數集合,它的VC維是
(反正在求職過程中考過這個問題(某互聯網大廠))
支持向量機的總體理解
支持向量機的理論基礎是統計學習理論,其實它就是一個結構風險最小化的近似實現,結構風險相當於期望風險的一個上界,它是經驗風險和置信區間的和,經驗風險依賴於決策函數
的選取,但是置信區間是,
的VC維的增函數,兩者是矛盾的。矛盾體現在:當VC維數變大的時候可以選到更好的
使得經驗風險比較小,但是此時的置信區間比較大。
