PHP를 사용하여 협업 필터링 및 추천 시스템을 구현하는 방법
협업 필터링 및 추천 시스템은 전자상거래, 소셜 미디어 및 온라인 서비스에서 널리 사용되는 매우 일반적으로 사용되는 알고리즘 및 기술입니다. 협업 필터링 알고리즘은 사용자의 행동과 선호도를 분석하고, 이를 다른 사용자의 행동과 비교하여 유사한 사용자를 찾고, 이러한 유사성을 기반으로 사용자에게 개인화된 추천을 제공합니다. 이 기사에서는 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); }
위 예제 코드에서 $n
은 생성할 추천 개수를 나타내며, 기본값은 5. user_based_recommendation
함수는 추천 점수를 기준으로 높은 항목에서 낮은 항목 순으로 정렬된 항목 배열을 반환합니다. $n
表示要生成的推荐数量,默认为5。user_based_recommendation
函数将返回一个按推荐评分从高到低排列的物品数组。
$recommendations = user_based_recommendation($ratings, 'user1', 3); foreach ($recommendations as $item => $rating) { echo "推荐物品:$item, 评分:$rating "; }
以上示例将为user1
다음은 위 함수를 사용한 예입니다.
user1
에 대한 추천 항목 3개를 생성하고 그 결과를 출력합니다. 🎜🎜요약: 🎜위 단계를 통해 PHP를 사용하여 협업 필터링 및 추천 시스템을 구현하는 방법을 보여주었습니다. 먼저 사용자 항목 매트릭스의 데이터를 준비하고 사용자 간 유사도를 계산했습니다. 그런 다음 유사성을 기반으로 개인화된 추천이 생성됩니다. 이는 하나의 구현 방법일 뿐이며 실제 애플리케이션은 특정 요구에 따라 적절히 수정해야 할 수도 있습니다. 이 기사가 PHP를 사용하여 협업 필터링 및 추천 시스템을 구현하는 방법을 이해하는 데 도움이 되기를 바랍니다. 🎜위 내용은 PHP를 사용하여 협업 필터링 및 추천 시스템을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!