Anda di halaman 1dari 91

Pohon Klasifikasi

1
Nama Lain

• Classification Tree

• Decision Tree

• Recursive Partition

• Iterative Dichotomiser

2
Kegunaan

• Mengidentifikasi variabel apa yang dapat dijadikan sebagai


pembeda antar kelompok
• Memprediksi keanggotaan kelompok suatu individu berdasarkan
karakteristiknya

• Terapannya antara lain:


– Marketing: Mengidentifikasi prospective customer (cross-sell, up-sell, new
acquisition)
– Risk: Credit scoring, menentukan apakah calon penerima kredit akan
mampu bayar atau tidak
– Customer Relationship: churn analysis, menentukan customer yang
berpotensi akan meninggalkan jasa/produk
– Health: menentukan tingkat resiko penyakit
– dll 3
Metode lain yang setara kegunaannya

• Regresi Logistik

• Discriminant Analysis

• Support Vector Machine

• Bayesian Classifier

• Neural Network

• dll 4
Outline

• Pengenalan Konsep Entropy dan Information Gain


• Pengenalan Algoritma Dasar Pohon Klasifikasi
• Menilai Kemampuan Prediksi Pohon Klasifikasi
• Pengembangan Lebih Lanjut dari Pohon Klasifikasi

5
1
Entropy dan Information Gain

6
Entropy dan Information Gain

• Andaikan sebuah gugus data D berisi individu-individu dengan dua


kelas yaitu kelas YES dan NO, dengan proporsi yang YES sebesar p,
dan tentusaja (1 – p) lainnya tergolong kelas NO.

• Entropi dari gugus data tersebut adalah


E(D) = –p log2(p) – (1–p) log2(1–p)

• Gugus data yang seluruh amatannya dari kelas YES akan memiliki
E(D) = 0
• Gugus data yang seluruh amatannya dari kelas NO juga akan
memiliki E(D) = 0
• Entropi ini adalah ukuran kehomogenan data (impurity)
7
Entropy dan Information Gain

Very impure group Less impure Minimum impurity

Ket misal o=yes + no


8
Entropy dan Information Gain

• Andaikan sebuah gugus data D dibagi menjadi beberapa kelompok,


misalnya D1, D2, …, Dk berdasarkan variabel prediktor V

• Dari setiap Di bisa dihitung entropinya, yaitu E(Di)

• Information Gain adalah


k| Di |
IG ( D,V )  E ( D)   E ( Di )
i 1 | D |
• Variabel prediktor yang kuat hubungannya akan memiliki
information gain yang semakin besar

9
Entropy dan Information Gain

• Information gain=selisih entropy group awal dengan rata-rata


entropy hasil patrisi group
• Jika IG besar maka partisi group homogen, sebaliknya...
• Sehingga IG besar lebih baik

k| Di |
IG ( D,V )  E ( D)   E ( Di )
i 1 | D |

10
Entropy dan Information Gain

E(TOTAL) = –p log2(p) – (1–p) log2(1–p)


E(TOTAL) = –0.3081 log2(0.3081) – 0.6919 log2(0.6919)
E(TOTAL) = 0.8910

E(Perempuan) = –p log2(p) – (1–p) log2(1–p)


E(Perempuan) = –0.0459 log2(0.0459) – 0.9541 log2(0.9541)
E(Perempuan) = 0.2688

E(Laki-Laki) = –p log2(p) – (1–p) log2(1–p)


E(Laki-Laki) = –0.6190 log2(0.6190) – 0.3810 log2(0.3810)
E(Laki-Laki) = 0.9588

Information Gain dari Variabel Jenis Kelamin


IG = 0.8910 – ( 588/1084 * 0.2688 + 496/1084 * 0.9588)
IG = 0.8910 – 0.5845
IG = 0.3065

11
2
Pohon Klasifikasi

12
Ide Dasar

B
4 16 obs
13 obs

3
Mencari pemisah
2
terbaik antara
individu
dengan individu
1

A Pemisahan dilakukan
untuk masing-masing
1 2 3 4 variabel, bukan
kombinasinya.
13
Ide Dasar

B
4 16 obs
13 obs

3
Pemisah yang
2
dicari adalah yang
menyebabkan
data hasil
1
pemisahannya
A bersifat homogen
1 2 3 4
kelasnya.
14
Ide Dasar
A <2 A  2
B Pemisahan menggunakan
4 garis A = 2, menghasilkan
dua kelompok:

3 Kelompok 1 A < 2
7 obs
2 12 obs

Kelompok 2 A  2
1
9 obs
A 1 obs

1 2 3 4
16 obs
15
13 obs
Ide Dasar
A < 2.7 A  2.7
B Pemisahan menggunakan
4 garis A = 2.7, menghasilkan
dua kelompok:

3 Kelompok 1 A < 2.7


11 obs
2 13 obs

Kelompok 2 A  2.7
1
5 obs
A 0 obs

1 2 3 4
16 obs
16
13 obs
Ide Dasar
16 obs
13 obs

7 obs 9 obs 11 obs 5 obs


12 obs 1 obs 13 obs 0 obs

Mana yang lebih baik? 17


Ide Dasar
16 obs
13 obs
Entropy = 0.9923

7 obs 9 obs 11 obs 5 obs


12 obs 1 obs 13 obs 0 obs
E = 0.9495 E = 0.4690 E = 0.9950 E=0

Information Gain =
0.2085
 Information Gain =
0.1688
18
Ide Dasar 
A =2
B
4

3
Lanjutkan mencari
pemisahan untuk masing-
2 masing kelompok….

A
1 2 3 4

19
Ide Dasar 
A =2
B
4

3
Lanjutkan mencari
 2
pemisahan untuk masing-
B = 1.9 masing kelompok….

1

B = 0.6
A
1 2 3 4

20
Representasi Hasil Pemisahan

16 obs
13 obs
A<2

7 obs 9 obs
12 obs 1 obs
B < 1.9 B < 0.6

0 obs 7 obs 0 obs 9 obs


11 obs 1 obs 1 obs 0 obs

21
Beberapa Istilah

root Level 0

(simpul akar)

node Level 1
(simpul)
depth

leaf Level 2

(simpul akhir)
22
Algoritma Dasar Pohon Klasifikasi

• Tahap 1:
Mencari pemisahan/penyekatan (splitting) terbaik di setiap
variabel

• Tahap 2:
Menentukan variabel terbaik untuk penyekatan

• Tahap 3:
Melakukan penyekatan berdasarkan hasil dari Tahap 2, dan
memeriksa apakah sudah waktunya menghentikan proses

Lakukan tiga tahapan di atas untuk setiap


simpul dan hasil sekatannya 23
Ilustrasi lain terkait dengan Gini, Information Gain, dan Chi-Sq

24
Ilustrasi lain terkait dengan Gini, Information Gain, dan Chi-Sq

25
Ilustrasi lain terkait dengan Gini, Information Gain, dan Chi-Sq

26
Ilustrasi lain terkait dengan Gini, Information Gain, dan Chi-Sq

27
Ilustrasi lain terkait dengan Gini, Information Gain, dan Chi-Sq

28
Ilustrasi lain terkait dengan Gini, Information Gain, dan Chi-Sq

29
Ilustrasi lain terkait dengan Gini, Information Gain, dan Chi-Sq

30
Ilustrasi lain terkait dengan Gini, Information Gain, dan Chi-Sq

31
Ilustrasi lain terkait dengan Gini, Information Gain, dan Chi-Sq

32
Ilustrasi lain terkait dengan Gini, Information Gain, dan Chi-Sq

33
Ilustrasi lain terkait dengan Gini, Information Gain, dan Chi-Sq

34
Ilustrasi lain terkait dengan Gini, Information Gain, dan Chi-Sq

35
Kriteria Penghentian Proses Pemisahan

• Simpul berisi amatan yang berasal dari satu kelas variabel


respon
• Simpul berisi amatan yang seluruh variabel prediktornya
identik
• Simpul berisi amatan yang kurang dari ukuran simpul
minimal yang ditentukan di awal
• Kedalaman pohon sudah mencapai kedalaman maksimal

36
Ilustrasi Sederhana

• Gunakan Data 01.xlsx atau DATA.CSV

• Variabel :
• "No"
• "Jenis.Kelamin"
• "Single"
• "Tinggal.di.Kota"
• "usia"
• "Perokok"
• "Budget"
• "Kesukaan"
• "Tertarik.Beli."
37
Ilustrasi Sederhana (WPS)
PROC R;
export data=a.data R=data;
submit;
setwd("C:/training/Decision Tree/direktori")
library(rpart)
library(rpart.plot)

data$tertarik <- factor(a.data$Tertarik_Beli, levels = 0:1, labels = c("Tidak", "Tertarik"))


data$jk <- factor(data$Jenis_Kelamin, levels = 0:1, labels = c("P", "L"))
data$kota <- factor(data$Tinggal, levels = 0:1, labels = c("Tidak", "Ya"))
data$single <- factor(data$Single, levels = 0:1, labels = c("Menikah", "Single"))
data$merokok <- factor(data$Perokok, levels = 0:1, labels = c("Tidak", "Ya"))

model = rpart(tertarik ~ jk + kota + single + usia + merokok + Budget,


data = data, method="class",
control = rpart.control(minsplit = 100, cp = 0))
print(model)
prp(model, extra=4)
endsubmit;

38
Ilustrasi Sederhana (SAS)
%include "C:\training\Decision Tree\PROC_R.sas";
%proc_r(SAS2R=a.data,R2SAS=);
cards4;
setwd("C:/training/Decision Tree/direktori")
library(rpart)
library(rpart.plot)

a.data$tertarik <- factor(a.data$Tertarik_Beli, levels = 0:1, labels = c("Tidak", "Tertarik"))


a.data$jk <- factor(a.data$Jenis_Kelamin, levels = 0:1, labels = c("P", "L"))
a.data$kota <- factor(a.data$Tinggal, levels = 0:1, labels = c("Tidak", "Ya"))
a.data$single <- factor(a.data$Single, levels = 0:1, labels = c("Menikah", "Single"))
a.data$merokok <- factor(a.data$Perokok, levels = 0:1, labels = c("Tidak", "Ya"))

model = rpart(tertarik ~ jk + kota + single + usia + merokok + Budget,


data = a.data, method="class",
control = rpart.control(minsplit = 100, cp = 0))
print(model)
prp(model, extra=4)
;;;;
%quit;
39
Output

40
Grafik

41
Ilustrasi Sederhana
model = rpart(tertarik ~ jk + kota + single + usia + merokok + Budget,
data = a.data, method="class",
control = rpart.control(minsplit = 100, cp = 0))

42
Ilustrasi Sederhana

{ minsplit: The minimum


number of observations in a
node for which the routine
will even try to compute a
split. The default is 20. This
parameter can save
computation time, since
smaller nodes are almost
always pruned away by
crossvalidation.
{ minbucket: The minimum
number of observations in a
terminal node. This
defaults to minsplit/3. 43
Ilustrasi Sederhana
model = rpart(tertarik ~ jk + kota + single + usia + merokok + Budget,
data = a.data, method="class",
control = rpart.control(minsplit = 50, cp = 0))

44
3
Menilai Kebaikan Pohon Klasifikasi

45
Prediksi Variabel Respon

• Untuk setiap individu yang diketahui nilai-nilai variabel


prediktor yang muncul pada pohon klasifikasi, kita dapat
melakukan prediksi kelas variabel respon. Misalnya jika
diketahui usia, jenis kelamin, apakah merokok, dan
klasifikasi budget dari seseorang, maka kita dapat
memprediksi apakah orang tersebut akan tertarik atau
tidak.

• Bagaimana caranya? Gunakan alur pencabangan yang ada


pada pohon klasifikasi sampai berhenti di simpul akhir.
Berdasarkan simpul akhir itulah kita prediksi dia masuk ke
kategori apa.
46
Prediksi Variabel Respon

Misal
• Jenis Kelamin = Laki-Laki
• Budget Low
• Tidak Merokok
• Usia 25 tahun

• Probability TERTARIK = 0.74

47
Prediksi Variabel Respon

Misal
• Jenis Kelamin = Laki-Laki
• Budget high
• Merokok
• Usia 25 tahun

• Probability TERTARIK = 0.33

48
Prediksi Variabel Respon

model = rpart(tertarik ~ jk + kota + single + usia + merokok + Budget,


data = a.data, method="class",
control = rpart.control(minsplit = 50, cp = 0))

predict(model, newdata=a.data, type = 'prob')


Tidak Tertarik
1 0.925170068 0.07482993
2 0.954081633 0.04591837
3 0.954081633 0.04591837
4 0.954081633 0.04591837
5 0.004694836 0.99530516
6 0.954081633 0.04591837
7 0.004694836 0.99530516
8 0.925170068 0.07482993
9 0.954081633 0.04591837
10 0.428571429 0.57142857
49
Hasil Prediksi dalam Data set (WPS)
PROC R;
export data=a.data R=data;
submit;
setwd("C:/training/Decision Tree/direktori")
library(rpart)
library(rpart.plot)

data$tertarik <- factor(data$Tertarik_Beli, levels = 0:1, labels = c("Tidak", "Tertarik"))


data$jk <- factor(data$Jenis_Kelamin, levels = 0:1, labels = c("P", "L"))
data$kota <- factor(data$Tinggal, levels = 0:1, labels = c("Tidak", "Ya"))
data$single <- factor(data$Single, levels = 0:1, labels = c("Menikah", "Single"))
data$merokok <- factor(data$Perokok, levels = 0:1, labels = c("Tidak", "Ya"))

model = rpart(tertarik ~ jk + kota + single + usia + merokok + Budget,


data = data, method="class",
control = rpart.control(minsplit = 50, cp = 0))
p0 = predict(model, newdata=data, type = 'prob')
hasil = data.frame(data, p0)
endsubmit;
Import R=hasil data=work.hasil;
50
Hasil Prediksi dalam Data set (SAS)
%proc_r(SAS2R=a.data,R2SAS=hasil);
cards4;
setwd("C:/training/Decision Tree/direktori")
library(rpart)
library(rpart.plot)

a.data$tertarik <- factor(a.data$Tertarik_Beli, levels = 0:1, labels = c("Tidak", "Tertarik"))


a.data$jk <- factor(a.data$Jenis_Kelamin, levels = 0:1, labels = c("P", "L"))
a.data$kota <- factor(a.data$Tinggal, levels = 0:1, labels = c("Tidak", "Ya"))
a.data$single <- factor(a.data$Single, levels = 0:1, labels = c("Menikah", "Single"))
a.data$merokok <- factor(a.data$Perokok, levels = 0:1, labels = c("Tidak", "Ya"))

model = rpart(tertarik ~ jk + kota + single + usia + merokok + Budget,


data = a.data, method="class",
control = rpart.control(minsplit = 50, cp = 0))
p0 = predict(model, newdata=a.data, type = 'prob')
hasil = data.frame(a.data, p0)
;;;;
%quit;

51
Prediksi Variabel Respon

Andaikan digunakan batasan 0.5 untuk mengelompokkan ketertarikan, sehingga kalau


Prob(Tertarik) > 0.5  Tertarik
Prob(Tertarik)  0.5  tidak

Maka kita akan dapatkan


Tidak Tertarik Prediksi
1 0.925170068 0.07482993  Tidak
2 0.954081633 0.04591837  Tidak
3 0.954081633 0.04591837  Tidak
4 0.954081633 0.04591837  Tidak
5 0.004694836 0.99530516  Tertarik
6 0.954081633 0.04591837  Tidak
7 0.004694836 0.99530516  Tertarik
8 0.925170068 0.07482993  Tidak
9 0.954081633 0.04591837  Tidak
10 0.428571429 0.57142857  Tertarik
52
Prediksi Variabel Respon

Data hasil;
Set hasil;
If tertarik > 0.5 then dugaan = "Tertarik";
else dugaan = "Tidak";
run;
Tidak Tertarik dugaan
1 0.925170068 0.07482993  Tidak
2 0.954081633 0.04591837  Tidak
3 0.954081633 0.04591837  Tidak
4 0.954081633 0.04591837  Tidak
5 0.004694836 0.99530516  Tertarik
6 0.954081633 0.04591837  Tidak
7 0.004694836 0.99530516  Tertarik
8 0.925170068 0.07482993  Tidak
9 0.954081633 0.04591837  Tidak
10 0.428571429 0.57142857  Tertarik
53
Prediksi Variabel Respon

Perbandingan antara respon yang sebenarnya dengan dugaan

Tertarik_beli dugaan
1 Tidak Tidak
2 Tidak Tidak
3 Tidak Tidak
4 Tidak Tidak
5 Tertarik Tertarik
6 Tidak Tidak
7 Tertarik Tertarik
8 Tidak Tidak
9 Tidak Tidak
10 Tidak Tertarik  salah prediksi

54
Kebaikan pohon klasifikasi

Kebaikan dapat dilihat dari seberapa tinggi kemampuan pohon


klasifikasi menghasilkan dugaan yang sama dengan kondisi yang
sesungguhnya.

proc tabulate data=hasil;


class tertarik_beli dugaan;
table tertarik_beli, dugaan;
run;

55
Classification Table

Ingat bahwa dengan model yang kita peroleh, kita dapat memasukkan data nilai-nilai variabel
penjelas yang kita miliki untuk memperoleh dugaan peluang masing-masing individu. Dengan
prediksi peluang tersebut, kita dapat mengelompokkan apakah dia diprediksi YES (bernilai 1)
atau NO (bernilai 0). Selanjutnya bisa kita bandingkan dengan nilai yang sebenarnya (aktual)

Teknik sederhana yang dapat dilakukan untuk menentukan tingkat kebaikan pendugaan/prediksi
dari model yang kita miliki adalah menggunakan tabel klasifikasi. Tabel ini merupakan tabel
frekuensi dua arah antara nilai kategori aktual data dengan kategori prediksinya. Pada gambar
tabel di slide setelah ini, tentu kita menginginkan model yang memiliki proporsi yang benar
sangat tinggi.

Jika ada dua model, kita dapat menghitung tingkat ketepatan masing-masing model.

Kembali ke tabel klasifikasi dan perhatikan definisi berikut:


TRUE POSITIVE adalah banyaknya individu dalam kategori YES (1) yang diprediksi dengan tepat.
TRUE NEGATIVE adalah banyaknya individu dalam kategori NO (0) yang diprediksi dengan tepat.
FALSE POSITIVE adalah banyaknya individu dalam kategori NO (0) yang diprediksi dengan salah.
FALSE NEGATIVE adalah banyaknya individu dalam kategori YES (1) yang diprediksi dengan salah.

N1 adalah banyaknya individu yang memiliki kategori YES (1)


N2 adalah banyaknya individu yang memiliki kategori NO (0)
56
Classification Table

Predicted Class
0 1

True False Actual


Actual Class

0 Negative Positive Negative

False True Actual


1 Negative Positive Positive

Predicted Predicted
Negative Positive Proporsinya
harus tinggi
57
Accuracy (Correct Rate)
Predicted Class
0 1

Actual Class True False Actual


0 Negative Positive Negative (N2)

False True Actual


1 Negative Positive Positive (N1)

Predicted Predicted
Negative Positive

Correct Rate = (True Positive + True Negative) / N

58
Sensitivity
Predicted Class
0 1

Actual Class
0

True Actual
1 Positive Positive

Predicted
Positive
SENSITIVITY adalah TRUE POSITIVE dibagi dengan N1

Jika cutoff nilai prediksi peluang yang digunakan kecil, maka individu cenderung akan
diprediksi memiliki kategori 1 (YES). Sehingga pada saat nilai cutoff kecil, maka
sensitivity ini akan besar (mendekati 100%). Secara umum nilai sensitivity ini akan
menurun jika nilai cutoff ditingkatkan. Namun secara ideal kita menginginkan untuk 59
berbagai nilai cutoff, model memiliki sensitivity yang tinggi.
Specificity
Predicted Class
0 1

True Actual

Actual Class
0 Negative Negative

Predicted
Negative
SPECIFICITY adalah TRUE NEGATIVE dibagi dengan N2

Tentu saja 1 – Specificity adalah 1 dikurangi nilai specificity-nya, atau diperoleh dari FALSE POSITIVE
dibagi dengan N2.

Jika cutoff nilai prediksi peluang yang digunakan kecil, maka individu cenderung akan diprediksi
memiliki kategori 1 (YES). Sehingga pada saat nilai cutoff kecil, maka (1 – specificity) ini akan besar
(mendekati 100%). Secara umum nilai (1 – specificity) ini akan menurun jika nilai cutoff ditingkatkan.
60
Namun secara ideal kita menginginkan untuk berbagai nilai cutoff, model memiliki (1 – specificity)
yang rendah.
Kebaikan pohon klasifikasi

Accuracy = (711 + 289) / 1084 = 92.25%


Sensitivity = 289 / (289 + 45) = 86.53%
Specificity = 711 / (39 + 711) = 94.80% 61
Kebaikan pohon klasifikasi

Andaikan batas peluangnya diganti dari 0.5


menjadi 0.6
data hasil;
set hasil;
if tertarik > 0.6 then dugaan = 'Tertarik';
else dugaan = 'Tidak';
run;

proc freq data=hasil;


table tertarik_beli*dugaan;
format tertarik_beli beli.;
run;

62
Kebaikan pohon klasifikasi

Andaikan batas peluangnya diganti dari 0.5


menjadi 0.6

Accuracy = (261 + 732) / 1084 = 91.60%


Sensitivity = 261 / (261 + 73) = 78.14%
63
Specificity = 732 / (18 + 732) = 97.60%
Kebaikan pohon klasifikasi

Andaikan batas peluangnya diganti dari 0.5


menjadi 0.3
data hasil;
set hasil;
if tertarik > 0.3 then dugaan = 'Tertarik';
else dugaan = 'Tidak';
run;

proc freq data=hasil;


table tertarik_beli*dugaan;
format tertarik_beli beli.;
run;

64
Kebaikan pohon klasifikasi

Andaikan batas peluangnya diganti dari 0.5


menjadi 0.3

Accuracy = (296 + 697) / 1084 = 91.60%


Sensitivity = 296 / (296 + 38) = 88.62%
65
Specificity = 697 / (697+ 53) = 92.93%
Cutoff

ACTUAL CLASS PREDICTED CLASS

Case x response P cutoff=.5 cutoff=.25


1 75.8 0 .32 0 1
2 68.3 1 .40 0 1
3 14.1 1 .92 1 1
4 99.2 0 .06 0 0
5 65.4 1 .52 1 1
6 68.7 1 .39 0 1
7 76.7 1 .22 0 0
8 81.5 0 .17 0 0
9 82.4 0 .13 0 0
.. .. .. .. .. ..
. . . . . .
n 45.5 1 .75 1 1
66
Cutoff

ACTUAL CLASS PREDICTED CLASS

Case x response P cutoff=.5 cutoff=.25


1 75.8 0 .32 0 1
2 68.3 1 .40 0 1
3 are allocated
Cases 14.1 to1classes based
.92 on cutoff 1 1
values of the posterior
4 99.2
probability. The generic 0 prediction
.06 model for a0binary target (0/1) 0 would
1.5estimate65.4 1 probability
the posterior .52 of class 11for each case (scoring)1
2.6choose a68.7 1
cutoff probability .39 0 1
3.7assign cases
76.7to class11 if their.22 0
estimated posterior probability 0exceeds
the
8 cutoff,81.5
otherwise assign
0 the.17
case to class 0. 0 0
Each
9 choice82.4 of cutoff could
0 give.13a different classifier
0 and a different
0
..
confusion ..
matrix. ..
Consequently, ..model performance
.. ..
usually depends on
. . . . .
the choosing the best cutoff probability. Three useful methods for .
n
choosing 45.5
the cutoff are1 the ROC.75 1 analysis, and 1statistical
curve, gains chart
decision theory. 67 67
Kebaikan pohon klasifikasi

Cut-Off Accuracy Sensitivity Specificity


0.3 91.60% 88.62% 92.93%
0.5 92.25% 86.53% 94.80%
0.6 91.60% 78.14% 97.60%

68
ROC Curve

• Seperti yang dijelaskan sebelumnya, karena nilai


sensitivity idealnya adalah 100% dan (1 – specificity)
bernilai ideal 0% maka kurva ideal berbentuk garis vertikal
dimulai dari titik 0 kemudian bergerak horizontal pada
saat mencapai titik 100%.

• Semakin dekat kurva dengan kurva ideal tersebut, maka


semakin baik model yang dimiliki.

• Kedekatan dengan kondisi ideal ini diukur melalui luas di


bawah kurva (yang dilambangkan dengan statistik c).
Perhatikan bahwa pada kondisi ideal, bentuk di bawah
kurva adalah bujur sangkar dengan panjang sisi 1 unit.
Sehingga nilai c ideal adalah 1.
69

69
ROC Curve

1.0
Sensitivity

0.5

0.0
0.0 0.5 1.0
1 — Specificity
70
ROC Curve

The ROC curve displays the sensitivity and


specificity of a classifier for a range of cutoffs.
Each point on the curve represents a cutoff
probability. Points closer to the upper right corner
correspond to low cutoff probabilities. Points in
the lower left correspond to higher cutoff
probabilities. The extremes (1,1) and (0,0)
represent no-data rules where all cases are
classified into class 1 or class 0, respectively.

A ROC curve for a perfect classifier would have a


single point in the upper left corner (0,1).
Consequently, the area under the ROC curve (c
statistic) is often used to evaluate the
performance of a prediction model for the entire
range of cutoffs.
71
ROC Curve
%proc_r(SAS2R=a.data,R2SAS=);
cards4;
setwd("C:/training/Decision Tree/direktori")
library(rpart)
library(rpart.plot)
a.data$tertarik <- factor(a.data$Tertarik_Beli, levels = 0:1, labels = c("Tidak", "Tertarik"))
a.data$jk <- factor(a.data$Jenis_Kelamin, levels = 0:1, labels = c("P", "L"))
a.data$kota <- factor(a.data$Tinggal, levels = 0:1, labels = c("Tidak", "Ya"))
a.data$single <- factor(a.data$Single, levels = 0:1, labels = c("Menikah", "Single"))
a.data$merokok <- factor(a.data$Perokok, levels = 0:1, labels = c("Tidak", "Ya"))
model = rpart(tertarik ~ jk + kota + single + Usia + merokok + Budget,
data = a.data, method="class", control = rpart.control(minsplit = 50, cp = 0))
p0 = predict(model,newdata=a.data,type='prob')
library(ROCR)
pred = prediction(p0[,1], a.data$tertarik)
roc = performance(pred, measure="tpr", x.measure="fpr")
plot(roc, col="orange", lwd=2)
lines(x=c(0, 1), y=c(0, 1), col="red", lwd=2)
auc = performance(pred, 'auc', x.measure="tpr")
slot(auc, 'y.values')
;;;; 72
%quit;
ROC Curve

1.0
0.8
True positive rate

0.6
0.4
0.2
0.0

0.0 0.2 0.4 0.6 0.8 1.0

False positive rate


73
4
Perkembangan Lebih Lanjut

74
Perkembangan Lebih Lanjut: Ensemble Tree

• Bagging (Bootstrap Aggregating)


– Breiman, L (1996). Bagging predictors. Machine Learning 24 (2): 123–140
• Boosting
– Freund, Y., & Schapire, R. E. (1996, July). Experiments with a new boosting
algorithm. In ICML (Vol. 96, pp. 148-156).
• Random Forest
– Breiman L (2001). Random Forests. Machine Learning, 45, 5-32.
– Ho, Tin Kam (1995). Random Decision Forests. Proceedings of the 3rd
International Conference on Document Analysis and Recognition,
Montreal, QC, 14–16 August 1995. pp. 278–282
– Ho, Tin Kam (1998). "The Random Subspace Method for Constructing
Decision Forests". IEEE Transactions on Pattern Analysis and Machine
Intelligence 20 (8): 832–844
• Rotation Forest
– Rodriguez, J. J., Kuncheva, L. I., & Alonso, C. J. (2006). Rotation forest: A new classifier
ensemble method. Pattern Analysis and Machine Intelligence, IEEE Transactions on, 28(10),
1619-1630.
75
Perkembangan Lebih Lanjut

76
Bagging

77
Random Forest

78
Random Forest

Buat beberapa grup veriabel prediktor

Lakukan PCA pada setiap group

Gunakan koef PC untuk merotasi data


prediktor

Buat pohon klasifikasi berdasarkan data


yang telah dirotasi

79
Boosting

Buat beberapa grup veriabel prediktor

Lakukan PCA pada setiap group

Gunakan koef PC untuk merotasi data


prediktor

Buat pohon klasifikasi berdasarkan data


yang telah dirotasi

80
Empirical study

• Pendekatan ensemble tree menghasilkan


prediksi yang lebih baik dibandingkan pohon
klasifikasi tunggal

• Ensemble tree banyak digunakan untuk


menangani masalah-masalah:
– Ketidakseimbangan Kelas (Imbalanced Class)
– Curse of Dimensionality
– Klasifikasi Multi-Kelas
81
Beyond Classification Tasks

82
• QUESTION?

83

83
TUGAS
• LAKUKAN ANALISIS KLASIFIKASI DENGAN DUA
METODE
• JIKA MEMUNGKINKAN PADA SETIAP ANALISIS,
MEMUAT PERHITUNGAN GINI, ENTROPI, DAN
INFORMATION GAIN : ATURAN PEMBEDA
TERBAIK
• BANDINGKAN AKURASI, SENSITIVITAS, DAN
SPESIFIKASI: METODE TERBAIK
• PILIH METODE TERBAIK
84

84
Analisis
• KKN
• POHON KLASIFIKASI
• SVM
• ENSEMBLE TREE

85

85
TUGAS
• BAGI DATA JADI DATA TRAINING DAN TESTING
XY : 2 DIGIT TERAKHIR NIM:
JIKA XY < 40 MAKA XY ADALAH DATA TESTING,
JIKA XY>= 40 MAKA XY ADALAH DATA TRAINING
MISAL XY=32, XY=32 < 40 MAKA data testing
ARTINYA DATA TESTING 32%
• PENGACAKAN GUNAKAN SEED SESUAI NIM
• SET SEED (12345678)
86

86
Data Kualitas Wine
• Data kedua ini berasal dari pengamatan terhadap sejumlah tipe wine
merah (ada 1599 jenis) dan wine putih (ada 4898 jenis) yang semuanya
produksi Portugal.
• Harga dari wine sangat tergantung pada kualitas rasa yang bersifat
abstrak. Biasanya ada sejumlah ahli rasa yang diminta mencicipi wine dan
kemudian memberikan penilaian. Antar penilai bisa jadi sangat bervariasi
opininya.
• Kualitas wine juga tergantung pada beberapa hasil physicochemical tests
yang dilakukan di laboratorium dengan memeriksa antara lain acidity, pH
level, kandungan gula, serta kandungan beberapa senyawa kimia lain.
• Akan sangat menarik kalau hasil pengukuran kualitas di laboratorium
memiliki keterkaitan dengan penilaian subjektif oleh pakar rasa.
• Data yang ada hanya berisi data penilaian wine putih, yang meliputi 12
karakteristik hasil uji laboratorium serta hasil penilaian ahli rasar pada
skala 1 – 10, dengan 1 untuk kualitas rasa yang paling buruk dan 10 untuk
rasa yang paling baik. Ada tiga penilai, dan nilai akhir diperoleh dari
median ketiganya.
87
Pima Indians Diabetes Data Set
http://archive.ics.uci.edu/ml/datasets/Pima+Indians+Diabetes

• Relevant Information: Several constraints were placed on the selection of


these instances from a larger database. In particular, all patients here are
females at least 21 years old of Pima Indian heritage. ADAP is an adaptive
learning routine that generates and executes digital analogs of
perceptron-like devices. It is a unique algorithm; see the paper for details.
• Number of Instances: 768
• Number of Attributes: 8 plus class
• Attribute: (all numeric-valued)
– Number of times pregnant
– Plasma glucose concentration a 2 hours in an oral glucose tolerance test
– Diastolic blood pressure (mm Hg)
– Triceps skin fold thickness (mm)
– 2-Hour serum insulin (mu U/ml)
– Body mass index (weight in kg/(height in m)^2)
– Diabetes pedigree function
– Age (years)
88
OUTPUT BERUPA
• LAPORAN SINGKAT (CONTOH TERLAMPIR) PDF
• MATERI PRESENTASI (ppt)
• Sintaks disimpan dalam file notepad .txt

Deadline nya minggu depan:


H-1

89

89
PENILAIAN TAMBAHAN
SEMAKIN CEPAT DIUPLOAD JAWABANNYA DI
GOOGLE CLASSROOM MAKA NILAINYA AKAN
SEMAKIN BAIK

90

90

Thank you!

91

Anda mungkin juga menyukai