Decision Tree dengan R
Contoh Kasus : Klasifikasi Tanaman Iris Menjadi 3 Spesies
Tidak sedikit analogi pohon ada dalam kehidupan nyata, hingga masuk kedalam dunia machine learning dimana sebuah decision tree dapat digunakan untuk masalah klasifikasi dan regresi. Dalam analisis keputusan, decision tree dapat digunakan untuk pengambilan keputusan. Dengan melihat visual dari decison tree tersebut, dapat dikatakan bahwa ia menggunakan keputusan seperti pohon.
Klasifikasi adalah proses dua tahap, tahap pembelajaran dan tahap prediksi. Pada tahap pembelajaran, model dikembangkan berdasarkan data training yang diberikan. Pada tahap prediksi, model digunakan untuk memprediksi respon dari data yang diberikan.
Attribute Selection Measures
Attribute Selection Measures (ASM) adalah heuristik untuk memilih kriteria pemisahan data partisi dengan cara terbaik. Ini juga dikenal sebagai aturan pemisahan karena membantu kita untuk menentukan breakpoint untuk tuples pada node tertentu. ASM memberikan peringkat ke setiap atribut dengan menjelaskan data set yang diberikan. Atribut skor terbaik akan dipilih sebagai atribut splitting. Dalam kasus atribut bernilai berkelanjutan, split point untuk cabang juga perlu didefinisikan. Langkah-langkah seleksi yang paling populer adalah Information Gain, Gain Ratio, dan Gini index.
Information Gain
Information Gain adalah penurunan entropi. Information Gain menghitung perbedaan antara entropi sebelum pemisahan dan entropi rata-rata setelah pemisahan data set berdasarkan nilai atribut yang diberikan. Algoritma decision tree ID3 (Iterative Dichotomiser) menggunakan perolehan informasi.
Di mana, Pi adalah probabilitas bahwa tuple sewenang-wenang di D milik kelas Ci.
Dimana:
- Info(D) adalah jumlah rata-rata informasi yang diperlukan untuk mengidentifikasi label kelas dari tuple di D.
- |Dj|/|D| bertindak sebagai berat partisi jth.
- InfoA(D) adalah informasi yang diharapkan diperlukan untuk mengklasifikasikan tuple dari D berdasarkan partisi oleh A.
Atribut A dengan perolehan informasi tertinggi, Gain(A), dipilih sebagai atribut splitting di node N().
Gain Ratio
Information gain bias untuk atribut dengan banyak hasil. Ini berarti lebih suka atribut dengan sejumlah besar nilai yang berbeda. Misalnya, pertimbangkan atribut dengan pengidentifikasi unik seperti aplikasi customer_ID nol info(D) karena partisi murni. Ini memaksimalkan perolehan informasi dan menciptakan partisi yang tidak berguna. Gain Ratio menangani masalah bias dengan menormalkan perolehan informasi menggunakan Split Info.
Dimana:
- |Dj|/|D| bertindak sebagai berat partisi jth.
- v adalah jumlah nilai diskrit dalam atribut A.
Gain Ratio dapat didefinisikan sebagai
Atribut dengan perolehan rasio tertinggi dipilih sebagai atribut splitting .
Gini index
Algoritma decision tree, CART (Classification and Regression Tree) menggunakan metode Gini untuk membuat split points.
Di mana, pi adalah probabilitas bahwa tuple di D milik kelas Ci.
Gini index mempertimbangkan pemisahan biner untuk setiap atribut. kita dapat menghitung jumlah tertimbang dari ketidakmurnian setiap partisi. Jika biner split pada atribut A partisi data D ke D1 dan D2, Gini index D adalah:
Dalam kasus atribut bernilai diskrit, subset yang memberikan Gini index minimum untuk yang dipilih dipilih sebagai atribut splitting. Dalam kasus atribut bernilai berkelanjutan, strateginya adalah memilih setiap pasangan nilai yang berdekatan sebagai titik pecah dan titik dengan Gini index yang lebih kecil yang dipilih sebagai splitting point.
Atribut dengan Gini index minimum dipilih sebagai atribut splitting. (sumber)
Berikut merupakan contoh studi kasus yang saya buat dengan menerapkan decision tree menggunakan R.
Packages yang Digunakan
Packages yang saya gunakan dalam menyelesaikan contoh decision tree. Pastikan packages tersebut ter-instal dengan baik sebelum melakukan import packages.
library(party)
library(gmodels)
Import Data Set
Dalam contoh kali ini, saya menggambil data iris species dari Kaggle atau dapat teman-teman akses disini. Saya unduh datanya kemudian import ke dalam RStudio.
iris <- read.csv(file.choose(),header=TRUE, sep=",")
head(iris)
Dapat dilihat datanya sebagai berikut.
Membersihkan Data
Setelah import data kita dapat melihat apakah jenis data pada kolom Species sudah merupakan factor, jika belum kita dapat mengubahnya dengan menggunakan fungsi “as.factor”. Kemudian kita dapat menghilangkan kolom id karena kolom tersebut tidak kita pakai.
str(iris)
iris$Species <- as.factor(iris$Species)
iris$Id <- NULL
str(iris)
Berikut merupakan struktur data iris plant setelah dibersihkan.
Data Training & Data Testing
Kita dapat membagi iris dataset kedalam data training dan data testing. Data training merupakan dataset yang dapat digunakan untuk mencapai goal, sedangkan data testing merupakan dataset yang harus dicapai (goal).
set.seed(1234)
ind <- sample(2, nrow(iris), replace=T, prob = c(0.7, 0.3))
iris.train <- iris[ind==1, ]
iris.test <- iris[ind==2, ]
Membuat Decision Tree
Dalam pembuatan pohon keputusan atau decision tree, kita dapat menggunakan data training.
iris.formula <- Species ~ SepalLengthCm + SepalWidthCm +
PetalLengthCm + PetalWidthCm
iris.ctree <- ctree(iris.formula, data=iris.train)
plot(iris.ctree)
Berikut merupakan decision tree yang telah dibuat.
Cara membacanya, misal di node 2 dibaca jika panjang kelopak ≤ 1.9 cm artinya masuk ke dalam spesies Iris-Setosa. Contoh selanjutnya, misal di node 5 dibaca jika panjang kelopak > 1.9 kemudian lebar kelopak ≤ 1.7 dan panjang kelopak pada node empat ≤ 4.4 artinya masuk ke dalam spesies Iris-Versicolor.
Membuat Prediksi
Pada decision tree sebelumnya, hanya terdapat 112 tanaman iris, sisanya denga probabilitas 0.3 kita dapat melanjutkannya menggunakan prediksi dengan syntax berikut.
CrossTable(iris.test$Species,predict(iris.ctree, iris.test))
Berikut merupakan output-nya.
Dari output diatas, terdapat 10 tanaman iris yang masuk kedalam spesies iris-sentosa, kemudian terdapat 14 tanaman iris yang masuk kedalam spesies iris-virginica, terdapat 12 tanaman iris yang masuk kedalam spesies iris-versicolor, dan terdapat 2 tanaman iris yang bias masuk kedalam spesies iris-versicolor atau iris-virginica. Selain itu kita dapat melihat kontribusi chi-square setiap spesies.