機(jī)器學(xué)習(xí)-第六章 支持向量機(jī)(SVM) 6.1 間隔與支持向量
開倍速觀看視頻之后,對課本所說的會更加了解。
支持向量機(jī)講解:https://www.bilibili.com/video/av77638697?p=6
給定一個數(shù)據(jù)集D={(x1 ,y1 ),(x2 ,y2 ),……,(xm ,ym )},yi ∈{-1,+1}。對于分類學(xué)習(xí)來說,最基本的想法就是找出一個超平面,能夠把不同類別的樣本分開。
對于上圖的分類,我們會想用一個超平面劃分兩類,可以看出,劃分兩類的超平面有多種,那我們應(yīng)該選擇哪一種呢?
直覺上,我們會選擇超平面1(紅色線)。因?yàn)樵摮矫鎸τ?xùn)練樣本局部擾動的"容忍性"好。如果選擇超平面3,當(dāng)有一個正例在超平面3的上方之外的話,那么就會分類錯誤,超平面3就不容忍這個正例,所以說超平面1的容忍性好。換句話說,就是超平面1所產(chǎn)生的分類結(jié)果是最魯棒的,就是對新樣例的泛化能力強(qiáng)。
在樣本空間中,超平面的線性方程如下:
其中w = (w1 ,w2 ,……,wd )為法向量,決定了超平面的方向 ;b為位移項(xiàng)(截距),決定了超平面與原點(diǎn) 之間的距離。劃分超平面最終由w和b確定,記為(w,b)。
樣本空間中樣本點(diǎn)到超平面的距離如下:
假設(shè)超平面(w,b)能將訓(xùn)練樣本正確分類,則對于(xi ,yi )∈D,
若yi =1,則wT xi +b>0;若yi = -1,則有wT xi +b < 0,令由于上面這個轉(zhuǎn)換詳解過于復(fù)雜,可以看視頻詳解,這里不作說明。對于距離超平面最近的樣本點(diǎn),我們稱為"支持向量" 。兩個異類支持向量到超平面的距離之和 稱為間隔,如下為了盡可能劃分類別正確,我們可以轉(zhuǎn)化為找到具有"最大間隔" 的超平面,即找到w和b,使得γ最大,即而最大化間隔,就需要最大化||w||-1 ,相當(dāng)于最小化||w||2 ,則目標(biāo)可以重寫為這就是支持向量機(jī)(SVM)的基本模型。
6.2 對偶問題
原始問題與對偶問題以及KKT條件的關(guān)系解釋https://blog.csdn.net/fkyyly/article/details/86488582
原始問題與對偶問題的視頻講解:https://www.bilibili.com/video/av77638697?p=11
原始問題轉(zhuǎn)化為對偶問題:https://www.bilibili.com/video/av77638697?p=12
上面這三個鏈接對于對偶問題有較好的解釋。
對于上式,是一個凸函數(shù)二次規(guī)劃的問題。我們可以對上式使用拉格朗日乘子法 得到原始問題的對偶問題。
對每個約束條件添加拉格朗日乘子αi ,且αi ≥0,則該問題的優(yōu)化函數(shù)為
先求優(yōu)化函數(shù)對于w和b的極小值即,對w和b求偏導(dǎo),令偏導(dǎo)為0,有接著將w代入優(yōu)化函數(shù)得到可以看出,對w和b求偏導(dǎo)之后代入,再考慮對b求偏導(dǎo)得到的約束,就得到了對偶問題得到優(yōu)化函數(shù)只剩下α作為參數(shù),只要求優(yōu)化函數(shù)的極大值,就可以求出α,進(jìn)而求出w和b,再代入我們的模型,就可以了,假設(shè)我們的模型是f(x) = wT x + b,則上述過程要滿足KKT條件對于對偶問題,我們該如何求解α呢?我們用的就是SMO算法
SMO基本思路 :先固定αi 之外的所有參數(shù),然后求αi 上的極值。
SMO步驟: 每次選擇兩個變量αi 和αj ,并固定其他參數(shù),分別對αi 和αj 求偏導(dǎo)為0,得到αi 和αj ,若符合約束條件就不用算,若不符合約束條件,再更新αi 和αj ,代入對偶問題的目標(biāo)函數(shù),直到符合條件。可以看出,SMO固定了其他的參數(shù),僅僅考慮αi 和αj ,因此對偶問題中的約束條件可以重寫為其中的c通過重寫之后的約束條件,我們可以將對偶問題中的目標(biāo)函數(shù)的αj 消去,只剩下αi 一個變量,這時我們的約束只有KKT里面的αi ≥0,對αi 求導(dǎo)為0,得到αi ,再求出aj ,通過這樣子我們可以更高效的求出ai 和aj 。求出α之后,代入就可以計(jì)算出w了。
那么b該如何計(jì)算呢?
使用所有支持向量求解的平均值
設(shè)支持向量表示為(xs ,ys )
設(shè)S= { i | αi >0,i = 1,2,3……,m}為所有支持向量的下標(biāo)集。
支持向量機(jī)的代碼實(shí)現(xiàn):
https://blog.csdn.net/qq_43608884/article/details/88658216
6.3 核函數(shù)
在前面的討論中,我們假設(shè)訓(xùn)練樣本都是線性可分的,上述SVM也只是在處理線性可分的數(shù)據(jù)。事實(shí)上,我們很多數(shù)據(jù)都是非線性可分的。
對于非線性的情況,SVM 的處理方法是選擇一個核函數(shù) κ(?,?) ,通過將數(shù)據(jù)映射φ到高維空間,來解決在原始空間中線性不可分的問題。
具體來說,在線性不可分的情況下,支持向量機(jī)首先在低維空間中完成計(jì)算,然后通過核函數(shù)將輸入空間映射到高維特征空間,最終在高維特征空間中構(gòu)造出最優(yōu)分離超平面,從而把平面上本身不好分的非線性數(shù)據(jù)分開。
如圖所示,一堆數(shù)據(jù)在二維空間無法劃分,從而映射到三維空間里劃分:
類似,原始問題為對偶問題為其中,紅色方框里面的式子,表示的是樣本xi 和xj 映射到特征空間之后的內(nèi)積,當(dāng)屬性空間的維數(shù)很大時,直接計(jì)算內(nèi)積是很困難的,因此,有即xi 和xj 在屬性空間 中的內(nèi)積等于在原始樣本空間 中通過函數(shù)K(·,·)計(jì)算的結(jié)果。
這里的函數(shù)K(·,·),就是核函數(shù) 。
于是,對偶問題可以重寫為最終可以得到
常用的核函數(shù)K(·,·)有以下幾種關(guān)于核函數(shù),有下面三個關(guān)系:
若k1 和k2 為核函數(shù),則對于任意正數(shù)γ1 和γ2 ,其線性組合γ1 k1 +γ2 k2 也為核函數(shù)
若k1 和k2 為核函數(shù),則核函數(shù)的直積也為核函數(shù)
若k1 和k2 為核函數(shù),則對于任意函數(shù)g(x)也是核函數(shù)
對文本數(shù)據(jù)通常采用線性核,情況不明時可先嘗試高斯核。
支持向量機(jī)的非線性代碼實(shí)現(xiàn)
https://blog.csdn.net/kt513226724/article/details/80413018
6.4 軟間隔與正則化
在上述中的支持向量機(jī)中,我們要求所有樣本都要滿足約束,即都被劃分正確,這叫做"硬間隔" 。可實(shí)際上,很難確定合適的核函數(shù)使得樣本在特種空間中線性可分,不允許分類錯誤的樣本。
緩解這一個問題的辦法就是允許支持向量機(jī)在一些樣本上出錯,
為此,引入"軟間隔" 。
軟間隔允許某些樣本不滿足約束條件,也要讓這些樣本很少。則優(yōu)化目標(biāo)可以寫為其中C是一個常數(shù),可以理解為問題正則化時加入的參數(shù)。當(dāng)C趨于無窮大時,所有樣本均滿足原來硬間隔的約束條件;當(dāng)C取有限值時,允許一些樣本不滿足約束。
而式子中的
然而"0/1損失函數(shù)" 的不可微、不連續(xù),數(shù)學(xué)性質(zhì)較差,于是我們可以用其他函數(shù)替代損失函數(shù),稱為"替代損失函數(shù)" ,通常數(shù)學(xué)性質(zhì)較好,通常有以下三種替代損失函數(shù):下面我們使用hinge損失函數(shù)來優(yōu)化目標(biāo)。
首先對訓(xùn)練集的每個樣本(xi ,yi )引入一個松弛變量 ξi ≥0,使函數(shù)間隔加上松弛變量大于等于1,也就是說,約束條件變?yōu)?/p>
對比硬間隔最大化,可以看到我們對樣本到超平面的函數(shù)距離的要求放松了,之前是一定要大于等于1,現(xiàn)在只需要加上一個大于等于0的松弛變量能大于等于1就可以了。當(dāng)引入了ξ之后,也是需要成本的,所以硬間隔到軟間隔的優(yōu)化目標(biāo)變?yōu)?div id="utpsxb1" class="image-package">
硬間隔到軟間隔
接著我們對軟間隔支持向量機(jī)進(jìn)行目標(biāo)函數(shù)的優(yōu)化。通過拉格朗日乘子法得到
對w、b和ξ求偏導(dǎo)為0,得到
將他們代入拉格朗日函數(shù)
此時我們就得到了,原始問題的對偶問題,
接著用SMO算法算出α,就可以得到w,然后再計(jì)算b,與硬間隔類似。
對于上述過程,也需要滿足KKT條件
對于訓(xùn)練樣本(x
i ,y
i ),有
1)若α=0,那么y
i (w
T x
i +b)-1≥0,即樣本在間隔邊界之外,即被正確分類。
2)若0<α<C,那么ξ
i =0,y
i (w
T x
i +b)-1=0,即樣本在間隔邊界上。
3)若α=C,則μ
i =0,該樣本點(diǎn)是有可能正確分類、也有可能分類錯誤,此時考試ξ
i 。
① 如果0≤ξ
i ≤1,那么樣本點(diǎn)在超平面和間隔邊界之間,但是被正確分類。
② 如果ξ
i =1,那么樣本點(diǎn)在超平面上,無法被正確分類。
③ 如果ξ
i >1,樣本點(diǎn)被分類錯誤。
對于,允許誤差的優(yōu)化目標(biāo)函數(shù),我們可以寫為更加一般的形式
Ω(f)稱為"結(jié)構(gòu)風(fēng)險",用于描述模型f的某些性質(zhì);
第二項(xiàng)的Σ
m l(f(x
i ),y
i )稱為"經(jīng)驗(yàn)風(fēng)險",用于描述模型與訓(xùn)練數(shù)據(jù)的契合度。
C稱為正則化常數(shù),用于對結(jié)構(gòu)風(fēng)險和經(jīng)驗(yàn)風(fēng)險進(jìn)行折中。
上式被稱為"正則化問題",Ω(f)稱為正則化項(xiàng),C為正則化常數(shù)。
6.5 支持向量回歸(SVR)
上面講到的SVM是用于分類任務(wù) 的,而對于回歸任務(wù) ,我們使用SVR。
SVM分類,就是找到一個平面,讓兩個分類集合的支持向量或者所有的數(shù)據(jù)離分類平面最遠(yuǎn);
SVR回歸,就是找到一個回歸平面,讓一個集合的所有數(shù)據(jù)到該平面的距離最近。
SVR假設(shè)f(x)與y之間最多有ε的偏差,即以f(x)為中心,允許f(x)+ε和f(x)-ε的誤差,構(gòu)建一個2ε的間隔。
SVR的形式如下
由于間隔帶的兩側(cè)松弛程度有所不同,所有引入松弛變量ξ
i 和ξ^
i ,則原始問題重寫為
接著我們要求對偶問題。首先引入拉格朗日乘子,可以得到拉格朗日函數(shù)
令L對w、b、ξ
i 、ξ^
i 的偏導(dǎo)為0,可得到
將它們代入L,可以得到對偶問題
上述過程中,要滿足KKT條件
將上面求得的w代入我們原來的模型f(x) = wT x + b,得到SVR的解
由KKT可以看出,對每個樣本(x
i ,y
i )有:
1)(C - α
i )ξ
i =0 ,2)α
i (f(x
i ) - y
i - ε - ξ
i )=0。
于是通過SMO算法得到α
i 之后,若0<α
i <C,則必有ξ
i =0,可以得到b
實(shí)際上,我們更常用的是:選取所有滿足0 < a
i < C的樣本求解b之后取平均值。
若考慮映射到高維空間則有
最終通過上述類似的求解過程,我們得到SVR可以表示為
6.6 核方法
對于SVM和SVR,它們的優(yōu)化問題都是類似下面的式子
而SVR和SVM學(xué)得的模型總能表示為核函數(shù)K(x,x
i )的線性組合,所以上式的模型也可以寫成為核函數(shù)的線性組合
對于上面這個結(jié)論,就是
"表示定理"
人們基于核函數(shù)的學(xué)習(xí)方法,稱為
"核方法" 。最常見的,是通過引入核函數(shù)來將線性學(xué)習(xí)擴(kuò)展為非線性。
下面以"核線性判別分析"(KLDA)為例,演示如何引入核函數(shù)進(jìn)行非線性擴(kuò)展。
我們難以直到映射φ的具體形式,因此使用核函數(shù)K(x,x
i ) = φ(x
i )
T φ(x)來表達(dá)映射和特征空間F。
把J(w)作為式子6.57中的損失函數(shù),令Ω=0,有
由表示定理得,
再由式6.59得
最后編輯于 :2020.02.10 23:25:00
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者 平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
【概述】 SVM訓(xùn)練分類器的方法是尋找到超平面,使正負(fù)樣本在超平面的兩側(cè)(分類正確性即“分得開”),且樣本到超平面...
SVM支持向量機(jī) 一、簡介 支持向量機(jī)(support vector machines)是一種二分類模型,它的目的...
支持向量機(jī) 原理 《機(jī)器學(xué)習(xí)》周志華 6.1 間隔與支持向量 給定訓(xùn)練樣本集 D,分類學(xué)習(xí)最基本的想法就是基于訓(xùn)練...
SVM支持向量機(jī) 本片文章主要記錄在學(xué)習(xí)《統(tǒng)計(jì)學(xué)習(xí)方法》中 SVM 章節(jié)的難點(diǎn),不對詳細(xì)內(nèi)容進(jìn)行講解。主要是分析筆...
寫在最前面 如今機(jī)器學(xué)習(xí)和深度學(xué)習(xí)如此火熱,相信很多像我一樣的普通程序猿或者還在大學(xué)校園中的同學(xué),一定也想?yún)⑴c其中...