Apa metode statistik yang ada untuk merekomendasikan film seperti di Netflix?

14

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?

JohnAndrews
sumber
3
Saya pikir ini tidak terlalu luas untuk dijawab. Misalnya, ada 2 jawaban yang dipilih.
gung - Reinstate Monica
2
Coba Kumpulan Data Massive Mining coursera dan buku gratisnya!
Felipe Gerard
2
Anda mungkin ingin mencari matriks dan / atau faktorisasi tensor.
Marc Claesen
1
@ usεr11852 Jawaban saya lebih luas dari pertanyaan.
shadowtalker
1
@ usεr11852, judul pertanyaan bertanya, "Apa metode statistik yang ada ...?" Kalimat terakhir menanyakan apakah ada metode selain regresi. Saya pikir beberapa jawaban di bawah ini memberikan informasi semacam ini.
gung - Reinstate Monica

Jawaban:

14

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.

d0rmLife
sumber
2
+1 untuk hadiah Netflix. Seperti yang Anda tunjukkan, hadiah itu adalah indikator yang baik tentang seberapa besar tantangan ini.
Cort Ammon
11

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.

shadowtalker
sumber
Saya memang melihat lebih dalam pada tag, dan menemukan sebagian besar contoh pada penyaringan kolaboratif. Masalah yang saya miliki dengan metode itu adalah bahwa itu tergantung pada input pengguna lain, jika saya mengerti konsepnya. Saya lebih mencari metode dalam situasi satu pengguna, tidak ada data lain atau opsional data lain. Akan melihat referensi Anda yang lain.
JohnAndrews
1
@JohnAndrews: Saya pikir ssdecontrol memberi Anda saran yang paling relevan. Anda perlu melihat literatur sistem rekomendasi. Ada banyak teknik yang terlibat, misalnya. NNMF , Funk SVD , banyak varian berbeda dari pengklasifikasi tetangga terdekat , dll. Untuk menyebutkan beberapa yang jelas. Pada akhirnya Anda ingin menggunakan pemfilteran kolaboratif tetapi Anda tidak bisa begitu saja "menyelam" tanpa latar belakang apa pun.
usεr11852 mengatakan Reinstate Monic
@JohnAndrews CrossValidated biasanya merupakan tempat yang buruk untuk mulai belajar tentang suatu subjek, terutama jika Anda hanya mencari dengan tag. Bagaimana kalau melihat referensi yang saya hubungkan? Artikel statistik Wikipedia tidak selalu dapat diandalkan, tetapi ini cukup bagus dan mengutip banyak referensi.
shadowtalker
6

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.

Raphael Nikolaus
sumber
3
Selamat datang di situs kami! Terima kasih telah memasukkan beberapa informasi yang merangkum isi tautan, daripada hanya menyediakan tautan "telanjang" - kami menghargainya.
Silverfish
4

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:

diri sendiri
sumber
Apa yang digunakan Netflix sebelumnya?
Jona
2
Algoritma yang disebut "Cinematch" yang tidak umum tetapi telah dideskripsikan sebagai "kombinasi linear dari berbagai faktor yang disempurnakan selama bertahun-tahun" misalnya rata-rata peringkat global (G) + pengguna rata-rata tertimbang [u] peringkat + film rata-rata tertimbang [m] peringkat, ... dll.
arielf
Terima kasih atas jawaban yang diuraikan. Akan menggali ke dalamnya. Adapun kombinasi linear, bukan masalah besar parameterisasi yang berlebihan? Itu akan menjadi pendekatan pilihan saya. Tapi SVD terdengar menjanjikan.
JohnAndrews
Tidak masalah jika Anda hanya menambahkan faktor yang meningkatkan kesalahan generalisasi . Jelas, Anda perlu menguji setiap penambahan pada data yang tidak terlihat untuk mendapatkan kepercayaan yang diperlukan.
arielf