相関係数による協調フィルタリング

二つのアニメの類似度を、声優ベクトル同士の角度で判定する方法は、
ポケモンのような声優数の多い作品に若干有利な気がしていた。
一致する声優がない作品同士では、常に90度になってしまうのも不満だった。
今にして思えば、「各成分が0または1」という偏った向きのベクトルを使うのはおかしかった。
協調フィルタリングについて調べようと思い、とりあえずここに書いてある手法を
理解してみることにした。
すると、自分がつい最近使った、ベクトルの内積を長さで割る数式に似たものがある。
やはり似た手法なのかと思いつつ、
実は相関係数の定義を知らなかったので、ウィキペで調べた。
すると、相関係数とは「平均からのずれを表すベクトルのなす角の余弦」だという。
相関係数が表すものってデータ同士の角度だったのか!
相関係数が-1〜1の範囲なのって、コサイン値だからか!
まさか今頃になってこんな快感を味わえるとは思わなかった。
しかし、この嬉しさは、今までの自分の状態が酷かったことの裏返しだ。
相関係数の求め方くらい当然知っているべきだった。
さて、以上を踏まえての具体的な修正点は、各声優ベクトルの成分の平均値を0にすること。
つまり、(0, 1, 1, 0, 0)を(-0.4, 0.6, 0.6, -0.4, -0.4)のようにする。
これによって、ポケモンの順位は下がり、より表現がふくらんだ。
ここで、全声優の人数を無限大に持っていくと、元の声優ベクトルの方法と一致する。
声優の数が限られていれば、多くの声優を擁するアニメの声優が被らないというのは、
積極的な「似ていない」という根拠となるのだ。
(そもそも、アニメが声優を含むことと含まないことは対等に扱われなければおかしい)
この相関係数の方法で出力結果がどう変わったかは、以前の方法のエントリの表に追記する形で示す。ちなみに、おジャ魔女と最も似ていないアニメは、ルパン三世で93.25度。
(声優が被らない大量の作品の中で最も声優数が多かったということ)