2013-04-07 126 views
0

我必须在监督学习中进行优化以获得我的权重。在matlab中权重优化

我必须学习(w1,w2,w3,w4)使得每当我的矢量A = [a1 a2 a3 a4]是1总和w1*a1 + w2*a2 + w3*a3 + w4*a4变得大于0.5,并且当其-1(标签),那么它变得小于0.5的值。

有人可以告诉我如何在Matlab中解决这个问题吗?我知道的一种方法是使用演化算法,采用随机值向量,然后改变以选择最佳的n值。

有没有其他方法可以接近?

+1

你现在在做最多? SO不是为了解决需求问题,而是为了分享知识。 SO成员喜欢评估OP在解决提出的问题中付出的努力量。 – fpe 2013-04-07 17:07:35

+0

@fpe我提出的解决方案之一就是将这些向量传递给SVM,我想它会对线性内核做同样的事情。我也看过'linprog',但我无法理解如何在我的场景中使用它。 – user2230369 2013-04-07 17:34:56

回答

0

你可以使用linprog
A是一个矩阵大小n由4组成的所有n训练4-vecotrs你有。你还应该有一个向量yn元素(每个加1或减1),代表每个训练4-vecvtor的标签。

使用Ay我们可以写一个线性规划(看看doc对我使用的参数的名称)。现在,您没有目标函数,因此您可以简单地将f设置为f = zeros(4,1);
您唯一拥有的是不等式约束(< a_i , w > - .5) * y_i >= 0(其中<.,.>是4-矢量a_i和权重矢量w之间的点积)。
如果我的计算是正确的,这个约束可以写成

cmat = bsxfun(@times, A, y); 

总的来说你

w = linprog(zeros(4,1), -cmat, .5*y);