Di sini kita akan mempelajari beberapa konsep utama sistem rekomendasi.

Ingin tahu bagaimana Google menghadirkan film yang mirip dengan yang Anda suka? Setelah membaca posting ini Anda akan mendapatkan gambaran bagus tentang cara kerja sistem rekomendasi sebenarnya.

Pada dasarnya ada empat jenis sistem rekomendasi:

  • Sistem rekomendasi berdasarkan popularitas.
  • Mesin rekomendasi berbasis konten.
  • Mesin rekomendasi berbasis pemfilteran kolaboratif.
  • Sistem Rekomendasi Hibrid. Ini pada dasarnya adalah kombinasi sistem rekomendasi berbasis pemfilteran berbasis Konten dan pemfilteran Kolaboratif.
    Dalam postingan ini fokus kami adalah pemfilteran berbasis konten.

Mesin Rekomendasi Berbasis Konten:

Sistem rekomendasi berbasis konten merekomendasikan item kepada pengguna dengan menggunakan kesamaan item. Sistem pemberi rekomendasi ini merekomendasikan produk atau barang berdasarkan deskripsi atau fiturnya. Ini mengidentifikasi kesamaan antara produk berdasarkan deskripsinya. Ini juga mempertimbangkan riwayat pengguna sebelumnya untuk merekomendasikan produk serupa.

Sekarang pertanyaan utamanya adalah bagaimana kita bisa mengukur kemiripannya?

Kesamaan:

Ukuran kesamaan adalah ukuran seberapa mirip dua objek data. Ukuran kesamaan dalam konteks penambangan data atau pembelajaran mesin adalah jarak dengan dimensi yang mewakili fitur objek. Jika jaraknya kecil maka kedua benda tersebut sangat mirip, sebaliknya kedua benda tersebut tidak mirip.

Umumnya kesamaan diukur dalam rentang 0 hingga 1 . Dalam dunia pembelajaran mesin, skor dalam rentang [0, 1] ini disebut skor kesamaan.

Secara matematis :
Kesamaan =1 jika X=Y lain 0.

Di sini X dan Y adalah dua objek.
Di sini akan dibahas tentang beberapa ukuran jarak kemiripan yang paling populer.

Kesamaan Kosinus:

Metrik kesamaan kosinus menemukan perkalian titik yang dinormalisasi dari kedua atribut. Dengan menentukan kesamaan kosinus, kita akan secara efektif mencoba mencari kosinus sudut antara dua benda.
Kemiripan kosinus terutama digunakan dalam ruang positif, yang hasilnya dibatasi dengan rapi di [0,1]. Salah satu alasan popularitas cosine-similarity adalah karena evaluasinya sangat efisien, terutama untuk vektor-vektor renggang.

Jarak Euclidean:

Jarak Euclidean juga dikenal sebagai jarak sederhana. Jika datanya padat atau kontinu, ini adalah ukuran kedekatan yang terbaik.

Jarak Euclidean antara dua titik adalah panjang lintasan yang menghubungkan kedua titik tersebut. Teorema Pythagoras memberikan jarak antara dua titik.

Jarak Manhattan:

Jarak Manhattan adalah metrik yang jarak antara dua titik dihitung sebagai jumlah perbedaan absolut koordinat Kartesiusnya. Secara sederhana, ini adalah jumlah total selisih antara koordinat x dan koordinat y.

Kumpulkan Data:

Untuk masalah ini saya memutuskan untuk menggunakan dataset yang berisi hampir 5000 film berperingkat teratas dari TMDB. Ada dua jenis file csv. Satu berisi informasi tentang anggaran, id genre film dan lainnya berisi tentang judul, pemeran, dan kru film.

Sekarang mari kita melakukan beberapa pengkodean. Mari kita lihat apa saja kumpulan data kita.

Pertama, kita akan menggabungkan kedua kumpulan data ini:

Di sini kami tidak akan bekerja dengan semua fitur kumpulan data gabungan ini. Sebaliknya kami akan memilih beberapa fitur yang kami yakini paling efektif untuk proyek ini. Ini kode untuk itu:

Sekarang kita akan memeriksa nilai data kita yang hilang:

Di sini kita akan menghilangkan nilai yang hilang tersebut karena hanya ada tiga nilai yang hilang di kolom ikhtisar.

Selanjutnya kita akan melakukan beberapa rekayasa fitur. Seperti yang bisa kita lihat bahwa format setiap kolom bukanlah format yang diinginkan. Tujuan kami adalah mengonversi elemen setiap kolom menjadi daftar sehingga kami dapat mengonversinya menjadi nilai numerik. Untuk itu kita menulis kode berikut:

Demikian pula kita akan mengubah kolom lainnya. Di kolom kru kami hanya akan mengekstrak nama direktur. Juga dari kolom pemeran kami hanya mengambil empat nama pertama. Selanjutnya kita akan membuat kolom baru dengan menggabungkan 'ikhtisar', 'kata kunci', 'pemeran', 'kru' dan 'genre'. Dan nama kolom barunya adalah 'tag'. Sekarang inilah bentuk akhir kumpulan data kami:

Selanjutnya kita akan menggunakan steaming pada kolom ‘tag’ agar kata-kata pada kolom ‘tag’ menjadi bentuk akarnya. Di sini kita akan menggunakan paket nltk untuk stemming.

Sekarang kita siap untuk menyamarkan kolom 'tag' menjadi nilai numerik. Kami akan menggunakan fungsi CountVectorizer dari paket sklearn.

Sekarang kita akan menentukan jarak antara dua film menggunakan kesamaan cosinus melalui kolom movie_id.

Kami pada dasarnya menggunakan jarak kesamaan kosinus. Berikut adalah kode untuk film serupa untuk film tertentu.

Selanjutnya kita akan mengubahnya menjadi aplikasi web melalui kerangka streamlit. Untuk itu kita akan mengkonversi data dan cos_distance kita menjadi file acar seperti di bawah ini:

Selanjutnya kita akan mengambil poster film dan rating film tertentu melalui kunci API yang dapat ditemukan dari https://www.themoviedb.org/.

Berikut adalah hasil akhir dari proyek kami:

Untuk implementasi detail, Anda dapat memeriksa tautan GitHub saya: Di Sini