ソーシャルネットワークに関する友人の推奨事項

少し前に、ユーザー情報を使用してオンラインストアや他の場所で製品を推奨する方法を書きました 。 次に、ソーシャルネットワークなどで友人を推薦できるアルゴリズムを示します。

最初のステップは、間隔スケールでユーザー情報を提示し、ピアソン相関係数を使用て友人にユーザーを推奨することです。これにより、2つの間隔変数間の線形関係の度合いが測定されます。 たとえば、Dima、Anna、Petya、Sashaの4人のユーザーがいます。 配列内の数値として表される情報(関心、ブログ、年齢など)を知っています。

<?php
//Dima
$name[0]=array(1,4,5,5,4);
//Anna
$name[1]=array(3,5,6,5,4);
//Petr
$name[2]=array(3,2,4,2,1);
//Sasha
$name[3]=array(5,4,3,1,1);


ピアソン係数は次のようになります。

画像

ここで、xiとyiは量的特性を比較します
nは比較された観測値の数です

2番目のステップでは、値を式に挿入し、Dimaに適したユーザーを確認します。
$n=5;
$x=$name[0];
$y=$name[1];

for ($j=1;$j<count($name);$j++) {
$x=$name[0];
$y=$name[$j];
//begin
$s_x=0;
$s_y=0;
$s_pow_x=0;
$s_pow_y=0;
$s_x_y=0;

//x*y
for ($i=0;$i<5;$xy[$i]=$x[$i]*$y[$i],$i++);
//x pow 2
for ($i=0;$i<5;$x_pow_2[$i]=$x[$i]*$x[$i],$i++);
//y pow 2
for ($i=0;$i<5;$y_pow_2[$i]=$y[$i]*$y[$i],$i++);
//Summa xi
for ($i=0;$i<5;$s_x+=$x[$i],$i++);
//Summa yi
for ($i=0;$i<5;$s_y+=$y[$i],$i++);
//Summa x pow 2
for ($i=0;$i<5;$s_pow_x+=$x_pow_2[$i],$i++);
//Summa y pow 2
for ($i=0;$i<5;$s_pow_y+=$y_pow_2[$i],$i++);
//Summa x*y
for ($i=0;$i<5;$s_x_y+=$xy[$i],$i++);

$r_x_y=(($n*$s_x_y)-($s_x*$s_y))/sqrt((($n*$s_pow_x) - ($s_x*$s_x))*(($n*$s_pow_y) - ($s_y*$s_y)));
print $r_x_y;
}


値が1に近いほど、彼らの興味が彼の興味と一致する可能性が高くなります。

彼は私たちの友達です
出力値
アーニャ
(80%)
0.880704845928
ペティア
(0%)
-0.0800640769025
サーシャ
(0%)
-0.697424162876

Source: https://habr.com/ru/post/J82075/


All Articles