読者です 読者をやめる 読者になる 読者になる

謎言語使いの徒然

適当に気になった技術や言語を流すブログ。

映画の推薦で、標本データはどう取得すべきなのか考察する

日記

考えながらつらつらとメモ

まず前提として、

  • MovieLens の情報を使う
  • やりたいことはその人に合った映画の推薦がしたい
  • なるべくまともな計算回数でどうにかしたい

ということを考えた場合の協調フィルタリングベースで考える。

まず、大前提として、相関比較をするののは処理コストがかかる。計算回数を減らそうとしたら、比較する人間の数を絞るしかない。

すると、代表的な嗜好を持った比較セットを作り、比較人数自体を減らすべきなのだ。

  1. ではそのセットはどうやって作るべきなんだろうか?
  2. 最初の一人をどうやって選ぶべきなんだろう? 3.評価した映画の本数をベースにまずは考える。
  3. アルゴリズムの性質上、評価件数の一致度が高い程正確な比較ができる。
  4. であれば、そういったユーザを優先的に標本に入れておくべきなのだろう。
  5. 映画のレビューは当然コストと時間がかかる。であれば、評価件数というのは、おおよそ平均的な件数を中心に、暇か金があればプラスに、なければマイナスになるだけであると考える。
    • つまり、評価者の評価件数は正規分布に従っている筈である。
  6. であれば、その中央 8 割以下の人間を、サンプルとして扱うべきではないのだ。
  7. いずれにせよ、標本最初のユーザは評価本数の多い人間であるべきだろう
  8. 標本ユーザが十分に全ユーザの嗜好を代表できるようにするにはどうすべきか考える。
  9. 最初の一人を上記のルールでまず標本ユーザとしておく。
  10. 標本ユーザとの相関が高ければ、好みは同じの筈なので、標本足りえないと考える。
  11. また、評価本数が極端に少ないユーザを標本にしても、一致しすぎるので意味がない。
    • 基準はとりあえず 3 のものとすべきか?いずれにせよ、一致率 6 割を切ったユーザが多数出るようなら考えるべきかもしれない。
  12. 標本条件は、一致率が「8 割を切ったら」でいいだろう。ここは数学的云々よりも、正確性とシステム負荷(≒運用時のコスト)の見合いで考えるべきである。
  13. 逆に、逆相関で高い場合も特に記録することはないかもしれない
    • 実質好みが逆の筈なので、標本ユーザが『お勧めできない』と言ってる映画を勧めればよい。
    • ただし、好みに関わらず低評価な映画はある筈である。
      • 俗にいうC級以下の映画。これは映画に対する評価の平均と分散を考慮して、お勧めからは排除すべきである。
      • 逆はありえるのだろうか、、、?→これは要検討。
  14. 「標本になってるAさんが評価してない映画が、よく似た趣味のBさんが評価している場合」A(標本上のAさん)のデータに、その映画の評価を加えることができないか?
  15. 好みが似ているとしても、他人の評価を標本に追加できるかという問題。
  16. ピアソン相関を使用する場合、嗜好(評価の傾向)の一致は比較できるが、評価ルールは一致できない。たとえば、全体的に評価を甘く見積もってるとか、評価の振れ幅が小さいとか、そういう場合。
  17. 人が5段階評価を提示されたとき、自分基準を中心に、相対評価をしている筈である。であれば、レビュー件数が十分に多ければ、その平均点は正規分布になる筈である。
    • その平均と分散を求めれば、およそ点数のつけ方が標準化できる筈である。
    • 二人のユーザで、両方を標準化してしまえば、そのレビューをAさん基準に直して追加できる筈
  18. いやそもそもが、ピアソン相関自体の精度も信用できるのだろうか?
    • 比較する映画本数次第だと思われる。まさか1~2件程度のレビューが完全一致したからと言って、その相関が信用できる筈もない。
  19. 結論としてはおそらく不可能だろう。
  20. 一致率が 95% (多分同じ嗜好)を超え、レビュー数が、標本より多い場合は標本を置き換えても良いのかもしれない。
    • ただし一致計算に使ったレビュー件数には閾値なりなんなりは必要だろう。
  21. 結論としてはおそらく無理か。(少なくとも現時点での学習では無理)
  22. 更に効率的に比較する方法はないか?
  23. どうせ比較は殆どシーケンシャルに計算するものと思われる。であれば、「よく一致する好みのサンプル」をなるだけ先頭に配置すれば、比較回数が少なくて済むのではないかと考える。

大体今の習熟度ではここまで。