2012-08-27 98 views
1

我想用一個平面在3D中分離出2個類的某些點,並認爲這應該可以使用支持向量機(SVM)。來自svnlight的解釋結果模型

所以我成立了下列數據文件(data.txt中)與svmlight進行分析:

-1 1:1 2:1 3:0 
1 1:1 2:2 3:0 
-1 1:3 2:2 3:0 
1 1:3 2:3 3:0 
-1 1:5 2:3 3:0 
1 1:5 2:4 3:0 
-1 1:7 2:4 3:0 
1 1:7 2:5 3:0 
-1 1:1 2:1 3:2 
1 1:1 2:2 3:2 
-1 1:3 2:2 3:2 
1 1:3 2:3 3:2 
-1 1:5 2:3 3:2 
1 1:5 2:4 3:2 
-1 1:7 2:4 3:2 
1 1:7 2:5 3:2 

執行:

./svm_learn data.txt model 

不幸的是,我不知道如何解釋模型以及如何描述分離平面。

你能幫忙嗎?

回答

1

其結果是,你的模型文件應該是這樣的:

SVM-light Version V6.02 
0 # kernel type 
3 # kernel parameter -d 
1 # kernel parameter -g 
1 # kernel parameter -s 
1 # kernel parameter -r 
empty# kernel parameter -u 
3 # highest feature index 
16 # number of training documents 
17 # number of support vectors plus 1 
0.85699902 # threshold b, each following line is a SV (starting with alpha*y) 
-0.035708292619498309405923208714739 1:5 2:3 3:0 # 
-0.035708292619498309405923208714739 1:1 2:1 3:2 # 
0.035708292619498309405923208714739 1:1 2:2 3:0 # 
-0.035708292619498309405923208714739 1:1 2:1 3:0 # 
0.035708292619498309405923208714739 1:7 2:5 3:2 # 
-0.035708292619498309405923208714739 1:7 2:4 3:2 # 
0.035708292619498309405923208714739 1:1 2:2 3:2 # 
-0.035708292619498309405923208714739 1:5 2:3 3:2 # 
0.035708292619498309405923208714739 1:3 2:3 3:0 # 
0.035708292619498309405923208714739 1:7 2:5 3:0 # 
-0.035708292619498309405923208714739 1:7 2:4 3:0 # 
0.035708292619498309405923208714739 1:3 2:3 3:2 # 
-0.035708292619498309405923208714739 1:3 2:2 3:0 # 
0.035708292619498309405923208714739 1:5 2:4 3:0 # 
-0.035708292619498309405923208714739 1:3 2:2 3:2 # 
0.035708292619498309405923208714739 1:5 2:4 3:2 # 

這些模型的所有參數。前9個值是你的模型的配置(使用內核等)。

您可以通過執行./svm_learn --help來讀取所有參數信息,特別是kernel = 0意味着它是一個線性內核(您想使用它)。

模型文件中包含的支持向量這是從訓練一套是點列表「最接近」分離超平面,這是背後支持向量機主的想法 - 「支持」您的決策邊界僅數據的子集。通過簡單地使用它們的值的加權平均值,這些矢量足以定義分離。這些權重爲alpha參數,可在優化過程中找到(並位於文件中)。爲了簡單起見,這些權重已經乘以相應的標籤(+1-1),以破壞它們來自分離超平面的哪一個「側面」。

對於線性內核,以下支持向量的解釋非常簡單。你有17個參數,首先,有一個b值,你的超平面的一個自由參數,然後 - 16個支持向量。要轉換的支持向量形式

alphay_i 1:s_i_1 2:s_i_2 3:s_i_3 

簡單地計算,這導致的分離超平面正常(垂直矢量)的方程中的總和

w = SUM_i alphay_i (s_i_1,s_i_2,s_i_3) = SUM_i alphay_i s_i 

。您的分離超平面的整個方程現在處於的形式:

<w,x> + b = 0 

其中w是這個總和,b預先定義的「攔截」參數(0.85699902你的情況)和<w,x>是一個標準的標量積。

所以對於線性內核將其簡化

w'x + b = 0 

一般情況下,當你使用一些更復雜的內核(如RBF甚至多項式),你不能獲得實際的超平面的參數,因爲這個對象是特徵空間(所以對於RBF情況它具有無限多的維度)。您只能有其功能表格

<w,x> = SUM_i alphay_i K(s_i, x)