从阳光中解释结果模型

时间:2012-08-27 09:28:04

标签: machine-learning svm svmlight

我想用平面分离3D中的2个类的一些点,并认为这应该可以使用支持向量机(SVM)。

所以我设置了以下数据文件(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 个答案:

答案 0 :(得分: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表示它是一个线性内核(您想要使用它)。

模型文件包含支持向量的列表,它们是训练集中与分离超平面“最接近”的点,这是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)