Rumah > Artikel > pembangunan bahagian belakang > Cara melaksanakan sistem penapisan dan pengesyoran kolaboratif dengan PHP
Cara melaksanakan sistem penapisan dan pengesyoran kolaboratif dengan PHP
Sistem penapisan dan pengesyoran kolaboratif ialah algoritma dan teknologi yang sangat biasa digunakan, digunakan secara meluas dalam e-dagang, media sosial dan perkhidmatan dalam talian. Algoritma penapisan kolaboratif menganalisis gelagat dan pilihan pengguna, membandingkannya dengan gelagat pengguna lain untuk mencari pengguna yang serupa dan membuat pengesyoran diperibadikan untuk pengguna berdasarkan persamaan ini. Artikel ini akan memperkenalkan cara melaksanakan sistem penapisan dan pengesyoran kolaboratif dalam PHP.
$ratings = [ 'user1' => ['item1' => 4, 'item2' => 3, 'item3' => 5], 'user2' => ['item1' => 5, 'item2' => 1, 'item3' => 2], 'user3' => ['item1' => 2, 'item2' => 4, 'item3' => 1], ];
function pearson_similarity($ratings, $user1, $user2) { $common_items = array_intersect(array_keys($ratings[$user1]), array_keys($ratings[$user2])); $n = count($common_items); $sum1 = $sum2 = $sum1_sq = $sum2_sq = $p_sum = 0; foreach ($common_items as $item) { $rating1 = $ratings[$user1][$item]; $rating2 = $ratings[$user2][$item]; $sum1 += $rating1; $sum2 += $rating2; $sum1_sq += pow($rating1, 2); $sum2_sq += pow($rating2, 2); $p_sum += $rating1 * $rating2; } $num = $p_sum - ($sum1 * $sum2 / $n); $den = sqrt(($sum1_sq - pow($sum1, 2) / $n) * ($sum2_sq - pow($sum2, 2) / $n)); if ($den == 0) return 0; return $num / $den; }
function user_based_recommendation($ratings, $user, $n = 5) { $similarity = array(); $weighted_sum = array(); $similarity_sum = array(); foreach ($ratings as $other_user => $items) { if ($other_user == $user) continue; $sim = pearson_similarity($ratings, $user, $other_user); if ($sim <= 0) continue; foreach ($items as $item => $rating) { if (!isset($ratings[$user][$item]) || $ratings[$user][$item] == 0) { $weighted_sum[$item] += $rating * $sim; $similarity_sum[$item] += $sim; } } } $rankings = array(); foreach ($weighted_sum as $item => $weighted_rating) { if ($similarity_sum[$item] > 0) { $rankings[$item] = $weighted_rating / $similarity_sum[$item]; } } arsort($rankings); return array_slice($rankings, 0, $n, true); }
Dalam kod contoh di atas, $n
mewakili bilangan pengesyoran yang akan dijana dan lalai ialah 5. Fungsi user_based_recommendation
akan mengembalikan tatasusunan item yang diisih mengikut skor pengesyoran dari tinggi ke rendah. $n
表示要生成的推荐数量,默认为5。user_based_recommendation
函数将返回一个按推荐评分从高到低排列的物品数组。
$recommendations = user_based_recommendation($ratings, 'user1', 3); foreach ($recommendations as $item => $rating) { echo "推荐物品:$item, 评分:$rating "; }
以上示例将为user1
Berikut ialah contoh penggunaan fungsi di atas:
user1
dan mengeluarkan hasilnya. 🎜🎜Ringkasan: 🎜Melalui langkah di atas, kami telah menunjukkan cara menggunakan PHP untuk melaksanakan sistem penapisan dan pengesyoran kolaboratif. Pertama, kami menyediakan data matriks item pengguna dan mengira persamaan antara pengguna. Kemudian, pengesyoran diperibadikan dijana berdasarkan persamaan. Ini hanyalah satu kaedah pelaksanaan, dan aplikasi sebenar mungkin perlu diubah suai dengan sewajarnya mengikut keperluan khusus. Saya harap artikel ini dapat membantu anda memahami cara menggunakan PHP untuk melaksanakan sistem penapisan dan pengesyoran kolaboratif. 🎜Atas ialah kandungan terperinci Cara melaksanakan sistem penapisan dan pengesyoran kolaboratif dengan PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!