7. SVM松弛变量
我們之前討論的情況都是建立在樣例線性可分的假設(shè)上,當(dāng)樣例線性不可分時,我們可以嘗試使用核函數(shù)來將特征映射到高維,這樣很可能就可分了。然而,映射后我們也不能100%保證可分。那怎么辦呢,我們需要將模型進(jìn)行調(diào)整,以保證在不可分的情況下,也能夠盡可能地找出分隔超平面。
看下面兩張圖:
可以看到一個離群點(可能是噪聲)可以造成超平面的移動,間隔縮小,可見以前的模型對噪聲非常敏感。再有甚者,如果離群點在另外一個類中,那么這時候就是線性不可分了。
這時候我們應(yīng)該允許一些點游離并在在模型中違背限制條件(函數(shù)間隔大于1)。我們設(shè)計得到新的模型如下(也稱軟間隔):
引入非負(fù)參數(shù)后(稱為松弛變量),就允許某些樣本點的函數(shù)間隔小于1,即在最大間隔區(qū)間里面,或者函數(shù)間隔是負(fù)數(shù),即樣本點在對方的區(qū)域中。而放松限制條件后,我們需要重新調(diào)整目標(biāo)函數(shù),以對離群點進(jìn)行處罰,目標(biāo)函數(shù)后面加上的就表示離群點越多,目標(biāo)函數(shù)值越大,而我們要求的是盡可能小的目標(biāo)函數(shù)值。
這里的C是離群點的權(quán)重,C越大表明離群點對目標(biāo)函數(shù)影響越大,也就是越不希望看到離群點。我們看到,目標(biāo)函數(shù)控制了離群點的數(shù)目和程度,使大部分樣本點仍然遵守限制條件。
引入松弛變量(懲罰因子)后,有一種很常用的變形可以用來解決分類問題中樣本的“偏斜”問題。
先來說說樣本的偏斜問題,也叫數(shù)據(jù)集偏斜(unbalanced),它指的是參與分類的兩個類別(也可以指多個類別)樣本數(shù)量差異很大。比如說正類有10000個樣本,而負(fù)類只給了100個,這會引起的問題顯而易見,可以看看下面的圖:
方形的點是負(fù)類。,,是根據(jù)給的樣本算出來的分類面,由于負(fù)類的樣本很少很少,所以有一些本來是負(fù)類的樣本點沒有提供,比如圖中兩個灰色的方形點,如果這兩個點有提供的話,那算出來的分類面應(yīng)該是,和,他們顯然和之前的結(jié)果有出入,實際上負(fù)類給的樣本點越多,就越容易出現(xiàn)在灰色點附近的點,我們算出的結(jié)果也就越接近于真實的分類面。但現(xiàn)在由于偏斜的現(xiàn)象存在,使得數(shù)量多的正類可以把分類面向負(fù)類的方向“推”,因而影響了結(jié)果的準(zhǔn)確性。
對付數(shù)據(jù)集偏斜問題的方法之一就是在懲罰因子上作文章,那就是給樣本數(shù)量少的負(fù)類更大的懲罰因子,表示我們重視這部分樣本,因此我們的目標(biāo)函數(shù)中因松弛變量而損失的部分就變成了:
其中是正樣本,是負(fù)樣本。libSVM這個算法包在解決偏斜問題的時候用的就是這種方法。
那和怎么確定呢?它們的大小是試出來的(參數(shù)調(diào)優(yōu)),但是他們的比例可以有些方法來確定。咱們先假定說是5,那確定的一個很直觀的方法就是使用兩類樣本數(shù)的比來算,對應(yīng)到剛才舉的例子,就可以定為500(因為10,000:100=100:1)。
但是這樣并不夠好,回看剛才的圖,你會發(fā)現(xiàn)正類之所以可以“欺負(fù)”負(fù)類,其實并不是因為負(fù)類樣本少,真實的原因是負(fù)類的樣本分布的不夠廣(沒擴(kuò)充到負(fù)類本應(yīng)該有的區(qū)域)。所以給和確定比例更好的方法應(yīng)該是衡量他們分布的程度。比如可以算算他們在空間中占據(jù)了多大的體積,例如給負(fù)類找一個超球——就是高維空間里的球啦——它可以包含所有負(fù)類的樣本,再給正類找一個,比比兩個球的半徑,就可以大致確定分布的情況。顯然半徑大的分布就比較廣,就給小一點的懲罰因子。
但是這樣還不夠好,因為有的類別樣本確實很集中,這不是提供的樣本數(shù)量多少的問題,這是類別本身的特征,這個時候即便超球的半徑差異很大,也不應(yīng)該賦予兩個類別不同的懲罰因子。這樣應(yīng)該怎么解決呢……實際中,完美的方法是沒有的,只要根據(jù)需要,選擇實現(xiàn)簡單又合用的就好了。
轉(zhuǎn)載于:https://www.cnblogs.com/houkai/p/3392497.html
總結(jié)
以上是生活随笔為你收集整理的7. SVM松弛变量的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微软的翻译书签
- 下一篇: linux c++ 运行时报 段错误 的