libSVM鬆弛變數問題

2021-06-13 17:27:23 字數 1082 閱讀 6239

因為鬆弛變數是非負的,因此最終的結果是要求間隔可以比1小。但是當某些點出現這種間隔比1小的情況時(這些點也叫離群點),意味著我們放棄了對這些點的精確分類,而這對我們的分類器來說是種損失。但是放棄這些點也帶來了好處,那就是使分類面不必向這些點的方向移動,因而可以得到更大的幾何間隔(在低維空間看來,分類邊界也更平滑)。顯然我們必須權衡這種損失和好處。好處很明顯,我們得到的分類間隔越大,好處就越多。回顧我們原始的硬間隔分類對應的優化問題:

||w||2就是我們的目標函式(當然係數可有可無),希望它越小越好,因而損失就必然是乙個能使之變大的量(能使它變小就不叫損失了,我們本來就希望目標函式值越小越好)。那如何來衡量損失,有兩種常用的方式,有人喜歡用

而有人喜歡用

其中l都是樣本的數目。兩種方法沒有大的區別。如果選擇了第一種,得到的方法的就叫做二階軟間隔分類器,第二種就叫做一階軟間隔分類器。把損失加入到目標函式裡的時候,就需要乙個懲罰因子(cost,也就是libsvm的諸多引數中的c),原來的優化問題就變成了下面這樣:

這個式子有這麼幾點要注意:

一是並非所有的樣本點都有乙個鬆弛變數與其對應。實際上只有「離群點」才有,或者也可以這麼看,所有沒離群的點鬆弛變數都等於0(對負類來說,離群點就是在前面圖中,跑到h2右側的那些負樣本點,對正類來說,就是跑到h1左側的那些正樣本點)。

二是鬆弛變數的值實際上標示出了對應的點到底離群有多遠,值越大,點就越遠。

三是懲罰因子c決定了你有多重視離群點帶來的損失,顯然當所有離群點的鬆弛變數的和一定時,你定的c越大,對目標函式的損失也越大,此時就暗示著你非常不願意放棄這些離群點,最極端的情況是你把c定為無限大,這樣只要稍有乙個點離群,目標函式的值馬上變成無限大,馬上讓問題變成無解,這就退化成了硬間隔問題。

四是懲罰因子c不是乙個變數,整個優化問題在解的時候,c是乙個你必須事先指定的值,指定這個值以後,解一下,得到乙個分類器,然後用測試資料看看結果怎麼樣,如果不夠好,換乙個c的值,再解一次優化問題,得到另乙個分類器,再看看效果,如此就是乙個引數尋優的過程,但這和優化問題本身決不是一回事,優化問題在解的過程中,c一直是定值,要記住。

五是儘管加了鬆弛變數這麼一說,但這個優化問題仍然是乙個優化問題(汗,這不廢話麼),解它的過程比起原始的硬間隔問題來說,沒有任何更加特殊的地方。

SVM入門(八)鬆弛變數

現在我們已經把乙個本來線性不可分的文字分類問題,通過對映到高維空間而變成了線性可分的。就像下圖這樣 圓形和方形的點各有成千上萬個 畢竟,這就是我們訓練集中文件的數量嘛,當然很大了 現在想象我們有另乙個訓練集,只比原先這個訓練集多了一篇文章,對映到高維空間以後 當然,也使用了相同的核函式 也就多了乙個...

SVM入門(八)鬆弛變數

現在我們已經把乙個本來線性不可分的文字分類問題,通過對映到高維空間而變成了線性可分的。就像下圖這樣 圓形和方形的點各有成千上萬個 畢竟,這就是我們訓練集中文件的數量嘛,當然很大了 現在想象我們有另乙個訓練集,只比原先這個訓練集多了一篇文章,對映到高維空間以後 當然,也使用了相同的核函式 也就多了乙個...

SVM入門(九)鬆弛變數(續)

接下來要說的東西其實不是鬆弛變數本身,但由於是為了使用鬆弛變數才引入的,因此放在這裡也算合適,那就是懲罰因子c。回頭看一眼引入了鬆弛變數以後的優化問題 注意其中c的位置,也可以回想一下c所起的作用 表徵你有多麼重視離群點,c越大越重視,越不想丟掉它們 這個式子是以前做svm的人寫的,大家也就這麼用,...