PHP を使用して推奨アルゴリズムを実装する方法
はじめに:
推奨アルゴリズムは、今日のインターネット アプリケーションで重要な役割を果たしています。ユーザーの行動や好みに基づいてパーソナライズされた推奨事項をユーザーに提供できます。 PHP は広く使用されているスクリプト言語であり、推奨アルゴリズムの実装にも使用できます。この記事では、PHP を使用して協調フィルタリングに基づく単純な推奨アルゴリズムを実装する方法を紹介し、対応するコード例を示します。
1. 協調フィルタリング アルゴリズムとは
協調フィルタリングは、一般的に使用される推奨アルゴリズムであり、ユーザー間の共通の関心を分析し、ユーザーが興味を持つ可能性のあるコンテンツを推奨します。協調フィルタリング アルゴリズムは、ユーザー間の類似性に基づいて現在のユーザーと似た趣味を持つ他のユーザーを見つけ、これらの類似したユーザーによるアイテムの評価に基づいて現在のユーザーに推奨を行います。協調フィルタリング アルゴリズムは 2 つのタイプに分類できます。
この記事では、ユーザーベースの協調フィルタリング アルゴリズムを例として、PHP を使用して推奨アルゴリズムを実装する方法を紹介します。
2. 実装手順
ユーザー間の類似性の計算
ユーザー間の類似性の計算は、協調フィルタリング アルゴリズムの中核です。一般的に使用される類似度の計算方法には、ユークリッド距離、ピアソン相関係数などが含まれます。ここではピアソン相関係数を使用してユーザー間の類似性を計算します。ピアソン相関係数の式は次のとおりです。
similarity(u, v) = sum((r(u, i) - avg(u)) * (r(v, i) - avg(v))) / (sqrt(sum((r(u, i) - avg(u))^2)) * sqrt(sum((r(v, i) - avg(v))^2)))
ここで、similarity(u, v) はユーザー u と v の間の類似性を表し、r(u, i) はユーザー u のアイテム i の評価を表します。avg( u ) はユーザー u の平均評価を表します。
以下は、ピアソン相関係数を計算する PHP の関数の例です。
function pearson($ratings1, $ratings2) { $sum1 = $sum2 = $sumSq1 = $sumSq2 = $pSum = 0; $n = count($ratings1); foreach ($ratings1 as $item => $rating) { if (array_key_exists($item, $ratings2)) { $sum1 += $rating; $sum2 += $ratings2[$item]; $sumSq1 += pow($rating, 2); $sumSq2 += pow($ratings2[$item], 2); $pSum += $rating * $ratings2[$item]; } } $num = $pSum - ($sum1 * $sum2 / $n); $den = sqrt(($sumSq1 - pow($sum1, 2) / $n) * ($sumSq2 - pow($sum2, 2) / $n)); if ($den == 0) return 0; return $num / $den; }
この関数は、2 つの評価配列をパラメータとして受け取り、評価配列間の差を返します。 2 つの評価配列 ピアソン相関係数。
以下は、ユーザーを推奨する PHP 関数の例です。
function recommend($user, $data, $k) { $total = array(); $simSum = array(); foreach ($data as $otherUser => $ratings) { if ($otherUser != $user) { $similarity = pearson($data[$user], $ratings); if ($similarity > 0) { foreach ($ratings as $item => $rating) { if (!array_key_exists($item, $data[$user])) { if (!array_key_exists($item, $total)) { $total[$item] = 0; $simSum[$item] = 0; } $total[$item] += $rating * $similarity; $simSum[$item] += $similarity; } } } } } $recommendations = array(); foreach ($total as $item => $score) { $recommendations[$item] = $score / $simSum[$item]; } arsort($recommendations); return $recommendations; }
この関数は、現在のユーザー、ユーザーの行動データ、および推奨されるアイテムの数 k を受け取ります。配列は推奨結果を表します。キーはアイテム ID、値は推奨スコアです。
4. 概要
協調フィルタリング アルゴリズムは、パーソナライズされた推奨コンテンツを実現できる一般的に使用される推奨アルゴリズムです。この記事では、PHP を使用してシンプルなユーザーベースの協調フィルタリング アルゴリズムを実装する方法を紹介し、対応するコード例を示します。もちろん、実際のアプリケーションでは、大規模なデータの処理やオーバーフィッティングの防止など、多くの詳細とパフォーマンスの最適化を考慮する必要があります。この記事が、レコメンデーション アルゴリズムの実装を開始するのに役立ち、さらに詳細な研究を行うための参考になれば幸いです。
以上がPHPでレコメンデーションアルゴリズムを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。