Heim > Artikel > Backend-Entwicklung > Wie man mit PHP kollaborative Filter- und Empfehlungssysteme implementiert
So implementieren Sie ein kollaboratives Filter- und Empfehlungssystem mit PHP
Das kollaborative Filter- und Empfehlungssystem ist ein sehr häufig verwendeter Algorithmus und eine sehr häufig verwendete Technologie, die im E-Commerce, in sozialen Medien und bei Online-Diensten weit verbreitet ist. Der kollaborative Filteralgorithmus analysiert das Verhalten und die Vorlieben eines Benutzers, vergleicht es mit dem Verhalten anderer Benutzer, um ähnliche Benutzer zu finden, und gibt basierend auf diesen Ähnlichkeiten personalisierte Empfehlungen für Benutzer. In diesem Artikel wird erläutert, wie kollaborative Filter- und Empfehlungssysteme in PHP implementiert werden.
$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); }
Im obigen Beispielcode stellt $n
die Anzahl der zu generierenden Empfehlungen dar, und der Standardwert ist 5. Die Funktion user_based_recommendation
gibt ein Array von Elementen zurück, sortiert nach Empfehlungswert von hoch nach niedrig. $n
表示要生成的推荐数量,默认为5。user_based_recommendation
函数将返回一个按推荐评分从高到低排列的物品数组。
$recommendations = user_based_recommendation($ratings, 'user1', 3); foreach ($recommendations as $item => $rating) { echo "推荐物品:$item, 评分:$rating "; }
以上示例将为user1
Das Folgende ist ein Beispiel für die Verwendung der obigen Funktion:
user1
und gibt die Ergebnisse aus. 🎜🎜Zusammenfassung: 🎜Durch die oben genannten Schritte haben wir gezeigt, wie man mit PHP kollaborative Filter- und Empfehlungssysteme implementiert. Zuerst bereiten wir die Daten der Benutzer-Element-Matrix vor und berechnen die Ähnlichkeit zwischen Benutzern. Anschließend werden auf Basis der Ähnlichkeit personalisierte Empfehlungen generiert. Dies ist nur eine Implementierungsmethode, und tatsächliche Anwendungen müssen möglicherweise entsprechend den spezifischen Anforderungen angepasst werden. Ich hoffe, dieser Artikel kann Ihnen helfen zu verstehen, wie Sie mit PHP kollaborative Filter- und Empfehlungssysteme implementieren. 🎜Das obige ist der detaillierte Inhalt vonWie man mit PHP kollaborative Filter- und Empfehlungssysteme implementiert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!