Bagaimana seharusnya seseorang menangani data implisit dalam rekomendasi

9

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.

wdg
sumber
Tidak ada masalah yang -1 tidak berarti tidak suka. Ini hanyalah cara untuk membedakan bahwa seseorang melihat item tersebut. Dalam hal itu ia membawa lebih banyak info daripada nilai yang hilang. Ini sebenarnya dapat meningkatkan akurasi rekomendasi Anda. Bergantung pada metrik jarak Anda dalam merekomendasikan, Anda dapat mempertimbangkan untuk mengubahnya dari -1 ke nilai metrik sedikit sehingga tidak terlalu mempengaruhi jarak.
cwharland
1
Makalah kanonik untuk umpan balik implisit adalah Hu, Koren, dan Volinsky . Banyak rekomendasi bagus di sana, termasuk memperkirakan kepercayaan Anda di mana -1 menunjukkan ketidaksukaan atau sekadar "tidak melihat."
Trey

Jawaban:

5

Sistem Anda tidak hanya terlatih pada item yang direkomendasikan, bukan? jika demikian, Anda memiliki lingkaran umpan balik yang besar di sini. Anda ingin belajar dari semua klik / tampilan, saya harap.

Anda menyarankan bahwa tidak melihat item adalah sinyal negatif. Saya sangat menyarankan Anda tidak memperlakukannya seperti itu. Tidak berinteraksi dengan sesuatu hampir selalu diperlakukan sebagai tidak ada informasi. Jika Anda memiliki sinyal eksplisit yang menunjukkan ketidaksukaan, seperti suara turun (atau, mungkin menonton 10 detik video dan berhenti), mungkin itu valid.

Saya tidak akan menafsirkan input ini sebagai data seperti peringkat. (Meskipun dalam kasus Anda, Anda mungkin lolos begitu saja.) Alih-alih menganggapnya sebagai bobot, yang merupakan perawatan di kertas Hu Koren Volinsky pada ALS yang @Trey sebutkan dalam komentar. Ini memungkinkan Anda merekam kekuatan relatif dari interaksi positif / negatif.

Akhirnya saya akan mencatat bahwa makalah ini, meskipun sangat mungkin untuk apa yang Anda cari, tidak memberikan bobot negatif. Sangat mudah untuk memperluas dengan cara ini. Jika Anda sejauh itu, saya bisa mengarahkan Anda ke ekstensi yang mudah, yang sudah ada dalam dua implementasi yang saya tahu, di Spark dan Oryx .

Sean Owen
sumber
2
Saya pikir nilai negatif sedikit untuk item yang telah dilihat berkali-kali tetapi tidak pernah dipilih adalah masuk akal. OP tidak mengindikasikan bahwa mereka memiliki akses ke data yang memenuhi kualifikasi imputasi negatif ini tetapi saya tidak akan mengesampingkan taktik itu sepenuhnya. Nilai optimal dari nilai negatif dapat ditentukan dari data. Saya mendapat sedikit keuntungan dari melakukan ini dalam skenario recsys. Dalam hal apa pun ... akankah Anda menyarankan cara lain untuk membedakan antara item yang dilihat satu kali dan tidak dipilih vs terlihat N kali dan tidak pernah dipilih selain imputasi negatif?
cwharland