背景:レコメンドシステムも本格的に理解したい
最近、Kaggleで「H&M Personalized Fashion Recommendations」というのが始まりました。と言っても、もう1週間もしないうちに終わります。ファッションが楽しくなってきた私にとって、H&Mのデータを使うというのと、前から気になっているレコメンドシステムのコンペという事もあり参加だけさせてもらっていました。いろいろ分かってきた事もあるので、コンペの規約に引っかからない程度に共有させて頂きます。
目的:簡単なRecommendation Systemsを作って、最新のGLocal_Kを理解します。
まずは「Browse State-of-the-Art」でRecommendationSystemuについて調べます。最新の手法に「GLocal_K」があるのが分かりました。更に、GitHubから「GLocal_Kの原著論文」をあたり、これまでの手法とスコアの比較も知ることが出来ました。そもそもRecommendationSystemをまともに作った事も精査した事もなかったので、協調フィルタリングあたりから実装してみようと思いました。
方法:「我妻先生の動画」をなぞります。
今回はアイテムベース協調フィルタリングです。簡単に流れを追います。
- データを読み込む。
- 相関行列(類似度)を求める。
- ユーザー0について、各映画のお勧め度を求める。
結果:実装の結果を方法の流れに沿って見て行きます。
-
データを読み込む。
データはMovieLensから引っ張ってきました。我妻先生の動画に従ってユーザー0を加えてます。
-
相関行列(類似度)を求める。
先程のデータを使って相関行列を求めます。これはあくまで、映画を評価した人たちの範囲で求めた類似度になります。
-
ユーザー0について、各映画のお勧め度を求める。
相関行列を元に、ユーザーが評価した物に対してウエイトを掛けます。下に表示したのはユーザー0が評価した物以外のトップ10です。
感想:シンプルなのにそれっぽい
今回は非常にシンプルなレコメンドシステムを実装しました。手順的には「1. 相関行列を出す, 2. ウエイトを掛ける」の2つだけで非常にシンプルです。シンプルなのにそれっぽいのには感動を覚えました。
課題:RecommendationSystemをいろいろ試したい。
GLocal_Kを使える様にするのが、ここでの最終目標です。論文を見ると「LLORMA」「I-AutoRec」「CF-NADE」など、何のことか分からない手法も試されている様です。全部を試さなくても良いと思いますが、なんにしろレコメンデーションに対する理解は深めていきたいと思います。