Anda di halaman 1dari 18

Decision tree bertujuan untuk mentransfom raw data menjadi model pohon (tree)

kemudian mengubah model pohon tersebut menjadi aturan (rule). ID3 adalah salah satu
algoritma varian decision tree. ID3 ditemukan oleh J. Ross Quinlan (1986) dan
singkatan dari Iterative Dichotomiser 3.

Decision tree merupakan varian dari inductive learning dan menggunakan struktur
hierarki untuk pembelajaran supervised.

Pembentukan Decision Tree dengan algoritma ID3 dibuat menyerupai bentuk


pohon, dengan metode divide and conquer data secara rekursif dari atas ke
bawah. Dimana pada umumnya sebuah pohon terdapat root node, branch node, internal
node, dan leaf node. langkah-langkah pembentukan decision tree dengan ID3 sebagai
berikut :

• Pohon dimulai sebagai root node yang merepresentasikan semua data. Pemilihan root
node berdasarkan nilai information gain terbesar.

• Sesudah root node terbentuk, maka dibentuklah branch node dari variable root node
nya. Jika semua variabel berada dalam class yang sama, maka dibuatlah leaf node dari
class tersebut. Jika tidak, information gain akan digunakan lagi untuk memilih atribut
terbaik untuk dijadikan internal node.

• Algoritma ini akan terus menggunakan proses yang sama atau bersifat rekursif dalam
membentuk sebuah Decision Tree. Ketika sebuah atribut telah dipilih menjadi internal
node, maka atribut tersebut tidak diikutkan lagi dalam penghitungan nilai information
gain.

• Proses akan berhenti apabila :

– Semua data telah termasuk dalam kelas yang sama.


– Tidak terdapat data pada internal node yang baru. Dalam kasus ini, leaf node akan
dipilih pada cabang sebelumnya dan diambil data yang mewakili kelas terbanyak untuk
dijadikan label kelas.

Pada setiap langkah dalam membangun ID3, kita menggunakan information gain untuk
memilih kandidat atribut terbaik. Information gain mengukur kemampuan suatu atribut
untuk memisahkan training data berdasarkan class nya.

Sebelum masuk ke perumusan information gain,terlebih dahulu mengenal apa itu


entropy. Entropy (derajat ketidakteraturan) adalah informasi yang dibutuhkan untuk
memprediksi sebuah kejadian, diberikan distribusi probabilitas.

Dimana:
• S adalah himpunan data
• C adalah banyaknya partisi S
• pi adalah probabilitas yang di dapat dari Sum(Yes) atau sum(No)

Setelah mendapatkan nilai entropy, baru bisa menghitung information gain.

Untuk lebih mengerti, langsung saja kita kerjakan data dibawah ini untuk dihitung
menggunakan ID3 :
Data diatas memiliki artibut outlook, temp, humidity dan wind dan class nya decision
yang bernilai yes dan no. data tersebut memiliki 14 kasus yang terdiri 9 yes dan 5 no.
Pertama kita hitung entropy decision nya.

Entropy(Decision) = – p(No) . log2p(No) – p(Yes) . log2p(Yes)

Entropy(Decision) = – (5/14) . log2(5/14) – (9/14) . log2(9/14)

Entropy(Decision) = 0.940

Kemudian kita hitung entropy untuk masing-masing nilai atribut outlook sebagai
berikut:

• outlook = sunny
Ada 2 kasus dengan decision = yes dan 3 kasus dengan decision = no saat outlook =
sunny, dengan demikian kita hitung entropy nya.
Entropy(Decision|Outlook=Sunny) = – p(No) . log2p(No) – p(Yes) . log2p(Yes)

Entropy(Decision|Outlook=Sunny) = – (3/5) . log2(3/5) – (2/5) . log2(2/5)

Entropy(Decision|Outlook=Sunny) = 0.971

• outlook = overcast

Ada 4 kasus dengan decision = yes dan 0 kasus dengan decision = no saat outlook =
sunny, dengan demikian kita hitung entropy nya.

Entropy(Decision|Outlook=Overcast) = – p(No) . log2p(No) – p(Yes) . log2p(Yes)

Entropy(Decision|Outlook=Overcast) = – (0) . log2(0) – (4/4) . log2(4/4)

Entropy(Decision|Outlook=Overcast) = 0

• outlook = rain

Ada 3 kasus dengan decision = yes dan 2 kasus dengan decision = no saat outlook =
sunny, dengan demikian kita hitung entropy nya.

Entropy(Decision|Outlook=Rain) = – p(No) . log2p(No) – p(Yes) . log2p(Yes)

Entropy(Decision|Outlook=Rain) = – (2/5) . log2(2/5) – (3/5) . log2(3/5)

Entropy(Decision|Outlook=Rain) = 0.971

Sekarang kita bisa menghitung Information gain nya Decision, Outlook.

Gain(Decision, Outlook) = Entropy(Decision) – ∑ [ p(Decision|Outlook) .


Entropy(Decision|Outlook) ]

Gain(Decision, Outlook) = Entropy(Decision) – [ p(Decision|Outlook=Sunny) .


Entropy(Decision|Outlook=Sunny) ] – [ p(Decision|Outlook=Overcast) .
Entropy(Decision|Outlook=Overcast) ] – [ p(Decision|Outlook=Rain) .
Entropy(Decision|Outlook=Rain) ]

Gain(Decision, Outlook) = 0.94 – [ 5/14 * 0.971 ] – [4/14 * 0 ] – [5/14 * 0.971]

Gain(Decision, Outlook) = 0.247


Dengan metode yang sama, kita hitung information gain untuk atribut lainnya.

• Gain(Decision, Temp) = 0.029

• Gain(Decision, Humidity) = 0.152

• Gain(Decision, Wind) = 0.048

Dengan demikian, kita memilih atribut outlook sebagai root node.

Pada outlook overcast memiliki 7 kasus dan semuanya memiliki nilai yes (Sum(Total) /
Sum(yes) = 4/4 = 1) dan tidak ada nilai no. Dengan demikian outlook overcast langsung
menjadi leaf node.

Pada outlook sunny ada 5 kasus dan memiliki nilai 2 yes dan nilai 3 no. Karena
itu atribut dengan nilai information gain terbesar dipilih menjadi internal node. kita
mulai dulu dari artibut temp.

• outlook = sunny | temp=hot

Ada 0 kasus dengan decision = yes dan 3 kasus dengan decision = no saat outlook =
sunny, dengan demikian kita hitung entropy nya.

Entropy(Outlook=Sunny | temp=hot) = – p(No) . log2p(No) – p(Yes) . log2p(Yes)


Entropy(Outlook=Sunny | temp=hot) = – (2/2) . log2(2/2) – (0/2) . log2(0/2)

Entropy(Outlook=Sunny | temp=hot) = 0

• outlook = sunny | temp=mild

Ada 1 kasus dengan decision = yes dan 1 kasus dengan decision = no saat outlook =
sunny, dengan demikian kita hitung entropy nya.

Entropy(Outlook=Sunny | temp=mild) = – p(No) . log2p(No) – p(Yes) . log2p(Yes)

Entropy(Outlook=Sunny | temp=mild) = – (1/2) . log2(1/2) – (1/2) . log2(1/2)

Entropy(Outlook=Sunny | temp=mild) = 1

• outlook = sunny | temp=cool

Ada 1 kasus dengan decision = yes dan 0 kasus dengan decision = no saat outlook =
sunny, dengan demikian kita hitung entropy nya.

Entropy(Outlook=Sunny | temp=cool) = – p(No) . log2p(No) – p(Yes) . log2p(Yes)

Entropy(Outlook=Sunny | temp=cool) = – (0/1) . log2(0/1) – (1/1) . log2(1/1)

Entropy(Outlook=Sunny | temp=cool) = 0

Sekarang kita bisa menghitung Information gain nya.

Gain(Outlook = sunny | temp) = Entropy(Decision|outlook=Sunny) – ∑


[ p(Outlook=Sunny | temp) . Entropy(Outlook=Sunny | temp) ]

Gain(Outlook = sunny | temp) = Entropy(Decision|outlook=Sunny) –


[ p(Outlook=Sunny | temp=hot) . Entropy(Outlook=Sunny | temp=hot) ] –
[ p(Outlook=Sunny | temp=mild) . Entropy(Outlook=Sunny | temp=mild) ]-–
[ p(Outlook=Sunny | temp=normal) . Entropy(Outlook=Sunny | temp=normal) ]

Gain(Outlook = sunny | temp) = 0.971 – [2/5 * 0] – [2/5 * 1] – [1/5 * 0]

Gain(Outlook = sunny | temp) = 0.571


Dengan metode yang sama, kita hitung information gain untuk atribut lainnya.

•Gain(Outlook=Sunny | Humidity) = 0.970

•Gain(Outlook=Sunny | Wind) = 0.019

Karena humidity memiliki gain tertinggi maka dipilih menjadi internal node.

Pada humidity high hanya memiliki 3 kasus dan semuanya memiliki nilai no
(Sum(Total) / Sum(no) = 3/3 = 1) dan tidak ada nilai yes. Dengan demikian humidity
high langsung menjadi leaf node.

Pada humidity normal hanya memiliki 2 kasus dan semuanya memiliki nilai yes
(Sum(Total) / Sum(yes) = 2/2 = 1) dan tidak ada nilai no. Dengan demikian humidity
high langsung menjadi leaf node.

Kita lanjut pada outlook rain, ada 5 kasus dan memiliki nilai 3 yes dan nilai 2 no.
Karena itu atribut dengan nilai information gain terbesar dipilih menjadi internal node.
Didapatkan bahwa gain paling tinggi adalah wind. Maka wind dipilih menjadi internal
node.

Pada wind strong hanya memiliki 2 kasus dan semuanya memiliki nilai no (Sum(Total) /
Sum(no) =2/2 = 1) dan tidak ada nilai yes. Dengan demikian wind strong langsung
menjadi leaf node.
Sehingga decision tree yang dihasilkan :

Anda mungkin juga menyukai