これは、スパースSVDの推奨事項を実際に実装したり、ソースコードを調べて詳細を調べたい人のために、質問の「方法」の部分を試して回答することです。市販のFOSSソフトウェアを使用して、スパースSVDをモデル化できます。たとえば、vowpal wabbit
、libFM
、またはredsvd
。
vowpal wabbit
「SVDライク」アルゴリズムの3つの実装があります(それぞれ3つのコマンドラインオプションのいずれかで選択可能)。厳密に言えば、これらは純粋な「古典的な「SVD」ではなく、「近似、反復、行列因子分解」と呼ばれるべきですが、SVDと密接に関連しています。ゼロ)行列。
Netflixスタイルの映画の推奨を行うための完全で実用的なレシピvowpal wabbit
と、--lrq
私にとって最適な「低ランクの2次」()オプションを以下に示します。
データセット形式ファイルratings.vw
(各評価はユーザーと映画ごとに1行で):
5 |user 1 |movie 37
3 |user 2 |movie 1019
4 |user 1 |movie 25
1 |user 3 |movie 238
...
ここで、最初の数字は評価(1〜5つ星)の後に、評価したユーザーのIDと評価された映画IDが続きます。
テストデータは同じ形式ですが、(オプションで)評価列を省略できます。
|user 1 |movie 234
|user 12 |movie 1019
...
オプションで、予測を評価/テストするには、予測を比較するための評価が必要です。評価を省略すると、評価vowpal wabbit
は予測されますが、予測エラー(予測値とデータの実際の値)を推定することはできません。
トレーニングvowpal wabbit
するために、N
ユーザーとユーザーが好きな(または嫌いな)映画の間の潜在的な相互作用要因のセットを見つけるように依頼します。これは、同様のユーザーが映画のサブセットを同様に評価する一般的なテーマを見つけ、これらの一般的なテーマを使用して、ユーザーがまだ評価していない映画を評価する方法を予測することと考えることができます。
vw
使用する必要があるオプションと引数:
--lrq <x><y><N>
「低ランクの2次」潜在因子を見つけます。
<x><y>
:「um」は、データセット内のu [sers]およびm [ovie]名前空間を横断することを意味します。--lrq
オプションでは、各ネームスペースの最初の文字のみが使用されることに注意してください。
<N>
:N=14
以下は、見つけたい潜在的要因の数です
-f model_filename
:最終モデルを書き込みます model_filename
したがって、単純な完全なトレーニングコマンドは次のようになります。
vw --lrq um14 -d ratings.vw -f ratings.model
ratings.model
モデルファイルを取得したら、それを使用して新しいデータセットの追加の評価を予測できますmore_ratings.vw
。
vw -i ratings.model -d more_ratings.vw -p more_ratings.predicted
予測はファイルに書き込まれますmore_ratings.predicted
。
ソースツリーで使用demo/movielens
すると、14個の潜在因子(SVD中間マトリックスが14x14行x列マトリックスであることを意味しvowpalwabbit
ます)で100万人のユーザー/映画の評価ml-1m.ratings.train.vw
をトレーニングし、独立したテストセットml-1m.ratings.test.vw
。0.69 MAEはどれくらい良いですか?未評価(0)の場合[0〜5]を含む可能な予測の全範囲では、0.69エラーは全範囲の約13.8%(0.69 / 5.0)、つまり約86.2%の精度(1-0.138)です。
vowpal wabbit
githubのソースツリーに、ドキュメントと同様のデータセット(movielens)の例と完全なデモがあります。
ノート:
movielens
デモは、私は私の例から(簡略化のため)、省略いくつかのオプションを使用しています。特に--loss_function quantile
、--adaptive
、および--invariant
- の
--lrq
実装は、特にモデルを保存およびロードするときに、vw
よりもはるかに高速です--rank
。
クレジット:
--rank
vwオプションはJake Hofmanによって実装されました
--lrq
vwオプション(オプションのドロップアウト付き)はPaul Mineroによって実装されました
- vowpal wabbit(別名vw)はジョンラングフォードの頭脳