因此,您的模型文件应如下所示:
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 意味着它是一个线性内核(您想使用它)。
模型文件包含支持向量列表,这些支持向量是训练集中“最接近”分离超平面的点,这是 svm 背后的主要思想 - 仅使用数据子集“支持”您的决策边界。通过简单地使用它们的值的加权平均值,这些向量足以定义分离。这些权重是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)