PENDAHULUAN

Assalamualaikum teman-teman, apakah anda pernah mendengar kata Data Mining? Tau gak sih apa itu Data Mining ? Bagaimana Data Mining mampu menghasilkan sebuah keputusan dari sebuah permasalahan? Apa itu klasifikasi? Serta apa itu Decision Tree dan Python sebagaimana yang dimaksud dalam judul?  

Nah jika anda adalah seseorang yang tertarik dibidang data mining wajib tau nih, apalagi jika anda seorang mahasiswa yang mempelajari dunia teknologi masa kini. Nyatanya teknologi tidak terpaku pada software dan hardware saja loh. Ada ilmu penting lainnya yang dapat anda pelajari untuk menambah wawasan dan mempermudah penyelesaian masalah loh, salah satunya yaitu ilmu Data Mining ini.

Bagi yang baru mengenal dunia Data Mining semoga bisa memahami penjelasan dibawah ini ya serta selamat mencoba! Untuk yang sudah terjun dalam dunia Data Mining yuk sama-sama memperdalam ilmu dengan membaca artikel ini.

Apa itu DATA MINING?

Data Mining adalah sebuah proses menggunakan teknik kecerdasan buatan, matematika, statistik, serta machine learing untuk mengektraksi, mengindentifikasi  serta menghasilkan informasi yang bermanfaat dan pengetahuan yang terkait dari suatu database yang besar (Pudjiantoro, 2011).

Data Mining juga merupakan suatu metode pengolahan data untuk menemukan dan menentukan pola tersembunyi dari kumpulan data. Hasil dari pengolahan data tersebut dapat digunakan untuk mengambil sebuah keputusan dimasa yang akan datang. Terdapat beberapa teknik dalam Data Mining diantaranya adalah Klasifikasi, Klustering, Estimasi, Asosiasi, dan Prediksi.

Pada kesempatan kali ini kita akan membahas mengenai penerapan salah satu algoritma pada teknik klasifikasi data mining dengan menggunakan Bahasa pemrograman Python.  Python merupakan salah satu bahasa pemrograman tingkat tinggi yang diciptakan oleh Guido van Rossum. Python sudah banyak digunakan untuk membuat berbagai macam program, seperti: Game, Program GUI (desktop), Web, Aplikasi Mobile, IoT, program CLI, Program untuk Hacking, dsb.

Python juga dikenal dengan bahasa pemrograman yang mudah dipelajari karena struktur sintaknya yang rapi. Bahasa pemograman Python bagus untuk pemula yang belum pernah belajar coding sebelumnya karena bahasa pemograman ini sangat sederhana dibandingkan bahasa pemograman lainnya. Bahkan tagline websitenya menyebutkan  python akan membuatmu bekerja lebih cepat dan lebih efektif! Gimana apakah anda sudah tertarik untuk mencobanya?

Apa itu KLASIFIKASI?

Klasifikasi adalah salah satu teknik dalam Data Mining ataupun Mechine Learning. Klasifikasi bertujuan untuk menemukan model dengan pengelompokan data dimana data yang digunakan tersebut mempunyai kelas label atau target. Sehingga algoritma-algoritma untuk menyelesaikan masalah klasifikasi dikategorisasikan ke dalam supervised learning. supervised learning adalah data label atau target ikut berperan sebagai ‘supervisor’ atau ‘guru’ yang mengawasi proses pembelajaran dalam mencapai tingkat akurasi atau presisi tertentu. Salah satu algoritma pada teknik klasifikasi yang paling popular dan banyak digunakan dalam penelitian adalah algoritma Decision Tree.

Lalu apa yang dimaksud dengan DECISION TREE?

Apa yang dimaksud dengan decision tree analysis pada analisis ...Decision Tree (pohon keputusan) adalah salah satu teknik klasifikasi sebagai bagian dari ilmu Data Mining. Algoritma Decision Tree melakukan penggalian pengetahuan terhadap data yang tersedia dengan model prediksi menggunakan struktur pohon atau struktur berhirarki. Decision Tree berkonsep mengubah data menjadi hirarki dan aturan-aturan keputusan.

Manfaat utama dari penggunaan teknik ini yaitu kemampuannya untuk mem-break down proses pengambilan keputusan yang kompleks menjadi lebih simple, sehingga pengambil keputusan akan lebih menginterpretasikan solusi dari permasalahan. Kelebihan lain dari metode ini adalah mampu mengeliminasi perhitungan atau data-data yang kiranya tidak diperlukan.

Kemudian, bagaimana penerapan algortima Klasifikasi Decision Tree dengan Python?

Check this out!

Sebelum kita membahas lebih lanjut mengenai penerapan algortima klasifikasi Decision Tree dengan Python. Terdapat beberapa hal yang perlu anda siapkan terlebih dahulu, diantaranya adalah:

  1. Niat
    Ini yang paling penting nih, tanpa ada niat maka mustahil anda bisa mengerjakan ini. Hehe. Jangan lupa dipasang dulu niatnya ya teman-teman.
  2. Dataset
    Dataset diperlukan untuk mengolah algoritmanya. Jika tidak ada dataset, lalu apa yang akan kita proses? Jangan lupa dataset yang digunakan adalah dataset yang sudah memiliki label atau kelas yaa!
  3. Python + Jupyter Notebook
    Nah, Bahasa pemrograman yang kami gunakan saat ini adalah Python 3.0, sedangkan untuk tools nya kami menggunakan Jupyter notebook

Oke langsung saja,

  1. Dataset yang akan kami gunakan aadalah dataset untuk menentukan status kelayakan penerima beasiswa yang terdiri dari 2 kelas yaitu kelas Ya Layak dan Tidak Layak menerima beasiswa serta terdiri dari 6 atribut/feature antara lain:
    • Jenis Tinggal (JT)
    • Alat Transportasi (AT)
    • Pekerjaan Ayah (PKA)
    • Penghasilan Ayah (PHA)
    • Pekerjaan Ibu (PKI)
    • Penghasilan Ibu (PHI)

Berikut merupakan dataset yang telah melalui proses preprocessing dan siap untuk diproses kedalam teknik klasifikasi. Dataset yang digunakan sebanyak 240 record yang akan dibagi menjadi data training dan data testing dengan menggunakan teknik hold-out 70%-30%, dimana masing-masing data training berjumlah sebesar 70% dari total data yaitu  168 record dan data testing berjumlah 72 record dengan persentase 30% dari keseluruhan data.

Data Training yang digunakan

NoNamaJKJTATPKAPHAPKIPHIStatus Kelayakan
1S-1L0,5001,0000,0830,6250,8331,000Tidak
2S-2L0,2500,1430,6670,3750,8331,000Tidak
3S-3L0,2501,0000,6670,5000,8331,000Tidak
4S-4L0,2500,2860,5000,2500,8331,000Tidak
5S-5L0,2500,0000,0000,5000,9170,875Tidak
6S-6P0,2501,0000,3330,5000,0830,875Tidak
7S-7L0,2500,2860,6670,2500,8331,000Tidak
8S-8L0,2500,0000,0830,5000,8331,000Tidak
9S-9L0,2500,2860,9170,3750,8331,000Tidak
10S-10P0,2501,0000,0830,6250,6670,625Tidak
168S-168P0,2500,5710,0830,6250,6670,625Tidak

Data Testing yang digunakan

NoNamaJKJTATPKAPHAPKIPHIStatus Kelayakan
1S-169L0,2500,1430,9170,5000,5001,000Tidak
2S-170P0,2501,0000,6670,7500,6670,625Tidak
3S-171P0,2501,0000,9170,5000,8331,000Tidak
4S-172L0,2501,0000,0830,6250,8331,000Tidak
5S-173L0,2501,0001,0000,6251,0000,500Tidak
6S-174L0,2500,0000,9170,5000,8331,000Tidak
7S-175L0,2501,0000,3330,5000,8331,000Ya
8S-176L0,2501,0000,9170,5000,8331,000Tidak
9S-177P0,2501,0000,0830,8750,8331,000Ya
10S-178L0,2501,0000,9170,5000,8331,000Tidak
72S-240P0,2501,0000,9170,6250,8331,000Tidak
  1. Jika data training dan data testing telah tersedia, kemudian buka lembaran kerja pada jupyter notebook lalu import beberapa library yang diperlukan, sebagaimana dibawah ini.
import pandas as pd
import numpy as np

from sklearn.preprocessing import LabelEncoder
from sklearn.metrics import accuracy_score, f1_score
from sklearn.tree import DecisionTreeClassifier

from sklearn.tree import plot_tree
import matplotlib.pyplot as plt
  1. Kemudian, import data yang akan digunakan sebagaimana dibawah ini
def read_file(filename):
    df = pd.read_excel(filename)
    print(df.shape)
    df['Status Kelayakan'] = df['Status Kelayakan'].apply(lambda x: x.strip().lower())
    return df
FILE_HO_TRAIN = 'A_Train_HO.xlsx'
FILE_HO_TEST = 'A_Test_HO.xlsx'
df_ho_train = read_file(FILE_HO_TRAIN)
df_ho_test = read_file(FILE_HO_TEST)

Pada output yang dihasilkan dapat dilihat bahwa terdapat 2 dataset dengan masing-masing berjumlah 168 record & 10 row yang merupakan data training serta data dengan 72 record dengan 10 row yang merupakan data testing.

  1. Kemudian, tentukan label/kelas yang digunakan sebagaimana dibawah ini,
target_encoder = LabelEncoder()
df_ho_train['Target'] = target_encoder.fit_transform(df_ho_train['Status Kelayakan'])
df_ho_test['Target'] = target_encoder.transform(df_ho_test['Status Kelayakan'])
  1. Dari 10 row yang ada, tidak semua row/kolom dijadikan sebagai atribut sebagaimana penjelasan sebelumnya, agar hanya kolom atribut yang diproses maka kolom yang berfungsi sebagai label/kelas atau kolom Nomor, id, serta row pelengkap perlu didrop terlebih dahulu sebagaimana dibawah ini.
x_ho_train = df_ho_train.drop(['Status Kelayakan', 'No', 'Nama', 'Target', 'JK'], axis=1)
y_ho_train = df_ho_train['Target']

x_ho_test = df_ho_test.drop(['Status Kelayakan', 'No', 'Nama', 'Target', 'JK'], axis=1)
y_ho_test = df_ho_test['Target']
  1. Kemudian, input model algoritma decision tree untuk memproses data sekaligus melihat akurasi yang dihasilkan dengan menggunakan algoritma tersebut
model = DecisionTreeClassifier(criterion='gini')
model.fit(x_ho_train, y_ho_train)
model.score(x_ho_train, y_ho_train)
predicted= model.predict(x_ho_test)
	
accuracy_ho = accuracy_score(predicted, y_ho_test) * 100
print('Akurasi pada Algoritma Decision Tree menggunakan Hold-out dengan persentase 70:30 = %s' % accuracy_ho)

Dapat dilihat pada gambar diatas, bahwa Algoritma Decision Tree menggunakan Hold-out dengan persentase 70:30 menghasilkan akurasi sebesar 84.72%

  1. Untuk melihat visualisasi dari hasil algoritma decision tree dengan menggunakan plot tree dapat dilihat pada gambar dibawah ini,
clf = DecisionTreeClassifier(max_depth = 3)

clf.fit(x_ho_train, y_ho_train)
tree.plot_tree(clf));
fn=['AT','JT','PHA','PHI','PKA','PKI']
cn=['Ya', 'Tidak']
fig, axes = plt.subplots(nrows = 1,ncols = 1,figsize = (4,4), dpi=300)
plot_tree(clf,
               feature_names = fn, 
               class_names=cn,
               filled = True);fig.savefig('imagename.png')

Proses diatas akan menghasilkan plot tree dari algoritma Decision Tree untuk kasus status kelayakan beasiswa sebagaimana gambar berikut.

Itulah  tahap-tahap dalam mengimplementasikan algoritma decision tree dengan Bahasa pemrograman python. Selamat mencoba, semoga bermanfaat!

REFERENSI

[1]. https://www.analyticsvidhya.com/, diakses 06 Mei 2020
[2]. https://towardsdatascience.com/, diakses 05 Mei 2020
[3]. https://medium.com/, diakses 06 Mei 2020
[4]. http://jurnal.una.ac.id/index.php/jurti/article/view/298, diakses 07 Mei 2020
[5]. http://ejournal.ust.ac.id/index.php/Jurnal_Means/article/view/287, diakses 07 Mei 2020

Original Create by: Siti Syahidatul Helma & Ega Dwi Lestari

Sumber Gambar