Sistem rekomendasi menyimpan log tentang rekomendasi apa yang telah dibuat untuk pengguna tertentu dan apakah pengguna itu menerima rekomendasi tersebut. Itu seperti
user_id item_id result
1 4 1
1 7 -1
5 19 1
5 80 1
di mana 1 berarti pengguna menerima rekomendasi sementara -1 berarti pengguna tidak menanggapi rekomendasi tersebut.
Pertanyaan: Jika saya akan membuat rekomendasi kepada sekelompok pengguna berdasarkan jenis log yang dijelaskan di atas, dan saya ingin memaksimalkan skor MAP @ 3, bagaimana saya harus berurusan dengan data implisit (1 atau -1)?
Ide saya adalah memperlakukan 1 dan -1 sebagai peringkat, dan memprediksi peringkat menggunakan algoritma tipe-mesin faktorisasi. Tapi ini sepertinya tidak benar, mengingat asimetri data implisit (-1 tidak berarti pengguna tidak menyukai rekomendasi).
Sunting 1 Mari kita pikirkan dalam konteks pendekatan faktorisasi matriks. Jika kami memperlakukan -1 dan 1 sebagai peringkat, akan ada beberapa masalah. Misalnya, pengguna 1 menyukai film A yang mendapat skor tinggi dalam satu faktor (misalnya memiliki musik latar yang agung) di ruang faktor laten. Sistem merekomendasikan film B yang juga mendapat skor tinggi dalam "musik latar belakang yang mulia", tetapi karena alasan tertentu pengguna 1 terlalu sibuk untuk melihat ke dalam rekomendasi, dan kami memiliki film rating -1. , maka sistem mungkin disarankan untuk merekomendasikan film dengan BGM mulia kepada pengguna 1 sementara pengguna 1 masih menyukai film dengan BGM mulia. Saya pikir situasi ini harus dihindari.