2011-09-02 77 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维点,现在我用它的图像),它确实工作得更好。 –