Maison >développement back-end >tutoriel php >Comment utiliser PHP pour implémenter des systèmes collaboratifs de filtrage et de recommandation
Comment implémenter un système de filtrage et de recommandation collaboratif avec PHP
Le système de filtrage et de recommandation collaboratif est un algorithme et une technologie très couramment utilisés, largement utilisés dans le commerce électronique, les médias sociaux et les services en ligne. L'algorithme de filtrage collaboratif analyse le comportement et les préférences d'un utilisateur, le compare avec le comportement d'autres utilisateurs pour trouver des utilisateurs similaires et fait des recommandations personnalisées aux utilisateurs en fonction de ces similitudes. Cet article présentera comment implémenter des systèmes collaboratifs de filtrage et de recommandation en 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); }
Dans l'exemple de code ci-dessus, $n
représente le nombre de recommandations à générer, et la valeur par défaut est 5. La fonction user_based_recommendation
renverra un tableau d'éléments triés par score de recommandation de haut en bas. $n
表示要生成的推荐数量,默认为5。user_based_recommendation
函数将返回一个按推荐评分从高到低排列的物品数组。
$recommendations = user_based_recommendation($ratings, 'user1', 3); foreach ($recommendations as $item => $rating) { echo "推荐物品:$item, 评分:$rating "; }
以上示例将为user1
Ce qui suit est un exemple d'utilisation de la fonction ci-dessus :
user1
et affichera les résultats. 🎜🎜Résumé : 🎜À travers les étapes ci-dessus, nous avons montré comment utiliser PHP pour implémenter des systèmes collaboratifs de filtrage et de recommandation. Tout d’abord, nous avons préparé les données de la matrice utilisateur-élément et calculé la similarité entre les utilisateurs. Ensuite, des recommandations personnalisées sont générées en fonction de la similarité. Il ne s'agit que d'une méthode de mise en œuvre parmi d'autres, et les applications réelles devront peut-être être modifiées de manière appropriée en fonction de besoins spécifiques. J'espère que cet article pourra vous aider à comprendre comment utiliser PHP pour implémenter des systèmes collaboratifs de filtrage et de recommandation. 🎜Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!