5

Vowpal Wabbitで一般最小二乗回帰を実行した人は誰ですか?私はそれが正確な解と同じ解を返すことを確認しようとしています。つまり、を最小化するために、を選択すると、||y - X a||_2 + ||Ra||_2(Rは正則化です)という答えが得られます。 a = (X^T X + R^T R)^(-1) X^T yこのタイプの回帰を行うには、numpy pythonで約5行が必要です。Vowpal Wabbitでの普通最小二乗回帰

VWのドキュメンテーションは、これが(おそらく "二乗"ロス関数)できることを示唆していますが、これまでのところ、私はそれがPythonの結果に近づくことさえできませんでした。 Becuaseは、私は単にデフォルトの損失関数を呼び出すよさの二乗:

INPUT.TXTは

1.4 | 0:3.4 1:-1.2 2:4.0 .... etc 

のようなラインを持っている

$ vw-varinfo input.txt 

私は呼んVWでのいくつかの他のパラメータが必要ですか?私は(むしろ最小限の)ドキュメントをgrokすることができません。

+0

ここで何が問題なのか不明です。あなたは何を期待するかを説明する詳細情報を提供できますか? – Spaceghost

+1

vwは、すべての例についてモデルの重み(OLSの係数)をわずかに更新するオンラインアルゴリズムであり、決して戻ったり来たりしないことを覚えておいてください。例の数がフィーチャの数よりはるかに多くない場合、特にバッチアルゴリズムに似たパフォーマンスを得たい場合は、コンバージェンスまで複数のパスを入力する必要があります(たとえば、 '-c --passes 100 ')。 – arielf

+0

"--loss_function classic"は、バニラ最小二乗を与えます。 「 - 重要な機能の二乗」は、「オンライン重要度の重みの更新」(http://arxiv.org/abs/1011.1576参照)を持っているため、しばしばそれを上回ります。 –

答えて

3

私はあなたがこの構文(vowpalのwabbitバージョン7.3.1)を使用すべきだと思う:

vw -d input.txt -f linear_model -c --passes 50 --holdout_off --loss_function squared --invert_hash model_readable.txt 

この構文は、ディスク上のモデルの記録とキャッシュを書き、あなたのINPUT.TXTファイルを読むためにVWを指示します(マルチパス収束に必要)を計算し、二乗損失関数を用いて回帰を適合させる。さらに、最終的には、モデル係数をというmodel_readable.txtというファイルに読み込み可能に書き出します。

--holdout_offオプションは、サンプル外の自動損失計算を抑制するために、最近の追加のオプションです(以前のバージョンを使用している場合は削除する必要があります)。

確率的勾配降下に基づく回帰分析は、正則化が適用されていない場合と、通過回数が多い場合にのみ、正確な解に似た係数のベクトルを提供します(50以上を提案します)入力ファイルの行をランダムにシャッフルするとアルゴリズムの収束性が向上します)。

関連する問題