Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara melaksanakan sistem penapisan dan pengesyoran kolaboratif dengan PHP

Cara melaksanakan sistem penapisan dan pengesyoran kolaboratif dengan PHP

PHPz
PHPzasal
2023-08-02 11:17:081588semak imbas

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.

  1. Penyediaan data
    Sebelum melaksanakan sistem penapisan dan pengesyoran kolaboratif, kami perlu menyediakan data terlebih dahulu. Secara umumnya, kita perlu mempunyai matriks item pengguna untuk merekodkan penilaian atau keutamaan setiap pengguna untuk setiap item. Matriks ini boleh diwakili oleh tatasusunan. Berikut ialah sampel data:
$ratings = [
    'user1' => ['item1' => 4, 'item2' => 3, 'item3' => 5],
    'user2' => ['item1' => 5, 'item2' => 1, 'item3' => 2],
    'user3' => ['item1' => 2, 'item2' => 4, 'item3' => 1],
];
  1. Pengiraan persamaan
    Dalam penapisan kolaboratif, kita perlu mengira persamaan antara pengguna. Kaedah pengiraan persamaan yang biasa digunakan ialah pekali korelasi Pearson. Berikut ialah fungsi yang dilaksanakan dalam PHP untuk mengira pekali korelasi Pearson:
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;
}
  1. Penjanaan cadangan
    Dengan persamaan antara pengguna, kami boleh menjana cadangan berdasarkan persamaan. Pendekatan biasa ialah algoritma penapisan kolaboratif berasaskan pengguna. Berikut ialah fungsi algoritma pengesyoran penapisan kolaboratif berasaskan pengguna yang dilaksanakan dalam PHP:
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 函数将返回一个按推荐评分从高到低排列的物品数组。

  1. 使用示例
    下面是一个使用上述函数的示例:
$recommendations = user_based_recommendation($ratings, 'user1', 3);

foreach ($recommendations as $item => $rating) {
    echo "推荐物品:$item, 评分:$rating
";
}

以上示例将为user1

    Contoh penggunaan

    Berikut ialah contoh penggunaan fungsi di atas:

    rrreee🎜Contoh di atas akan menjana 3 item yang disyorkan untuk 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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn