5

私は現在、アフィン項が追加されている L2-regularized ロジスティック回帰または L2-reg 線形 SVM 問題のいずれかを解決する必要がある問題に取り組んでいます。

たとえば、私の問題は次のとおりです。

min_ w {C*sum_i max(1-w*x_i*y_i,0) + 0.5*||w||^2_2 + w * v }

ここで、v は定数ベクトルです。

もちろん、これは凸の問題であり、通常の方法で解決できますが、この種の大きな問題を解決する必要があるため、liblinearなどの標準ライブラリを使用したいと考えています。

私の質問は、この問題が標準のヒンジ損失 SVM またはロジスティックと同等になるように、データ x、ラベル y、または重み係数 C (おそらくインスタンスごとに異なる C_i に) を変換する方法があるかどうかです。回帰問題?

4

2 に答える 2

5

liblinear などで処理できるものに変換する方法が思いつきません。ただし、この最適化の問題は、汎用切断面最適化ライブラリの 1 つを使用して簡単に解決できます。あなたがしなければならないのは、劣勾配の要素(あなたの場合はちょうど w + v - C sum_i x_i y_i )と目的の値を計算するコードを書くことです。次に、切断面ルーチンで最適な w を見つけることができます。

Shogunには CPA オプティマイザがあり、 dlibにも 1 つあります。私は Shogun のバージョンを使用したことはありませんが、多くの問題で dlib のバージョンを使用しました (私は dlib の作成者でもあります)。

于 2012-02-08T22:42:41.260 に答える
0

既製のトレーニング アルゴリズムを使用して、各データ ポイントのヒンジ損失またはロジスティック回帰にバイアスをかけることができる場合は可能です。方法は次のとおりです。

最後の 2 つの項について平方を完成します。

  0.5 ||w||^2 + w'v 
= 0.5 ||w+v/2||^2 - v'v/2

次に、変数の変更を導入します

u = w+v/2

最適化は次と同等です

min_u C*sum_i max(1-(u-v/2)*x_i*y_i,0) + 0.5*||u||^2_2

これは、b_i = 1+v'x_i*y_i/2 で、次と同等です

min_u   C*sum_i max(b_i - u*x_i*y_i ,0) + 0.5*||u||^2_2

したがって、トレーニング アルゴリズムで 1 をデータ ポイントごとに選択した b_i に置き換えることができる場合、この問題を解決できます。

ほとんどすべてのパッケージは何らかの方法で b_i に対応します。たとえば、上記は次と同等です

min_u   C*sum_i b_i  max(1 - u*x_i*y_i/b_i ,0) + 0.5*||u||^2_2

(b_i>0 と仮定) そのため、パッケージで各ポイントに異なる重みを付けることができる場合、上記の問題を解決できます。

于 2012-11-27T06:45:51.707 に答える