2

凸最適化問題を解きたい。最小化する必要があり(1/2)*(||W||^2)ます。また、W は可変ベクトルです。ここにも a 制約があります: 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 に答える