Classification with Decision Tree in RStudio
Hallo, Data Addict!
Assalamualaikum, dikesempatan ini kita akan mencoba membuat pohon keputusan (decision tree) menggunakan RStudio.
Apa itu DATA MINING?
Data Mining adalah sebuah proses menggunakan teknik kecerdasan buatan, matematika, statistika, serta machine learning untuk mengekstraksi, mengidentifikasi serta menghasilkan informasi yang bermanfaat dan pengetahuan yang terkait dari suatu database yang besar (Pudjiantoro, 2011).
Pada kesempatan ini, kita akan membahas mengenai penerapan salah satu algoritma pada teknik klasifikasi data mining dengan menggunakan bahasa pemrograman Python.
Apa itu KLASIFIKASI?
Klasifikasi adalah suatu teknik dalam Data Mining ataupun Machine Learning. Klasifikasi bertujuan untuk menemukan model dengan pengelompokan data dimana data yang digunakan tersebut mempunyai kelas label atau target. Salah satu algoritma pada teknik klasifikasi yang paling populer dan banyak digunakan dalam penelitian adalah algoritma Decision Tree.
Lalu, apa yang dimaksud dengan DECISION TREE?
Decision Tree (Pohon Keputusan) merupakan 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.
STRUKTUR DECISION TREE
- Simpul root (akar) adalah bagian node paling atas atau titik awal dari decision tree
- Internal node adalah node percabangan dimana terdiri dari satu input dan setidaknya dua output
- Simpul leaf (daun) adalah bagian node terakhir sehingga memuat keputusan akhir dari permasalahan
KELEBIHAN DECISION TREE
- Memiliki tingkat akurasi yang lebih baik,
- Dapat menemukan kombinasi data yang tidak terduga.
- Area keputusan yang sebelumnya kompleks dan sangat global dapat dibuat lebih sederhana dan lebih spesifik.
ASUMSI DECISION TREE
- Decision maker hanya mengambil satu keputusan,
- Setiap keputusan hanya mempunyai outcomes tertentu,
- Semua proses menunjukkan tahapan waktu (time sequence).
ANALISIS YUKK~
Studi Kasus
Kali ini kita akan menggunakan dataset Carseats
yang telah tersedia di RStudio guna melakukan analisis untuk mengklasifikasikan jumlah penjualan carseats dari 400 toko berbeda untuk mengetahui apakah penjualan yang terjadi tergolong rendah ataukah tinggi.
Load Data
Pertama, install terlebih dahulu packages yang akan digunakan dalam melakukan analisis decision tree yaitu packages ISLR dan tree.
Kedua, setelah berhasil menginstall dan memanggil packages selanjutnya load data carseats seperti berikut,
dari data penjualan carseats diatas, terdapat 11 variabel yang digunakan didalamnya yaitu:
Variabel yang akan dijadikan sebagai target analisis yaitu variabel Sales, dengan 10 variabel lainnya merupakan variabel independen yang dapat mempengaruhi atau membantu dalam menggolongkan variabel dependen menjadi dua klasifikasi yaitu rendah atau tinggi.
Ketiga, untuk dapat mengetahui tipe data dari masing-masing variabel yang digunakan dalam analisis dapat menggunakan fungsi ‘class’,
dengan hasil sebagai berikut,
atau untuk lebih jelasnya ada pada tabel berikut,
ANALISIS DECISION TREE
Pertama, kita akan menampilkan histrogram dari variabel “Sales” untuk melihat frekuensi penjualan,
hist(carseats$Sales)
Kedua, untuk melakukan kategori dari variabel dependen yaitu variable ‘Sales’, jika penjualan sebesar < 8000 akan dikatakan bahwa penjualan tergolong tidak tinggi atau rendah maka akan di kategorikan dengan ‘No’, sedangkan untuk lainnya akan dikatakan penjualan tergolong tinggi apabila > 8000 maka akan dikategorikan ‘Yes’,
hasilnya sebagai berikut,
Ketiga, buatlah model dengan decision tree dengan fungsi “tree”, dimana variabel ‘Sales’ sudah tidak digunakan kembali karena telah tergantikan oleh variabel ‘High’, dan hasilnya adalah …
hasil dari analisis diatas dijelaskan bahwa variabel yang akan digunakan dalam struktur decision tree tersebut adalah ‘ShelveLoc’, ‘Price’, ‘Income’, ‘ComPrice’, ‘Population’, ‘Advertising’, ‘Age’, dan ‘US’. Selain itu, terlihat ada beberapa informasi yang ada pada output diatas :
- Number of terminal nodes : 27 artinya akan terdapat 27 keputusan dalam pohon keputusan.
- Residual mean deviance : 0.4575 merupakan total residual deviance yang dibagi dengan jumlah pengamatan lalu dikurang dengan jumlah daun pada pohon sehingga diperoleh hasil sebesar 0.4575, dimana total residual deviance diperoleh dari jumlah kuadrat residual.
- Misclassification error rate : 0.09 digunakan sebagai evaluasi model yang diperoleh dari jumlah observasi misklasifikasi yang dibagi dengan jumlah observasi, sehingga diperoleh hasil sebesar 0.09.
Keempat, membuat plot decision tree dari model yang telah didapat,
dilihat dari hasil output decision tree diatas dapat dikatakan bahwa dengan ‘ShelveLoc’ Bad dan Medium, dengan ‘Price’ kurang dari 135, serta ‘Income’ kurang dari 46 maka akan memiliki ‘Sales’ kurang dari 8, pada terminal node terakhir dapat dilihat jelas dengan label ‘Yes’ atau ‘No’, dan pada setiap simpul pemisah, variabel dan nilai pilihan pemisahan selalu ditampilkan (misalnya, ‘CompPrice’<124.5 atau ‘Advertising’ <13,5).
Data Train dan Data Test
Memangkas pohon keputusan yaitu dengan membuat data train dan data test dengan membagi kerangka data carseats yang dimiliki menjadi 250 data untuk data train dan 150 untuk data test.
Pertama, menetapkan seed untuk membuat hasil yang dapat di reproduksi. Kemudian mengambil sampel secara random atau acak tanpa pengembalian. Pada syntax dibawah, lakukan pengambilan sampel dari set 1 hingga n, dimana n sebesar 400 dan sampel yang akan diambil berukuran 250.
dari hasil diatas, yang menjadi data train yaitu data ke 42, 264, 316, …, 388.
Kedua, membuat plot decision tree dengan data train yang telah diperoleh sebelumnya dan melakukan analisis pada hasil yang didapatkan,
Dari plot decision tree telah menunjukkan bahwa plot yang ditampilkan berbeda dengan plot sebelumnya, hal tersebut dikarenakan dataset yang digunakan berbeda. Namun pada dasarnya kompleksitas dari pohon diatas ataupun sebelumnya adalah tetap sama.
Dari pohon keputusan diatas, dapat dilihat bahwa node tertinggi yaitu variabel ‘ShelveLoc’, dengan demikian kualitas shelveLoc dijadikan sebagai faktor yang paling menentukan penjualan produk carseats. Selanjutnya terdapat node keputusan A yaitu ‘Price’, dan begitu seterusnya.
Ketiga, melakukan prediksi dan melihat tingkat akurasi yang dihasilkan,
Berdasarkan hasil diatas dapat didapatkan beberapa informasi sebagai berikut :
- Frekuensi untuk prediksi penjualan rendah dan data aktual menunjukkan rendah adalah sebanyak 72. Keadaan ini disebut sebagai true positive,
- Frekuensi untuk prediksi penjualan tinggi namun pada data aktual menunjukkan rendah ada sebanyak 19. Keadaan ini disebut dengan false positive,
- Frekuensi untuk prediksi penjualan rendah namun data aktual menunjukkan penjualan tinggi sebanyak 16. Keadaan seperti ini disebut sebagai false negative,
- Frekuensi untuk prediksi penjualan tinggi dan data aktual menunjukkan tinggi adalah sebanyak 43 . Keadaan seperti ini disebut sebagai true negative.
Dan didapatkan nilai akurasi dari model dengan dataset train sebesar 76.67% atau hasil klasifikasi yang dihasilkan sudah baik.
Kesimpulan
Berdasarkan analisis decision tree yang telah dilakukan sebelumnya, dapat diperoleh beberapa kesimpulan sebagai berikut:
- Penjualan Carseats masih tergolong rendah, hal ini terlihat pada nilai ‘No’ yang lebih besar dibandingkan dengan nilai ‘Yes’ pada tabel klasifikasi.
- Variabel ‘ShelveLoc’ (kualitas Carseats) adalah faktor yang sangat menentukan pada jumlah penjualan Carseats.
Untuk dapat meningkatkan jumlah penjualan Carseats, maka harus meningkatkan faktor ‘ShelveLoc’ atau kualitas dari Carseats itu sendiri.
TERIMAKASIH, Wassalamualaikum~