matlab中的权重优化

时间:2013-04-07 16:06:06

标签: algorithm matlab optimization linear-programming

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

我必须学习值(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 个答案:

答案 0 :(得分:0)

您可以使用linprog执行此操作 让A成为一个大小为n的矩阵,由4个由所有n训练4-vecotrs组成的矩阵组成。您还应该有一个带有y元素的向量n(每个元素加上或减去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 );