Buat Sistem Rekomendasi Film Anda Sendiri Menggunakan Python

Diterbitkan: 2021-03-09

Apakah Anda bertanya-tanya bagaimana Netflix menyarankan film yang sangat sesuai dengan minat Anda? Atau mungkin Anda ingin membangun sistem yang dapat memberikan saran seperti itu kepada penggunanya juga?

Jika jawaban Anda adalah ya, maka Anda datang ke tempat yang tepat karena artikel ini akan mengajari Anda cara membangun sistem rekomendasi film dengan menggunakan Python.

Namun, sebelum kita mulai membahas 'Bagaimana' kita harus terbiasa dengan 'Apa.'

Daftar isi

Sistem Rekomendasi: Apa Itu?

Sistem rekomendasi telah menjadi bagian yang sangat integral dari kehidupan kita sehari-hari. Dari pengecer online seperti Amazon dan Flipkart hingga platform media sosial seperti YouTube dan Facebook, setiap perusahaan digital besar menggunakan sistem rekomendasi untuk memberikan pengalaman pengguna yang dipersonalisasi kepada klien mereka.

Beberapa contoh sistem rekomendasi dalam kehidupan sehari-hari Anda antara lain:

  • Saran yang Anda dapatkan dari Amazon saat membeli produk adalah hasil dari sistem rekomendasi.
  • YouTube menggunakan sistem pemberi rekomendasi untuk menyarankan video yang sesuai dengan selera Anda.
  • Netflix memiliki sistem rekomendasi terkenal untuk menyarankan acara dan film sesuai minat Anda.

Sistem rekomendasi menyarankan produk pengguna dengan menggunakan data. Data ini dapat berupa minat yang dimasukkan pengguna, riwayat, dll. Jika Anda mempelajari pembelajaran mesin dan AI, maka Anda harus mempelajari sistem rekomendasi karena sistem tersebut menjadi semakin populer dan canggih.

Jenis Sistem Rekomendasi

Ada dua jenis sistem rekomendasi:

1. Sistem Rekomendasi Kolaboratif

Sistem rekomendasi kolaboratif menyarankan item sesuai dengan kemiripan pengguna serupa untuk item tersebut. Ini mengelompokkan pengguna dengan minat dan selera yang sama dan menyarankan produk mereka sesuai dengan itu.

Misalnya, Anda dan satu pengguna lain menyukai Sholay. Sekarang, setelah menonton Sholay dan menyukainya, pengguna lain menyukai Golmaal. Karena Anda dan pengguna lain memiliki minat yang sama, sistem pemberi rekomendasi akan menyarankan Anda menonton Golmaal berdasarkan data ini. Ini adalah penyaringan kolaboratif.

2. Sistem Rekomendasi Berbasis Konten

Sistem pemberi rekomendasi berbasis konten menyarankan item berdasarkan data yang diterimanya dari pengguna. Itu bisa didasarkan pada data eksplisit ('Suka', 'Bagikan', dll.) atau data implisit (riwayat tontonan). Sistem rekomendasi akan menggunakan data ini untuk membuat profil khusus pengguna dan akan menyarankan item berdasarkan profil tersebut.

Membangun Sistem Rekomendasi Film Dasar

Sekarang kita telah membahas dasar-dasar sistem pemberi rekomendasi, mari kita mulai membangun sistem rekomendasi film.

Kita dapat mulai membangun sistem rekomendasi film berbasis Python dengan menggunakan dataset MovieLens lengkap. Dataset ini berisi lebih dari 26 juta peringkat, 750.000 aplikasi tag yang diterapkan ke lebih dari 45.000 film. Data genom tag hadir dalam kumpulan data ini dengan lebih dari 12 juta skor relevansi.

Kami menggunakan kumpulan data lengkap untuk membuat sistem rekomendasi film dasar. Namun, Anda bebas menggunakan kumpulan data yang lebih kecil untuk proyek ini. Pertama, kita harus mengimpor semua perpustakaan yang diperlukan:

Sistem rekomendasi film dasar berbasis Python akan menyarankan film sesuai dengan popularitas dan genre film. Sistem ini bekerja berdasarkan anggapan bahwa film populer dengan aklamasi kritis akan memiliki kemungkinan besar untuk disukai oleh khalayak umum. Ingatlah bahwa sistem rekomendasi film seperti itu tidak memberikan saran yang dipersonalisasi.

Untuk menerapkannya, kami akan mengurutkan film berdasarkan popularitas dan peringkatnya dan memberikan argumen genre untuk mendapatkan film bergenre teratas:

Memasukkan

md = pd. read_csv('../input/movies_metadata.csv')

md.head()

Keluaran

dewasa milik_ke_koleksi anggaran genre video pengenal imdb_id original_title gambaran pendapatan judul
Palsu ('id'L 10194, 'nama': 'Koleksi Cerita Mainan') 30000000 [{'id': 16, 'name': 'Animasi'}… Palsu 862 tt0114709 Cerita mainan Dipimpin oleh Woody, mainan Andy hidup bahagia… 373554033 Cerita mainan
1 Palsu NaN 65000000 {{'id': 12, 'name': 'Petualangan'}… Palsu 8844 tt0113497 Jumanji Ketika saudara kandung Judy dan Peter… 262797249 Jumanji
2 Palsu ('id': 119050, 'name': 'Orang Tua Pemarah) 0 {{'id': 10749, 'name': 'Romance'}… Palsu 15602 tt0113228 Pria tua pemarah Pernikahan keluarga menghidupkan kembali… 0 Pria tua pemarah
3 Palsu NaN 16000000 {{'id': 35, 'name': 'Komedi'}… Palsu 31357 tt0114885 Menunggu untuk menghembuskan nafas Ditipu, dianiaya, dan diinjak… 81452156 Menunggu untuk menghembuskan nafas

Memasukkan

md['genres'] = md['genres'].fillna('[]').apply(literal_eval).apply(lambda x: [i['name'] for i in x] if isinstance(x, list ) lain [])

Rumus untuk Bagan Kami

Untuk membuat bagan film teratas kami, kami menggunakan peringkat TMDB. Kami akan menggunakan rumus peringkat tertimbang IMDB untuk membuat grafik kami, yaitu sebagai berikut:

Peringkat Tertimbang (WR) = (iaouaouaouaouaou)

Di sini, v adalah singkatan dari jumlah suara yang didapat sebuah film, m adalah jumlah suara minimum yang harus didapatkan sebuah film di tangga lagu, R adalah peringkat rata-rata film, dan C adalah suara rata-rata untuk keseluruhan laporan .

Membangun Bagan

Sekarang setelah kita memiliki kumpulan data dan rumus, kita dapat mulai membuat bagan. Kami hanya akan menambahkan film tersebut ke grafik kami yang memiliki minimal 95% suara. Kita akan mulai dengan membuat grafik 250 teratas.

Memasukkan

vote_counts = md[md['vote_count'].notnull()]['vote_count'].astype('int')

vote_averages = md[md['vote_average'].notnull()]['vote_average'].astype('int')

C = vote_averages.mean()

C

Keluaran

5.244896612406511

Memasukkan

m = vote_counts.quantile(0.95)

M

Keluaran

434.0

Memasukkan

md['tahun'] = pd.to_datetime(md['release_date'], errors='coerce').apply(lambda x: str(x).split('-')[0] if x != np. nan lain np.nan)

Memasukkan

memenuhi syarat = md[(md['vote_count'] >= m) & (md['vote_count'].notnull()) & (md['vote_average'].notnull())][['title', 'year ', 'jumlah_suara', 'suara_rata-rata', 'popularitas', 'genre']]

memenuhi syarat['vote_count'] = memenuhi syarat['vote_count'].astype('int')

memenuhi syarat['vote_average'] = memenuhi syarat['vote_average'].astype('int')

memenuhi syarat.shape

Keluaran

(2274, 6)

Seperti yang Anda lihat, untuk mendapatkan tempat di chart kami, sebuah film harus memiliki minimal 434 suara. Anda mungkin telah memperhatikan bahwa peringkat rata-rata yang harus dimiliki sebuah film untuk masuk ke grafik kami adalah 5,24.

Memasukkan

def weighted_rating(x):

v = x['jumlah_suara']

R = x['suara_rata-rata']

kembali (v/(v+m) * R) + (m/(m+v) * C)

Memasukkan

memenuhi syarat['wr'] = memenuhi syarat.apply(weighted_rating, axis=1)

Memasukkan

memenuhi syarat = memenuhi syarat.sort_values('wr', ascending=False).head(250)

Dengan semua ini di tempat, mari buat bagan:

Film Teratas Secara Keseluruhan

Memasukkan

memenuhi syarat.head(15)

Keluaran

judul tahun suara_hitung suara_rata-rata kepopuleran genre wr
15480 Lahirnya 2010 14075 8 29.1081 [Aksi, Thriller, Fiksi Ilmiah, Misteri, A… 7.917588
12481 Kesatria Kegelapan 2008 12269 8 123.167 [Drama, Aksi, Kejahatan, Thriller] 7.905871
22879 Antar bintang 2014 11187 8 32.2135 [Petualangan, Drama, Fiksi Ilmiah] 7.897107
2843 Klub Pertarungan 1999 9678 8 63.8696 [Drama] 7.881753
4863 Penguasa Cincin: Persekutuan Cincin 2001 8892 8 32.0707 [Petualangan, Fantasi, Aksi] 7.871787
292 Fiksi Pulp 1994 8670 8 140.95 [Thriller, Kejahatan] 7.868660
314 Penebusan Shawshank 1994 8358 8 51.6454 [Drama, Kejahatan] 7.864000
7000 The Lord of the Rings: Kembalinya Sang Raja 2003 8226 8 29.3244 [Petualangan, Fantasi, Aksi] 7.861927
351 Forrest Gump 1994 8147 8 48.3072 [Komedi, Drama, Romansa] 7.860656
5814 Penguasa Cincin: Dua Menara 2002 7641 8 29.4235 [Petualangan, Fantasi, Aksi] 7.851924
256 Perang Bintang 1977 6778 8 42.1497 [Petualangan, Aksi, Fiksi Ilmiah] 7.834205
1225 Kembali ke masa depan 1985 6239 8 25.7785 [Petualangan, Komedi, Fiksi Ilmiah, Keluarga] 7.820813
834 Ayah baptis 1972 6024 8 41.1093 [Drama, Kejahatan] 7.814847
1154 Kerajaan menyerang kembali 1980 5998 8 19.471 [Petualangan, Aksi, Fiksi Ilmiah] 7.814099
46 Se7en 1995 5915 8 18.4574 [Kejahatan, Misteri, Thriller]

Voila, Anda telah membuat sistem rekomendasi film dasar berbasis Python!

Kami sekarang akan mempersempit saran sistem rekomendasi kami menjadi berbasis genre sehingga bisa lebih tepat. Lagi pula, tidak semua orang harus menyukai The Godfather secara setara.

Mempersempit Genre

Jadi, sekarang kami akan memodifikasi sistem rekomendasi kami menjadi lebih spesifik genre:

Memasukkan

s = md.apply(lambda x: pd.Series(x['genres']),axis=1).stack().reset_index(level=1, drop=True)

s.name = 'genre'

gen_md = md.drop('genres', axis=1).join(s)

Memasukkan

def build_chart(genre, persentil=0.85):

df = gen_md[gen_md['genre'] == genre]

vote_counts = df[df['vote_count'].notnull()]['vote_count'].astype('int')

vote_averages = df[df['vote_average'].notnull()]['vote_average'].astype('int')

C = vote_averages.mean()

m = vote_counts.quantile(persentil)

memenuhi syarat = df[(df['vote_count'] >= m) & (df['vote_count'].notnull()) & (df['vote_average'].notnull())][['title', 'year ', 'jumlah_suara', 'suara_rata-rata', 'popularitas']]

memenuhi syarat['vote_count'] = memenuhi syarat['vote_count'].astype('int')

memenuhi syarat['vote_average'] = memenuhi syarat['vote_average'].astype('int')

memenuhi syarat['wr'] = memenuhi syarat.mendaftar(lambda x: (x['vote_count']/(x['vote_count']+m) * x['vote_average']) + (m/(m+x[' vote_count']) * C), axis=1)

memenuhi syarat = memenuhi syarat.sort_values('wr', ascending=False).head(250)

kembali memenuhi syarat

Kami sekarang telah membuat sistem rekomendasi yang mengurutkan film dalam genre roman dan merekomendasikan yang teratas. Kami memilih genre roman karena tidak banyak muncul di chart kami sebelumnya.

Film Romantis Teratas

Memasukkan

build_chart('Romantis').head(15)

Keluaran

judul tahun suara_hitung suara_rata-rata kepopuleran wr
10309 Dilwale Dulhania Le Jayenge 1995 661 9 34.457 8.565285
351 Forrest Gump 1994 8147 8 48.3072 7.971357
876 Vertigo 1958 1162 8 18.2082 7.811667
40251 Namamu. 2016 1030 8 34.461252 7.789489
883 Ada yang Suka Panas 1959 835 8 11.8451 7.745154
1132 Paradiso bioskop 1988 834 8 14.177 7.744878
19901 Tukang kertas 2012 734 8 7.19863 7.713951
37863 Jalan Bernyanyi 2016 669 8 10.672862 7.689483
882 Apartemen 1960 498 8 11.9943 7.599317
38718 Pelayan wanita 2016 453 8 16.727405 7.566166
3189 Lampu Kota 1931 444 8 10.8915 7.558867
24886 Penampilannya 2014 262 8 5.71127 7.331363
45437 Dalam Detak Jantung 2017 146 8 20.82178 7.003959
1639 Raksasa 1997 7770 7 26.8891 6.981546
19731 Buku pedoman dengan garis perak 2012 4840 7 14.4881 6.970581

Sekarang, Anda memiliki sistem rekomendasi film yang menyarankan film teratas menurut genre yang dipilih. Kami merekomendasikan untuk menguji sistem rekomendasi ini dengan genre lain juga seperti Action, Drama, Suspense, dll. Bagikan tiga film teratas dalam genre favorit Anda yang disarankan oleh sistem rekomendasi di bagian komentar di bawah

Pelajari Lebih Lanjut Tentang Sistem Rekomendasi Film

Seperti yang harus Anda perhatikan sekarang, membangun sistem rekomendasi film berbasis Python, cukup sederhana. Yang Anda butuhkan hanyalah sedikit pengetahuan tentang ilmu data dan sedikit upaya untuk membuat sistem rekomendasi yang berfungsi penuh.

Namun, bagaimana jika Anda ingin membangun sistem rekomendasi yang lebih canggih? Bagaimana jika Anda ingin membuat sistem rekomendasi yang mungkin dipertimbangkan untuk digunakan oleh perusahaan besar?

Jika Anda tertarik untuk mempelajari lebih lanjut tentang sistem rekomendasi dan ilmu data, maka kami sarankan untuk mengambil kursus ilmu data. Dengan kursus, Anda akan mempelajari semua konsep dasar dan lanjutan dari ilmu data dan pembelajaran mesin. Selain itu, Anda akan belajar dari pakar industri yang akan memandu Anda selama kursus untuk membantu Anda menghindari keraguan dan kebingungan.

Di upGrad, kami menawarkan beberapa kursus ilmu data dan pembelajaran mesin. Anda dapat memilih siapa saja dari berikut ini tergantung pada minat Anda:

  • Diploma PG dalam Ilmu Data
  • Master of Science dalam Ilmu Data
  • Sertifikasi PG dalam Ilmu Data
  • Diploma PG dalam Pembelajaran Mesin dan AI
  • Master of Science dalam Pembelajaran Mesin dan AI

Terlepas dari kursus ini, kami menawarkan banyak kursus lain dalam ilmu data dan pembelajaran mesin. Pastikan untuk memeriksanya!

Pikiran Akhir

Anda sekarang tahu bagaimana membangun sistem rekomendasi film. Setelah Anda membuat sistem, pastikan untuk membagikannya dengan orang lain dan tunjukkan kemajuan Anda kepada mereka. Sistem rekomendasi memiliki beragam aplikasi sehingga mempelajarinya pasti akan memberi Anda keunggulan dalam industri ini.

Apa itu pemfilteran kolaboratif dan apa jenisnya?

Pemfilteran kolaboratif adalah jenis sistem rekomendasi yang mendekati membangun model berdasarkan preferensi pengguna. Riwayat pengguna bertindak sebagai kumpulan data untuk pemfilteran kolaboratif. Pemfilteran kolaboratif terdiri dari 2 jenis yang disebutkan di bawah ini:

1. Pemfilteran kolaboratif berbasis pengguna : Gagasan di balik jenis pemfilteran kolaboratif ini adalah bahwa kami mengambil pengguna untuk preferensi, katakanlah "A" dan temukan pengguna lain yang memiliki preferensi serupa dan kemudian berikan "A" preferensi pengguna ini yang diinginkannya. belum ditemui.
Pemfilteran kolaboratif berbasis item : Di sini, alih-alih menemukan pengguna dengan preferensi serupa, kami menemukan film yang mirip dengan selera "A" dan merekomendasikan film yang belum ditonton.

Apa kelebihan dan kekurangan pemfilteran berbasis konten?

Pemfilteran berbasis konten mengumpulkan data dari pengguna dan menyarankan item yang sesuai. Beberapa kelebihannya, serta kekurangannya, disebutkan di bawah ini:
Keuntungan
1. Tidak seperti pemfilteran kolaboratif, model tidak perlu mengumpulkan data tentang pengguna lain dengan preferensi yang sama karena model ini mengambil saran dari pengguna utama itu sendiri.
2. Model dapat merekomendasikan beberapa film terbaik kepada Anda sesuai dengan preferensi Anda yang hanya beberapa orang lain yang telah menontonnya.
Kekurangan
1. Teknik ini membutuhkan banyak informasi tentang domain tertentu sehingga kualitas fitur yang diberikannya kurang lebih sama dengan fitur buatan tangan.
2. Kemampuannya untuk merekomendasikan film terbatas karena hanya berfungsi sesuai dengan minat pengguna yang ada.

Aplikasi populer mana yang menggunakan algoritma penyaringan kolaboratif?

Algoritma penyaringan kolaboratif menjadi algoritma penggerak utama untuk banyak aplikasi populer. Semakin banyak bisnis yang berfokus pada penyampaian konten pribadi yang kaya. Misalnya, Anda mungkin telah melihat pesan ini di banyak situs web e-niaga . Pelanggan yang membeli ini juga membeli.
Berikut ini adalah beberapa aplikasi yang memiliki basis pengguna populer di seluruh dunia:
1. YouTube menggunakan algoritme ini bersama dengan beberapa algoritme kuat lainnya untuk memberikan rekomendasi video di beranda.
2. Website e-commerce seperti Amazon, Flipkart, dan Myntra juga menggunakan algoritma ini untuk memberikan rekomendasi produk.
3. Platform streaming video adalah contoh terbesar di sini yang menggunakan peringkat pengguna, peringkat rata-rata, dan konten terkait untuk memberikan saran yang dipersonalisasi.