備忘録

物忘れが酷いので

ピアソン相関

 

サンプルを比較するために使えます

f:id:monowasure78:20130208223526p:plainからなる数値列に対して、ピアソン相関係数は

\frac{\sum_{i=1}^n (x_i - \overline{x})(y_i - \overline{y} ) }{\sqrt{\sum_{i=1}^n (x_i - \overline{x})^2}\sqrt{\sum_{i=1}^n (y_i - \overline{y})^2}}

で与えられます。

集合知プログラミング」という本によると、

\frac{\sum_{i=1}^n x_i y_i -\frac{\sum_{i=1}^n x_i \sum_{i=1}^n y_i}{n}}{\sqrt{(\sum_{i=1}^nx_i^2 - \frac{(\sum_{i=1}^n x_i)^2}{n})(\sum_{i=1}^n y_i^2 - \frac{(\sum_{i=1}^n y_i)^2}{n})}}

で与えられる。

こちらの利点は1回のループで相関係数を求められることです。

この本のMovieLensというサイトのデータを用いた演習でそれぞれの時間を計測したところ、

上:14808ms

下:13709ms

と差がでました。

より大きなデータでは、影響があるかもしれません。

 

(メモ)

協調フィルタリングで類似度を求めるときはある程度共通するアイテムの数があるときのみ求め、少ない時は0とすべき。

 

 

集合知プログラミング

集合知プログラミング