5

を線形にする私は私が追加アフィン用語を持っている場合は、L2-正則ロジスティック回帰またはL2-REG線形SVMの問題のいずれかを解決しなければならない問題で現在働いています。アフィン用語を追加すると、SVM /ロジスティック回帰目的関数

ですから、例えば私の問題は、次のとおりです。

vは定数ベクトルである
min_ w {C*sum_i max(1-w*x_i*y_i,0) + 0.5*||w||^2_2 + w * v } 

。もちろん

これは、凸問題であり、通常の方法で解決することができますが、私はこのタイプの多くの大規模な問題を解決しなければならないので、私は非常に多く、このような liblinear として標準ライブラリを使用したいと思います。

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

答えて

5

私はliblinearのようなものによって処理することができるものにそれを有効にする方法を考えることはできません。しかし、この最適化問題は、一般的な目的の切断面最適化ライブラリの1つで簡単に解くことができます。あなたがしなければならないのは、サブグラディエントの要素を計算するためのコード(あなたの場合w + v-C sum_i x_i y_i)と目的の値を書くことだけです。次に、切断平面ルーチンが最適なwを見つけることができる。

Shogunともdlib内の1つの中にCPAオプティマイザがあります。私はShogunのバージョンを使っていませんが、私はdlibで多くの問題を扱っています(私もdlibの作者です)。

0

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

最後の二つの条件での正方形を完了します。

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

その後、あなたの最適化は、その後b_iとされ、

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

に相当し、変数

u = w+v/2 

の変更を導入= 1 + v'x_i * y_i/2は、

と等価である0
min_u C*sum_i max(b_i - u*x_i*y_i ,0) + 0.5*||u||^2_2 

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

ほぼすべてのパッケージには、何らかの形でb_iに対応します。例えば、上記(b_i> 0を仮定して)

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

に相当しますので、あなたのパッケージはあなたが異なっ各ポイントの重み付けができます場合は、上記の問題を解決することができます。

関連する問題