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