2011-09-02 79 views
0

我試圖在一些2D點上線性SVM分類的Liblinear(我正在使用一個簡單的python gui爲2個類添加點,然後繪製分隔類的線),但即使我使用偏置選項(-B 1)進行訓練,我得到的偏差非常接近零(分離線幾乎穿過原點)。Liblinear偏差非常接近零

我也嘗試過簡單培訓2點設置:

-1 1:10 2:30 
+1 1:10 2:80 

,但我仍然得到一個非常小的偏差(通過原點,而不是在XY平面上的水平線路過,我想這一條線應該)。這是我的輸出向量w:

0.2003362041634111, 
-0.03465897160331861, 
0.0200336204163411 

我在做什麼錯?

回答

1

我不確定你做錯了什麼。

從liblinear FAQ:

問:LIBLINEAR給出了相同的結果LIBSVM線性內核?

它們應該非常相似。但是,有時候這種差異可能不是很小。請注意,LIBLINEAR默認不使用偏倚項b。 如果您觀察到非常不同的結果,請嘗試爲LIBLINEAR設置-B 1。 這會將偏差項添加到損失函數以及 正則項(w^Tw + b^2)中。然後,結果應該更接近。

這是說liblinear試圖使偏項儘可能小。如果它可以將其設置爲零,並且仍然可以獲得良好的訓練集精度,那麼它會。

沒有什麼特別好的理由可以想象規則化偏見會提供更好的分類器,所以很多其他學習系統沒有進入正則化術語。然而,在維度非常高的「現實世界」問題中,數據很可能不需要偏差術語就可以分離,因此規則化它不會造成損害,並且可以更容易實施。

+0

我試過高維數據庫(我嘗試了一些隨機的N維點,現在我用它的圖像),它確實工作得更好。 –