其結果是,你的模型文件應該是這樣的:
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)