Saya ingin menerapkan model dinamis untuk merekomendasikan film kepada pengguna. Rekomendasi tersebut harus diperbarui setiap kali pengguna menonton film atau menilai film itu. Sederhananya, saya berpikir untuk mempertimbangkan dua faktor:
- peringkat masa lalu dari film lain oleh pengguna
- waktu dimana pengguna menonton film terakhir tertentu
Bagaimana seseorang menyiapkan model seperti itu, dan apa yang direkomendasikan oleh literatur akademik?
Saya baru di bidang ini dan saya menduga bahwa model regresi linier dapat memberikan hasil yang baik, tidak terlalu suka dengan metode yang lebih kompleks untuk menghindari memaksakan ketidakpastian yang tidak perlu dalam estimasi parameter. Tapi mungkin sudah ada metode yang sudah umum digunakan dalam praktik?
machine-learning
recommender-system
dynamic-regression
JohnAndrews
sumber
sumber
Jawaban:
Ini sebenarnya masalah yang relatif terkenal di bidang pembelajaran mesin. Pada ~ 2006 Netflix menawarkan $ 1juta untuk algoritma yang memberikan peningkatan masuk akal terbaik untuk sistem rekomendasi mereka. Teori solusi yang menang dibahas secara singkat dalam buku teks Caltech ini tentang pembelajaran mesin pengantar.
Pada dasarnya metode pembelajaran ensemble digunakan. Secara khusus, jenis pencampuran atau penumpukan digunakan. Ini tidak trivial, tapi agak intuitif. Untuk memahami intuisi menggunakan pendekatan statistik yang berbeda dalam harmoni, pertimbangkan alasan berbeda orang yang berbeda menyukai film yang sama: yaitu, Joe mungkin menyukai Topgun karena ia menyukai film aksi 80-an, sementara Jane menyukai Topgun karena ia menyukai film dengan soundtrack Kenny Loggins. Jadi fakta bahwa kedua penonton menonton (dan menilai film dengan sangat) tidak berarti mereka akan menyukai film lain dengan probabilitas tinggi. Algoritma prediksi idealnya dapat mengakomodasi perbedaan-perbedaan ini, setidaknya dalam beberapa kapasitas.
Ini mungkin membuat solusi terdengar cukup sederhana, tetapi menyeimbangkan algoritma yang bersaing dan memprioritaskan tebakan terbaik untuk setiap kasus jelas tidak sederhana. Fakta bahwa Netflix menawarkan hadiah besar seperti itu harus membuat besarnya tantangan itu menjadi jelas.
Jika Anda baru memulai pembelajaran mesin, memeriksa sumber daya di atas mungkin membantu tergantung pada tingkat minat Anda dan latar belakang matematika Anda. Jadi regresi mungkin akan bekerja baik-baik saja, tetapi kinerja yang jauh lebih baik adalah mungkin.
sumber
Setengah tantangan dalam masalah ini adalah mengetahui apa yang harus dicari.
Anda mungkin telah menambahkan tag tanpa menyadarinya, tetapi Anda sebenarnya mencari info tentang sistem yang merekomendasikan . Anda mungkin ingin memulai dengan pemfilteran kolaboratif , atau lebih baik lagi Buku Pegangan Pengantar Sistem Rekomendasi oleh Ricci, Rokach, dan Shapira yang dikutip di halaman itu.
sumber
Anda harus memeriksa kursus Andrew Ng di Coursera: https://www.coursera.org/learn/machine-learning Ini memiliki pelajaran tentang membangun sistem rekomendasi, yang tampaknya seperti yang Anda cari. Pada dasarnya ini adalah bentuk regresi linier yang mempelajari atribut sintetis untuk film dari orang yang menilai film dan menggunakannya untuk memprediksi rekomendasi untuk orang yang tidak memberi peringkat / menonton film.
sumber
Dalam Tantangan Netflix (Okt 2006 - Sep 2009), sebuah ansambel yang sangat besar (107 submodels terpisah) memenangkan hadiah utama $ 1 juta pada akhirnya, tetapi penting untuk dicatat bahwa algoritma sederhana (non-ansambel) pertama yang mengalahkan Netflix Cinematch benchmark didasarkan pada SVD umum (matriks jarang). Tonggak pertama mengalahkan Cinematch ini dicapai hanya 6 hari setelah kompetisi dimulai oleh tim yang disebut WXYZConsulting.
SVD (Singular Value Decomposition) adalah algoritma faktorisasi matriks di mana Anda mulai dengan
[user, movie]
matriks 2d dengan peringkat (1 hingga 5 bintang) di setiap[u, m]
posisi (*), dan memecahnya menjadi 3 matriks di mana matriks tengah adalah matriks kuadrat dari interaksi laten antara pengguna dan film.Anda dapat membuat peringkat matriks kuadrat lebih kecil atau lebih besar untuk memasukkan lebih banyak atau kurang interaksi faktor laten tersebut.
Ada beberapa implementasi perangkat lunak bebas SVD yang cepat / efisien. Misalnya redsvd, atau vowpal-wabbit jadi sebelum Anda menulis sendiri, Anda mungkin ingin mencobanya.
(*) Sebagian besar entri ini adalah nol, karena sebagian besar pengguna belum memberi peringkat pada sebagian besar film. yaitu matriks sangat jarang.
Referensi:
sumber