关于SVM,面试官们都怎么问
作者?| WEIWEI? 整理?|?NewBeeNLP
公式較多,希望大家耐心慢慢理清楚?
寫在前面
持續(xù)準(zhǔn)備面試中。。。準(zhǔn)備的過程中,慢慢發(fā)現(xiàn),如果死記硬背的話很難,可當(dāng)推導(dǎo)一遍并且細(xì)細(xì)研究里面的緣由的話,面試起來應(yīng)該什么都不怕,問什么問題都可以由公式推導(dǎo)得到結(jié)論,不管問什么,公式擺在那里,影響這個(gè)公式的變量就在那,你問什么我答什么。。共勉!!
一、SVM簡(jiǎn)介
SVM 是一種二類分類模型。它的基本思想是在特征空間中尋找間隔最大的分離超平面使數(shù)據(jù)得到高效的二分類,具體來講,有三種情況(不加核函數(shù)的話就是個(gè)線性模型,加了之后才會(huì)升級(jí)為一個(gè)非線性模型):
當(dāng)訓(xùn)練樣本線性可分時(shí),通過硬間隔最大化,學(xué)習(xí)一個(gè)線性分類器,即線性可分支持向量機(jī);
當(dāng)訓(xùn)練數(shù)據(jù)近似線性可分時(shí),引入松弛變量,通過軟間隔最大化,學(xué)習(xí)一個(gè)線性分類器,即線性支持向量機(jī);
當(dāng)訓(xùn)練數(shù)據(jù)線性不可分時(shí),通過使用核技巧及軟間隔最大化,學(xué)習(xí)非線性支持向量機(jī)。
二、SVM 為什么采用間隔最大化(與感知機(jī)的區(qū)別)
當(dāng)訓(xùn)練數(shù)據(jù)線性可分時(shí),存在無窮個(gè)分離超平面可以將兩類數(shù)據(jù)正確分開。感知機(jī)利用誤分類最小策略,求得分離超平面,不過此時(shí)的解有無窮多個(gè)。線性可分支持向量機(jī)利用間隔最大化求得最優(yōu)分離超平面,這時(shí),解是唯一的。另一方面,此時(shí)的分隔超平面所產(chǎn)生的分類結(jié)果是最魯棒的,對(duì)未知實(shí)例的泛化能力最強(qiáng)。
三、SVM的目標(biāo)(硬間隔)
有兩個(gè)目標(biāo):
第一個(gè)是使間隔最大化,
第二個(gè)是使樣本正確分類,
稍微解釋一下, 是超平面參數(shù),目標(biāo)一是從點(diǎn)到面的距離公式化簡(jiǎn)來的,具體不展開,目標(biāo)二就相當(dāng)于感知機(jī),只是把大于等于0進(jìn)行縮放變成了大于等于1,為了后面的推導(dǎo)方便。有了兩個(gè)目標(biāo),寫在一起,就變成了svm的終極目標(biāo):
四、求解目標(biāo)(硬間隔)
從上面的公式看出,這是一個(gè)有約束條件的最優(yōu)化問題,用拉格朗日函數(shù)來解決。
上式的拉格朗日函數(shù)為:
在滿足Slater定理的時(shí)候,且過程滿足KKT條件的時(shí)候,原問題轉(zhuǎn)換成對(duì)偶問題:
先求內(nèi)部最小值,對(duì) 和 求偏導(dǎo)并令其等于0可得:
將其代入到上式中去可得到
此時(shí)需要求解 ,利用SMO(序列最小優(yōu)化)算法:
SMO算法的基本思路是每次選擇兩個(gè)變量 和 ,選取的兩個(gè)變量所對(duì)應(yīng)的樣本之間間隔要盡可能大,因?yàn)檫@樣更新會(huì)帶給目標(biāo)函數(shù)值更大的變化。SMO算法之所以高效,是因?yàn)閮H優(yōu)化兩個(gè)參數(shù)的過程實(shí)際上僅有一個(gè)約束條件,其中一個(gè)可由另一個(gè)表示,這樣的二次規(guī)劃問題具有閉式解。
五、軟間隔
不管直接在原特征空間,還是在映射的高維空間,我們都假設(shè)樣本是線性可分的。雖然理論上我們總能找到一個(gè)高維映射使數(shù)據(jù)線性可分,但在實(shí)際任務(wù)中,尋找一個(gè)合適的核函數(shù)核很困難。此外,由于數(shù)據(jù)通常有噪聲存在,一味追求數(shù)據(jù)線性可分可能會(huì)使模型陷入過擬合,因此,我們放寬對(duì)樣本的要求,允許少量樣本分類錯(cuò)誤。這樣的想法就意味著對(duì)目標(biāo)函數(shù)的改變,之前推導(dǎo)的目標(biāo)函數(shù)里不允許任何錯(cuò)誤,并且讓間隔最大,現(xiàn)在給之前的目標(biāo)函數(shù)加上一個(gè)誤差,就相當(dāng)于允許原先的目標(biāo)出錯(cuò),引入松弛變量 ,公式變?yōu)?#xff1a;
那么這個(gè)松弛變量怎么計(jì)算呢,最開始試圖用0,1損失去計(jì)算,但0,1損失函數(shù)并不連續(xù),求最值時(shí)求導(dǎo)的時(shí)候不好求,所以引入合頁損失(hinge loss):
函數(shù)圖長(zhǎng)這樣:
理解起來就是,原先制約條件是保證所有樣本分類正確, ,現(xiàn)在出現(xiàn)錯(cuò)誤的時(shí)候,一定是這個(gè)式子不被滿足了,即 錯(cuò)誤 ,衡量一下錯(cuò)了多少呢?因?yàn)樽筮呉欢ㄐ∮?,那就跟1比較,因?yàn)?是邊界,所以用1減去 來衡量錯(cuò)誤了多少,所以目標(biāo)變?yōu)?#xff08;正確分類的話損失為0,錯(cuò)誤的話付出代價(jià)):
但這個(gè)代價(jià)需要一個(gè)控制的因子,引入C>0,懲罰參數(shù),即:
可以想象,C越大說明把錯(cuò)誤放的越大,說明對(duì)錯(cuò)誤的容忍度就小,反之亦然。當(dāng)C無窮大時(shí),就變成一點(diǎn)錯(cuò)誤都不能容忍,即變成硬間隔。實(shí)際應(yīng)用時(shí)我們要合理選取C,C越小越容易欠擬合,C越大越容易過擬合。
所以軟間隔的目標(biāo)函數(shù)為:
其中:
六、軟間隔求解
與硬間隔類似:
上式的拉格朗日函數(shù)為:
在滿足Slater定理的時(shí)候,且過程滿足KKT條件的時(shí)候,原問題轉(zhuǎn)換成對(duì)偶問題:
先求內(nèi)部最小值,對(duì) , 和 求偏導(dǎo)并令其等于 可得:
將其代入到上式中去可得到,注意 被消掉了:
此時(shí)需要求解 ,同樣利用SMO(序列最小優(yōu)化)算法。
七. 核函數(shù)
為什么要引入核函數(shù):
當(dāng)樣本在原始空間線性不可分時(shí),可將樣本從原始空間映射到一個(gè)更高維的特征空間,使得樣本在這個(gè)特征空間內(nèi)線性可分。而引入這樣的映射后,所要求解的對(duì)偶問題的求解中,無需求解真正的映射函數(shù),而只需要知道其核函數(shù)。核函數(shù)的定義:K(x,y)=<?(x),?(y)>,即在特征空間的內(nèi)積等于它們?cè)谠紭颖究臻g中通過核函數(shù) K 計(jì)算的結(jié)果。一方面數(shù)據(jù)變成了高維空間中線性可分的數(shù)據(jù),另一方面不需要求解具體的映射函數(shù),只需要給定具體的核函數(shù)即可,這樣使得求解的難度大大降低。
用自己的話說就是,在SVM不論是硬間隔還是軟間隔在計(jì)算過程中,都有X轉(zhuǎn)置點(diǎn)積X,若X的維度低一點(diǎn)還好算,但當(dāng)我們想把X從低維映射到高維的時(shí)候(讓數(shù)據(jù)變得線性可分時(shí)),這一步計(jì)算很困難,等于說在計(jì)算時(shí),需要先計(jì)算把X映射到高維的的?(x),再計(jì)算?(x1)和?(x2)的點(diǎn)積,這一步計(jì)算起來開銷很大,難度也很大,此時(shí)引入核函數(shù),這兩步的計(jì)算便成了一步計(jì)算,即只需把兩個(gè)x帶入核函數(shù),計(jì)算核函數(shù),舉個(gè)列子一目了然(圖片來自:從零推導(dǎo)支持向量機(jī)):
個(gè)人對(duì)核函數(shù)的理解:核函數(shù)就是一個(gè)函數(shù),接收兩個(gè)變量,這兩個(gè)變量是在低維空間中的變量,而核函數(shù)求的值等于將兩個(gè)低維空間中的向量映射到高維空間后的內(nèi)積。
八. 如何確定一個(gè)函數(shù)是核函數(shù)
驗(yàn)證正定核啥的,咱也不太懂,給出:
設(shè) , 是定義在 上的對(duì)稱函數(shù),如果對(duì)任意的 , 對(duì)應(yīng)的Gram矩陣 是半正定矩陣,則 是正定核
所以不懂,就用人家確定好的常見核函數(shù)及其優(yōu)缺點(diǎn):
九. 如何選擇核函數(shù):
當(dāng)特征維數(shù) 超過樣本數(shù) 時(shí) (文本分類問題通常是這種情況), 使用線性核;
當(dāng)特征維數(shù) 比較小. 樣本數(shù) 中等時(shí), 使用RBF核;
當(dāng)特征維數(shù) 比較小. 樣本數(shù) 特別大時(shí), 支持向量機(jī)性能通常不如深度神經(jīng)網(wǎng)絡(luò)
十. 關(guān)于支持向量的問題
1. 先說硬間隔:
先看KKT條件
主問題可行:
對(duì)偶問題可行:
互補(bǔ)松弛:
支持向量,對(duì)偶變量 對(duì)應(yīng)的樣本;
線性支持向量機(jī)中, 支持向量是距離劃分超平面最近的樣本, 落在最大間隔邊界上。
證明:由線性支持向量機(jī)的KKT 條件可知,。當(dāng) 時(shí),,即
支持向量機(jī)的參數(shù) (w; b) 僅由支持向量決定, 與其他樣本無關(guān)。
2. 再說軟間隔:
先看kkt條件:
主問題可行:
對(duì)偶問題可行:
互補(bǔ)松弛:
經(jīng)過SMO后,求得 , 。
對(duì)于任意樣本 ,
若 ,此樣本點(diǎn)不是支持向量,該樣本對(duì)模型沒有任何的作用
若 ,此樣本是一個(gè)支持向量(同硬間隔)
若滿足 ,進(jìn)一步地,
若 , 則 ,即剛好 ,樣本恰好在最大間隔邊界上
若 ,有 ,此時(shí)若 則該樣本落在最大間隔內(nèi)部
若 則該樣本落在最大間隔內(nèi)部(不屬于自己的另一部分)即被錯(cuò)誤分類 如圖:
十一. 談?wù)凷VM的損失函數(shù)
此處說的是軟間隔:
先看軟間隔的基本型形式:
稍微做一點(diǎn)變化:
這樣寫是為了符合標(biāo)準(zhǔn)的損失函數(shù)+正則化的樣子,其中, 第一項(xiàng)稱為經(jīng)驗(yàn)風(fēng)險(xiǎn), 度量了模型對(duì)訓(xùn)練數(shù)據(jù)的擬合程度; 第二項(xiàng)稱為結(jié)構(gòu)風(fēng)險(xiǎn), 也稱為正則化項(xiàng), 度量 了模型自身的復(fù)雜度. 正則化項(xiàng)削減了假設(shè)空間, 從而 降低過擬合風(fēng)險(xiǎn). λ 是個(gè)可調(diào)節(jié)的超參數(shù), 用于權(quán)衡經(jīng)驗(yàn)風(fēng)險(xiǎn)和結(jié)構(gòu)風(fēng)險(xiǎn).
其中:
這樣的話給上式乘以mc,就會(huì)變成上上式了。
十二. 為什么SVM對(duì)缺失數(shù)據(jù)敏感?
這里說的缺失數(shù)據(jù)是指缺失某些特征數(shù)據(jù),向量數(shù)據(jù)不完整。SVM 沒有處理缺失值的策略。而 SVM 希望樣本在特征空間中線性可分,所以特征空間的好壞對(duì)SVM的性能很重要。缺失特征數(shù)據(jù)將影響訓(xùn)練結(jié)果的好壞。
十三. SVM的優(yōu)缺點(diǎn):
優(yōu)點(diǎn):
由于SVM是一個(gè)凸優(yōu)化問題,所以求得的解一定是全局最優(yōu)而不是局部最優(yōu)。
不僅適用于線性線性問題還適用于非線性問題(用核技巧)。
擁有高維樣本空間的數(shù)據(jù)也能用SVM,這是因?yàn)閿?shù)據(jù)集的復(fù)雜度只取決于支持向量而不是數(shù)據(jù)集的維度,這在某種意義上避免了“維數(shù)災(zāi)難”。
理論基礎(chǔ)比較完善(例如神經(jīng)網(wǎng)絡(luò)就更像一個(gè)黑盒子)。
缺點(diǎn):
二次規(guī)劃問題求解將涉及m階矩陣的計(jì)算(m為樣本的個(gè)數(shù)), 因此SVM不適用于超大數(shù)據(jù)集。(SMO算法可以緩解這個(gè)問題)
只適用于二分類問題。(SVM的推廣SVR也適用于回歸問題;可以通過多個(gè)SVM的組合來解決多分類問題)看了這篇文章你還不懂SVM你就來打我[1]SVM 高頻面試題[2]從零推導(dǎo)支持向量機(jī)(SVM)[3]
本文參考資料
[1]
看了這篇文章你還不懂SVM你就來打我: https://zhuanlan.zhihu.com/p/49331510
[2]SVM 高頻面試題: https://zhuanlan.zhihu.com/p/43827793
[3]從零推導(dǎo)支持向量機(jī)(SVM): https://zhuanlan.zhihu.com/p/31652569
-?END?-
往期精彩回顧適合初學(xué)者入門人工智能的路線及資料下載機(jī)器學(xué)習(xí)在線手冊(cè)深度學(xué)習(xí)在線手冊(cè)AI基礎(chǔ)下載(pdf更新到25集)本站qq群1003271085,加入微信群請(qǐng)回復(fù)“加群”獲取一折本站知識(shí)星球優(yōu)惠券,請(qǐng)回復(fù)“知識(shí)星球”喜歡文章,點(diǎn)個(gè)在看
總結(jié)
以上是生活随笔為你收集整理的关于SVM,面试官们都怎么问的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 武汉大学提出全球最大的口罩遮挡人脸数据集
- 下一篇: 【白话机器学习】算法理论+实战之PCA降