Decision Tree : Metode CHAID Menggunakan Rstudio
(Studi Kasus : Data Titanic)
Assalamu’alaikum, Sahabat Data !
Analisis Chi-square Automatic Interaction Detection (CHAID)
Terdapat beberapa metode klasifikasi yaitu CHAID, KNN (K-Nearest Neighbour), Clasification and Regression Tree (CART), dan Naïve Bayes.
CHAID digunakan untuk membentuk segmentasi yang membagi sebuah sampel menjadi dua atau lebih kelompok yang berbeda berdasarkan sebuah kriteria tertentu. Hal ini kemudian diteruskan dengan membagi kelompok-kelompok tersebut menjadi kelompok yang lebih kecil berdasarkan variabel-variabel independen yang lain. Prosesnya berlanjut sampai tidak ditemukan lagi variabel independen yang signifikan secara statistik.
Kelebihan CHAID
Metode CHAID memiliki keunggulan dalam mengeksplorasi data berjumlah besar, yang seluruh peubahnya bertipe kategori. Dengan menggunakan metode CHAID, hasil analisis akan lebih mudah diinterpretasikan dan peneliti akan mengetahui faktor penduga yang paling signifikan diantara faktor penduga lainnya.
Kekurangan CHAID
Pertama, variabel yang digunakan harus berupa data kategori, jika data asli berupa rasio atau skala maka akan menyebabkan error yang besar pada hasil diagram pohon (karena terdapat banyak missing value). Kedua, hasil CHAID terkadang multiplesplit, sehingga sulit merealisasikan dalam kondisi sebenarnya.
Kecelakaan Kapal Titanic merupakan salah satu kecelakaan kapal terbesar pada 14 April 1912. Sayangnya, tidak tersedia cukup sekoci untuk semua penumpang, yang mengakibatkan 1502 kematian dari 2224 penumpang dan awak kapal. Dengan menggunakan sampel data yang tersedia, kita akan membuat model prediksi terkait faktor yang menyebabkan seseorang untuk bertahan hidup. Metode yang akan digunakan pada artikel ini adalah decision tree.
Hal pertama yang dilakukan yaitu menginstall dan mengaktifkan packages.
install.packages("CHAID", repos="http://R-Forge.R-project.org")
require(CHAID)
library(rpart)
library(rpart.plot)
library(caret)
Menginput dataset dan menampilkannya.
data(ptitanic)
View(ptitanic)
Data tersebut mengandung beberapa variabel berikut :
- PassengerId: Nomor ID penumpang
- Survived : Selamat atau tidaknya penumpang (Yes = selamat, No = tidak selamat)
- Pclass : Kelas tiket (Kelas 1, 2 dan 3)
- Name : Data nama penumpang
- Sex : Data jenis kelamin penumpang (laki-laki dan perempuan)
- Age : data umur penumpang
str(ptitanic)
Dari hasil data inspection didapatkan bahwa data titanic memiliki 418 rows dan 12 columns. Pada analisis CHAID, variabel yang digunakan harus berupa data kategori. Oleh karena itu, variabel yang akan kita gunakan hanya variabel Survived, Pclass, dan Sex.
Membuat model CHAID dengan variabel dependen yaitu Survived dan variabel independennya yaitu Pclass serta Sex.
model<- chaid(survived ~ pclass+sex, data = ptitanic)
print(model)
Pohon keputusan tersebut menghasilkan simpul (node) berjumlah 8 buah. Node paling atas disebut dengan simpul induk atau root node sebanyak 1 (node 1).
Simpul keputusan sebanyak 2 yaitu node 2 (sex in female) dan node 6 (sex in male).
Simpul terminal sebanyak 5 yaitu node 3 (sex : female, pclass : 1st), node 4 (sex : female, pclass : 2nd), node 5 (sex : female, pclass : 3rd), node 7 (sex : male, pclass : 1st), dan node 8 (sex : male, pclass : 2nd, 3rd).
Pada node 3, 4, 5, 7, dan 8 terjadi proses penghentian karena sudah tidak terdapat variabel signifikan yang dapat menjadi cabang dari ke-lima node tersebut.
Menampilkan plot hasil dari model yang telah dibuat.
plot(model)
Berdasarkan pohon keputusan hasil dari klasifikasi dengan metode CHAID di atas, terbentuk 5 segmen yang berbeda yaitu sebagai berikut:
- Jika sex (jenis kelamin), female (perempuan), dan naik 1st class maka dari data diprediksi akan survived (selamat) sebanyak 144 orang.
- Jika sex (jenis kelamin), female (perempuan), dan naik 2st class maka dari data diprediksi akan survived (selamat) sebanyak 106 orang.
- Jika sex (jenis kelamin), female (perempuan), dan naik 3st class maka dari data diprediksi akan died (tidak selamat) sebanyak 216 orang.
- Jika sex (jenis kelamin), male (laki-laki), dan naik 1st class maka dari data diprediksi akan died (tidak selamat) sebanyak 179 orang.
- Jika sex (jenis kelamin), male (laki-laki), dan naik 2nd maupun 3rd class maka dari data diprediksi akan died (tidak selamat) sebanyak 664 orang.
Mencari tingkat keakurasian model.
pred <- predict(model)
conf.matrix <- table(ptitanic$survived, pred)
confusionMatrix(conf.matrix)
Diperoleh untuk kategori died diprediksi benar pada kategori died sebesar 792, sedangkan salah prediksinya sebesar 17. Salah prediksi seharusnya berada pada kategori died ternyata datanya masuk pada kategori survived sebanyak 267 dan prediksi benarnya sebesar 233.
Sehingga diperoleh tingkat akurasi dari hasil prediksi dengan data sebesar 0.783 atau 78.3%. ‘Accuracy’ digunakan untuk melihat ukuran dari seberapa baik model mengkorelasikan hasil dengan atribut dalam data yang digunakan.
Nilai sensitifitas dari hasil output di atas sebesar 0.7479 atau 74.79%. ‘Sensitivity’ digunakan untuk mengukur proporsi jumlah observasi positif yang tepat prediksi.
Nilai spesifisitas dari hasil output di atas sebesar 0.9320 atau 93.20%. ‘Specificity’ digunakan untuk mengukur proporsi jumlah observasi negatif yang tepat prediksi.
Nilai akurasi keseimbangan dari hasil output di atas sebesar 0.8399 atau 83.99%. ‘Balanced Accuracy’ digunakan untuk mengukur akurasi proporsi jumlah observasi kelas positif yang tepat prediksi.
Sekian, Semoga Bermanfaat :)