2

我想解决一个凸优化问题。我需要最小化(1/2)*(||W||^2). W是一个变量向量。这里还有一个约束:y(i)*(transpose(W)*x(i)+b)>=1. 这是我们需要使用SVM来解决的问题。所以Y=[1;1;1;-1;-1]。b 也是一个变量向量,它是截距项。我们需要找到最优的 W 和最优的 b 以使(1/2)*(||W||^2)最小值。x(i) 是我们要分类的域中的点。

这是我编写的代码,但它是错误的。它只是行不通。

cvx_begin
    variables W(2, 1) b(5, 1)
    minimize( 0.5*(pow_cvx(norm(W, 2), 2, 2)) )
    subject to
        Y*(x*W+b) >= One
cvx_end
4

1 回答 1

2

如果不提供重现您的错误消息的代码,很难猜测 CVX 的问题。但作为第一个提示,您可以将问题中的目标修改为

cvx_begin
    variables W(2, 1) b(5, 1)
    minimize( norm(W, 2) )
    subject to
        Y*(x*W+b) >= One
cvx_end

,这将给出相同的最优解。您的目标形式(1/2)*(||W||^2)通常用于推导,以使数学更易于处理,但您不需要这种形式的 CVX。否则你可以写

cvx_begin
    variables W(2, 1) b(5, 1)
    minimize( 0.5*sum(W.*W) )
    subject to
        Y*(x*W+b) >= One
cvx_end
于 2013-10-11T07:57:44.383 回答