top of page

Sistem Rekomendasi Nama Bintang

Writer's picture: Adib Ahmad IstiqlalAdib Ahmad Istiqlal

Menurut Sanjoyo (2010), sistem rekomendasi adalah sistem yang bertujuan untuk memperkirakan informasi yang menarik bagi pengguna dan juga membantu user dalam menentukan pilihannya. Sistem rekomendasi bisa menjadi sebuah solusi dalam peningkatan peluang khususnya dalam dunia bisnis. Menurut CNBC tahun 2016-2018 menyatakan peningkatan sepatu sneakers mencapai 50-70% dari peningkatan tersebut banyak konsumen bingung memilih jenis sneakers apa yang cocok baginya. Disinilah peran sistem rekomendasi sebagai sang "pelayan ajaib", dengan bantuan teknologi yang memumpuni konsumen dapat mudah mengetahui jenis sneakers yang baik baginya dan sang perusahaan dapat memberikan pelayanan serta peningkatan bisnis.


Sistem rekomendasi sangat berguna dalam kehidupan sehari-hari dan pada penelitian ini berusaha untuk memberikan rekomendasi nama planet berdasarkan namanya. Hal ini dasarkan membantu meningkatkan minat rakyat Indonesia terhadap dunia astronomi


Business Understanding

Pada pernyataan yang telah dijelaskan, sehingga masalah yang diangkat adalah

  1. Bagaimana implemntasi sistem rekomendasi berbasis content based filtering?

  2. Bagaimana kemampuan content based filtering dalam memberikan rekomendasi?

Tujuan dari masalah yang diangkat adalah

  1. Mengetahui cara implementasi sistem rekomendasi berbasis content based filtering

  2. Mengetahui kemampuan *content based filtering* dalam melakukan rekomendasi

Solusi Statements

Solusi yang dapat dilakukan

  • Menggunakan library seaborns sklearn

  • Menggunakan cosine similarity

  • Menggunakan pandas dan numpy

  • Menggunakan precision sebagai evaluasi

Data Understanding


Dataset yang digunakan pada penelitian ini adalah dataset astronomi tentang planet yang didapatkan dari [Kaggle](https://www.kaggle.com/datasets/amit1235813/gaia-astronomical-data). Adapun kolom-kolom pada dataset ini, antara lain:

  • type : tipe-tipe dari planet yang tersedia

  • name : nama dari planet-planet

  • glon : Foto pengguna

  • glat : Lamanya Session pengguna pada sistem yang tercatat

  • distance (parsecs) : Lamanya penggunaan aplikasi perusahaan oleh pengguna

  • x (parsecs)

  • y (parsecs)

  • z (parsecs)

  • radius (parsecs)

  • log10 age (years)

  • Arm (masers)

  • Source : Sumber perhitungan.

Note : parsecs adalah satuan jarak tertua dimana perhitungan tersebut memanfaatkan trigonometri dengan bumi sebagai titik awal sudutnya. Sehingga, x, y, z dan radius merupakan perhitungan trigono "mentahannya"


Pada kolom diatas, kolom yang digunakan adalah kolom 'type','name', 'distance (parsecs)' dengan name sebagai kolom yang sebagai yang akan direkomendasi dengan ukuran data 2557 baris dan 12 kolom


Tahapan yang dilakukan untuk memahami data adalah.

- Pemilihan kolom dan cek nilai null pada kolom yang dipilih dengan pandas


Data Preparation

Data tidak memiliki data NaN dari 2557 data yang tersedia. Setelah mengubah data dari list (dengan setiap panjang data ialah 2557) akan dimasukkan kedalam dataframe dalam bentuk dictionary dengan variable astronom.


Tahapan selanjutnya melakukan TF-IDF untuk menghitung bobot dari setiap tipe menggunakan library sklearn. Membuat variable baru dengan nama data yang menyimpan dataframe sebelumnya dan variable tf sebagai fungsi TF-IDF Melakukan extract dan get feature dari tipe planet yang ada pada data ['association', 'cluster', 'hii', 'maser', 'ob', 'open', 'region']

Setelah melakukan get feature yang tersedia, maka ditransformasikan menjadi kolom dan apabila di shape akan mendapatkan menjadi 2557 baris dan 7 kolom.


Setelah melakukan extract fitur dan melakukan transform, selanjutnya akan dihitung cosine similarity nya. Nah ini lah tahapan bagaimana model akan menjadi "Pelayan Ajaib". Fungsi ini digunakan untuk menghitung kemiripan antar data, semakin mendekati 1 maka data tersebut semakin mirip dan sebaliknya.


Fungsi cosine similarity yang digunakan disini berasala dari sklearn dan hasil tersebut akan dibuatkan data frame dengan :

- kolom sebagai nama planet

- baris sebagai nama planet


Hal ini dikarenakan memetakan data untuk menghitung kemiripan antar nama planet


Hasil diatas dapat dilihat bahwa data memiliki tingkat kemiripan yang tinggi. Contoh UBC 119 memiliki tingkat kemiripan antara lain UPK_642, UBC 219, NGC_7218. Tetapi dengan G049.48-00.38 tingkat kemiripannya adalah 0 (nol)


Modeling and Results


def planet_recommendations(name, similarity_data=cosine_sim_df, items= data[['name', 'type', 'distance']], k=3):
    index = similarity_data.loc[:,name].to_numpy().argpartition(
        range(-1, -k, -1))
    
    closest = similarity_data.columns[index[-1:-(k+2):-1]]
    
    closest = closest.drop(name, errors='ignore')
    
    return pd.DataFrame(closest).merge(items).tail(3)

Modelling diatas bekerja dengan memanfaatkan hasil perhitungan cosine similarity dengan pengambilan data terakhir hal tersebut dikarenakan dengan fungsi tail akan mengambil data terakhir dari hasil dataframe

Kurang lebih alur model tersebut sebagai berikut :

1. Membuat parameter name, similiratiy_data (berisi dataframe cosine_sim_df), items = dataframe tanpa cosine, dan k (sebagai pengambil 3 data) yang parameter-parameter ini dibalut dengan fungsi.

2. Cari similarity dengan kata kunci name yang diinputkan dengan bantuan fungsi argpartition dengan mengambil index data yang sama

3. Setelah didapatkan, akan diambil kolom-kolom tersebut

4. Untuk mencegah data yang kita cari tetap muncul, maka data dengan "name" (sebagai input) akan di drop

5. kembalikan data dalam bentuk dataframe



Matrik evaluasi yang digunakan disini adalah presisi. Berdasarkan penelitian yang dilakukan oleh Nastiti, Putri [[3]](https://www.researchgate.net/publication/334320752_Penerapan_Metode_Content_Based_Filtering_Dalam_Implementasi_Sistem_Rekomendasi_Tanaman_Pangan/fulltext/5d248983458515c11c1f7ab8/Penerapan-Metode-Content-Based-Filtering-Dalam-Implementasi-Sistem-Rekomendasi-Tanaman-Pangan.pdf?origin=publication_detail) yang membahas sistem rekomendasi contetnt based filtering dalam tanaman pangan menyatakan hasil model yang dibuat akan dievaluasi dengan metrik presisi. Dengan penelitian yang sama, presisi adalah teknik perbandingan hasil rekomendasi dengan teknik sebenarnya. Presisi merupakan salah satu tahapan evaluasi dalam confusion matrix. Evaluasi pada confusion matrix yang sering digunakan adalah accuracy, precision, recall


Pada hasil rekomendasi, tidak diketahui TP, TN, FP, FN. Nah disini saya membuat sebuah relevant yang bersumber dari [[4]](https://towardsdatascience.com/recommendation-systems-models-and-evaluation-84944a84fb8e) sehingga formula yang didapatkan ialah seperti berikut


Hasil rekomendasi dapat dilihat bahwa tipe perhitungan dengan open cluster yang sama dengan UBC 119 adalah 10 data dari ke 10 data. Hal ini dapat dilakukan perhitungan bahwasanya hasil akurasi, precisi, rekal dan ialah 100%. Perhitungan dapat dilihat dibawah ini



Jika dilakukan perhitungan manual, diilustrasikan seperti dibawah ini

Note: Dikali 100% untuk mendapatkan hasil dalam bentuk % (persen)


Berikut Full File Codingannya




5 views0 comments

Recent Posts

See All

Comments


bottom of page