如何进行线性可分的二进制分类?

时间:2015-02-01 13:29:21

标签: matlab machine-learning classification svm cvx

我想解决以下优化问题 -

  

成本函数: 1/2 || W || ^ 2

     

受制于: Y_i(w.X_i - b)> = 1

其中X是700x3矩阵,Y是一个向量,用于存储这些实例的类标签(值为1 / -1),w.X_iw的点积。 {1}}和X_i

我正在使用CVX -

cvx_begin
    variable W(3);
    variable B;
    minimize (0.5*W'*W)
    subject to 
        Y'*(X*W - B) >= 1;
cvx_end

然后,我正在密谋,w1.x1 + w2.x2 - b 哪个似乎没有分离超平面?

我做错了什么?

1 个答案:

答案 0 :(得分:0)

简而言之: 当您执行w1.x1 + w2.x2 - b时,您试图在特定位置指定超平面,这也与指定向量上的特定点相同。要在3D空间中进行操作,您需要使用所有三个维度,因此:w1.x1 + w2.x2 +w3.x3 - b

更长时间 执行此类线性分类时,可以通过两种方式查看任务:

  1. 找到一个分离超平面,使得一个类的所有样本都在一侧,而另一个类的所有样本都在另一侧。

  2. 找到样本所在的多维空间的投影,形成一条单独的线条,使得线条上有一个明确区分它们的点。

  3. 这些是相同的任务,因为2中的单个维度实质上是每个样本离分离超平面的距离(以及所述样本在哪一侧)。我发现考虑到这两个观点是有帮助的,特别是因为分离超平面是与单维向量正交的平面。

    因此,在您处理的情况下,模型提供的权重向量w用于将矩阵X中的样本投影到单维线上并且偏移{{1} }表示沿该向量的哪个点发生分离超平面。通过从投影值中减去b,它们被移位,使得这个超平面是与点0处的线正交的超平面,这使得简单的阈值处理。