レコメンデーションコンテスト2009の感想
主に精度部門に関して。
ビジネス部門に出ている人間の戯言なので、参考にならないかもしれないが。
どうも、上位の人たちと下位の人たちの知識レベルにあまりに差があると思ったので
自分が”精度を高める”と言うことだけにエンジンを作るとしたら
ということをメモってみました。
参考にする方がいらっしゃったらどうぞ。
参考資料
※ ネットフリックスのレコメンドエンジンコンテスト
http://www.netflixprize.com/
※ そのコンテストで賞金獲得の決め手となった、と言われているアルゴリズム
http://research.yahoo.com/pub/2824
※ Githubコンテストの上位者の論文
http://www.computer.org/portal/web/csdl/doi/10.1109/WI-IAT.2009.78
1.前処理
前処理として、必要なものは2点。
・行列の要素の作り方(ユーザー・ユーザーとか、ユーザー・アイテムとか)
行列に関しては、要素の関連性の強さで重みをつける。
(TFIDF、ベイジアンセットとか)
・時間を考慮して行列を作る(毎日とか、一ヶ月とか)
Githubコンテストでもネットフリックスコンテストでも
最後の最後に精度をあげる決め手となったのは、時系列データらしい。
2.アルゴリズム
ネットフリックスコンテストだと、100以上のアルゴリズムを使って
一人一人に最適なエンジンを見つけておすすめをしたらしい。
(これを知っていたので、これに関連したビジネスを提案した)
なので、ある程度の量。
・次元圧縮系(LDA、k/b/s/PCAとか)
・類似検出(Cosine尺度、kNN、SVMとか)
ここら辺のものがあれば、ある程度十分かと。
3.最適なエンジンのみつけかた
いわゆるデータマイニング的な知識はここに役立つのだが、
Boostingやランダムフォレストを使って、集団学習させて
その集団学習の結果、その集団が持っている特徴を見つけ出す
なので、ユーザーが持っている情報
例えば、視聴時間とか、時間帯とかを使うととてもやりやすい。
後輩が精度部門の方に出ているので、後輩とやりあうわけにはいかないので
出ないのだが、こんなことは考えてみてます。