Pertemuan-4
Algoritma Supervised Learning
(Klasifikasi) : Naïve Bayes dan
Decision Tree
SKKNI Keahlian Bidang AI dan DS
Business Data Data Model
Understanding Understanding Modeling Deployment Evaluation
Preparation evaluation
1. Membuat
1. Menentukan 1. Mengumpulka 1. Memilah data 1. Membangun 1. Mengevaluasi rencana 1. Melakukan
objektif bisnis n data 2. Mengkonstruk skenario hasil deployment
review proyek
2. Menentukan 2. Menelaah si data pengujian pemodelan model
2. Melakukan data science
tujuan teknis data 3. Menentukan 2. Membangun 2. Melakukan deployment 2. Membuat
data science 3. Memvalidasi label model review proses model
3. Membuat laporan akhir
3. Membuat data 4. Mengintegrasi pemodelan rencana proyek data
rencana kan data pemeliharaan
proyek data 4. Melakukan
science pemeliharaan
model
Sumber SKKNI Keahlian Bidang AI dan DS
Pembagian Data (Train-Validation Split)
Pembagian data sangat sering ditemukan dalam pembelajaran
mesin. Dengan melakukan pembagian data, kita dapat
menemukan hyperparameter terbaik untuk model yang digunakan.
Dengan kata lain, pembagian data dapat membantu mengurangi
risiko underfitting maupun overfitting yang seringkali ditemui oleh
nilai hyperparameter yang kurang baik. Selain itu, pembagian data
juga dapat digunakan sebagai indikator baik atau buruknya
kemampuan model prediktif untuk menyelesaikan suatu masalah
tertentu. Secara umum data dapat dibagi menjadi 3 bagian, yaitu
data latih (training data), data validasi (validation data), dan data uji
(testing data):
a. Data latih atau biasa disebut dengan training data merupakan
bagian data yang digunakan saat melatih model.
Pembagian Data (Train-Validation Split)
b. Data validasi (validation data) adalah data yang digunakan untuk
mengevaluasi model yang telah dilatih dengan training data. Dengan
menguji model yang telah dilatih menggunakan validation data,
performa model-model dengan hyperparameter berbeda akan
dibandingkan dan diketahui hyperparameter mana yang
menyebabkan underfitting, overfitting, dan yang menghasilkan fit
model terbaik.
c. Data uji atau yang biasa disebut dengan testing data merupakan data
yang digunakan untuk menguji performa suatu algoritme
pembelajaran mesin satu dengan yang lainnya (misalkan
membandingkan performa algoritme Logistic Regression dengan
algoritme Support Vector Machine dalam klasifikasi digit MNIST).
Namun dalam beberapa literatur, data validasi sering dianggap sama
dengan data uji.
Pembagian Data (Train-Validation Split)
• Penggunaan pembagian data menjadi kewajiban dalam
menangani data yang jumlahnya besar.
• Hal ini dikarenakan jika data yang digunakan sedikit, model
akan dilatih pada training data yang lebih sedikit juga dan
menyebabkan tidak terlatihnya model dengan baik.
• Selain itu validation data yang sedikit juga menyebabkan
generalisasi model menjadi terlalu “optimis” atau dikatakan
memiliki bias yang tinggi. Secara umum, persentase
pembagian data untuk training data:validation data yang
sering digunakan adalah 66.6%:33.3%, 75%:25%, dan
80%:20%.
Pembagian Data (Train-Validation Split)
Pada bahasa pemrograman Python, pembagian data dapat
dilakukan dengan menggunakan Libray Scikit-Learn dengan
menjalankan potongan kode dibawah ini:
from sklearn.model_selection import train_test_split
X = [Link](['Expert_Diagnose'], axis = 1)
y = dft['Expert_Diagnose']
X_train, X_test, y_train, y_test = train_test_split(X, y, train_size = 0.7)
Dimana X merupakan fitur input, y merupakan label output, dan train_size
merupakan berapa persen dari dataset yang akan digunakan menjadi
training data. X_train dan y_train merupakan pasangan fitur input dan label
output dari training data, sementara X_test dan y_test merupakan pasangan
fitur input dan label output dari validation data / testing data.
Pembagian Data (Train-Validation Split)
X-Train Y-Train
Jenis_Di
Sumber_Peneran Bahan_Bakar_Mema
Jenis_Lantai_Rumah nding Pekerjaan Kepemilikan_Aset Hasil
gan_Utama sak
_Rumah
Semen/Papan Bambu Listrik Pekerja Lepas Tidak Arang/Kayu Layak
Tanah Bambu Listrik Tidak/Belum Tidak Arang/Kayu Layak
Bekerja
Ubin/Keramik/Marmer
Semen/Papan
Tembok Listrik
Bambu Listrik
Pedagang
Tidak/Belum
Memiliki
Tidak
Listrik/Gas
Arang/Kayu
Tidak
Layak
Traning
Bekerja Data 70%
Tanah Bambu Listrik Tidak/Belum Tidak Arang/Kayu Layak
Bekerja
Ubin/Keramik/Marmer Tembok Listrik Petani Memiliki Listrik/Gas Tidak
Ubin/Keramik/Marmer Bambu Listrik Pekerja Lepas Tidak Arang/Kayu Layak
Ubin/Keramik/Marmer Bambu Listrik Pekerja Lepas Tidak Arang/Kayu Layak
Ubin/Keramik/Marmer Bambu Listrik Pekerja Lepas Tidak Arang/Kayu Layak
Tanah Bambu Listrik Pekerja Lepas Tidak Arang/Kayu Layak
Ubin/Keramik/Marmer Tembok Listrik Pedagang Memiliki Listrik/Gas Tidak
Ubin/Keramik/Marmer Tembok Listrik Pns/Tni/Polri Memiliki Listrik/Gas Tidak Testing
Semen/Papan Tembok Listrik Tidak/Belum
Bekerja
Tidak Arang/Kayu Layak
Data
Ubin/Keramik/Marmer Tembok Listrik Pedagang Memiliki Listrik/Gas Tidak 30%
X-Test Y-Test
Pembagian Data (k-Fold Cross Validation)
K-Fold Cross Validation, metode ini seringkali digunakan
ketika ukuran dataset tidak terlalu besar. K-Fold Cross
Validation bekerja dengan melatih dan mengevaluasi model
pada sejumlah K kombinasi training data dan testing data yang
berbeda. Dengan demikian, model dilatih dengan data yang
tidak terlalu besar akan memiliki kemampuan generalisasi
yang lebih baik dibandingkan dengan menggunakan Train-
Validation Split (Ingat bahwa Train-Validation Split tidak baik
jika digunakan pada data yang tidak terlalu besar).
Pembagian Data (k-Fold Cross Validation)
Ilustrasi sederhana dari K-Fold Cross Validation disajikan pada
Gambar berikut ini:
K-Fold Cross Validation
1 Validation Train Train Train Train
2 Train Validation Train Train Train
3 Train Train Validation Train Train
4 Train Train Train Validation Train
5 Train Train Train Train Validation
Pembagian Data (k-Fold Cross Validation)
Sebagai contoh, misalkan terdapat data sebanyak 100.000 dan
ditentukan nilai K = 5, maka index pembagian data untuk setiap iterasi
adalah sebagai berikut:
1. Iterasi 1:
a. Index Training Data: 20.001 sampai 100.000
b. Index Testing Data: 1 sampai 20.000
2. Iterasi 2:
a. Index Training Data: 1 sampai 20.001 + 40.001 sampai 100.000
b. Index Testing Data: 20.001 sampai 40.000
Pembagian Data (k-Fold Cross Validation)
3. Iterasi 3:
a. Index Training Data: 1 sampai 40.000 + 60.001 sampai
100.000
b. Index Testing Data: 40.001 sampai 60.000
4. Iterasi 4:
a. Index Training Data: 1 sampai 60.000 + 80.001 sampai
100.000
b. Index Testing Data: 60.001 sampai 80.000
5. Iterasi 5:
a. Index Training Data: 1 sampai 80.000
b. Index Testing Data: 80.001 sampai 100.000
Pembagian Data (k-Fold Cross Validation)
• Performa model (misalkan akurasi) dari setiap iterasi kemudian
dirata-rata dan dibandingkan dengan performa model lain yang
dibentuk dengan hyperparameter berbeda.
• Pada bahasa pemrograman Python, K-Fold Cross Validation dapat
dilakukan dengan menggunakan pustaka Scikit-Learn dengan
menjalankan potongan kode yang ditampilkan berikut:
from sklearn.model_selection import cross_val_score
from [Link] import SVC
X = [Link](['Expert_Diagnose'], axis = 1)
y = dft['Expert_Diagnose']
model=SVC(kernel='linear', C=1)
scores=cross_val_score(model,X,y,cv=5)
print([Link]())
Klasifikasi
• Klasifikasi adalah teknik untuk menentukan kelas mana yang
termasuk dalam dependen berdasarkan satu atau lebih variabel
independen.
Binary Classification
• Setiap data pada Binary Classification memiliki satu atribut
kelas yang terdiri dari dua nilai.
• Model binary classifier bertujuan untuk mencari boundary
(batas) yang dapat memisahkan data secara optimal
berdasarkan kelasnya. Contoh Spam Filtering, spam atau
bukan spam
Klasifikasi
Mutliclass Classification
• Dataset dari tipe Multiclass Classification memilih satu atribut kelas
yang terdiri dari banyak nilai. Himpunan nilai dari kelas bersifat
terbatas dan diskrit. Contoh multiclass classification adalah
identifikasi jenis bunga iris, Dimana pada contoh ini bunga iris
memiliki 3 jenis kelas yaitu: Setosa, Versicolour, dan Virginica.
Multilabel Classification
• Dataset dari Multilabel Classification, output class berbentuk vector
yang terdiri dari kombinasi label (label set).nPanjang vector sesuai
dengan banyaknya tipe kelas dan setiap elemen pada vector dapat
direpresentasikan dengannnilai biner (0 atau 1).
• Misalkan klasifikasi pada suatu citra dengan kelas [pantai, ladang,
gunung, dan laut], jika dalam citra tersebut tersusun atas gambar
pantai, ladang,gunung, dan laut maka bentuk vector class untuk data
citra tersebut adalah (1, 0, 1, 1)
Algoritma Klasifikasi
Classification
K-Nearest
Logistic Random Support Vactor
Naïve Bayes Neighbor (K- Decision Tree
Regression Forest Machine (SVM)
NN)
Metrik Evaluasi Model Klasifikasi
• Akurasi: • Recall (Sensitivitas/Tingkat Positif
Proporsi prediksi yang benar dari Benar):
seluruh prediksi. Cocok untuk data Proporsi prediksi positif yang benar
dengan kelas yang seimbang. terhadap semua sampel positif aktual
𝐽𝑢𝑚𝑙𝑎ℎ 𝑃𝑟𝑒𝑑𝑖𝑘𝑠𝑖 𝐵𝑒𝑛𝑎𝑟 𝑇𝑟𝑢𝑒 𝑃𝑜𝑠𝑖𝑡𝑖𝑣𝑒𝑠 (𝑇𝑃)
𝐴𝑘𝑢𝑟𝑎𝑠𝑖 = 𝑅𝑒𝑐𝑎𝑙𝑙 =
𝐽𝑢𝑚𝑙𝑎ℎ 𝑇𝑜𝑡𝑎𝑙 𝑆𝑎𝑚𝑝𝑙𝑒 𝑙𝑇𝑟𝑢𝑒 𝑃𝑜𝑠𝑖𝑡𝑖𝑣𝑒𝑠 𝑇𝑃 + 𝐹𝑎𝑙𝑠𝑒 𝑁𝑒𝑔𝑎𝑡𝑖𝑣𝑒𝑠 (𝐹𝑁)
• Presisi (Precision): • F1-Score
Proporsi prediksi positif yang benar Rata-rata harmonis dari presisi dan recall.
terhadap semua prediksi positif. Berguna jika ada ketidakseimbangan
𝑇𝑟𝑢𝑒 𝑃𝑜𝑠𝑖𝑡𝑖𝑣𝑒𝑠 (𝑇𝑃)
kelas.
𝑃𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛 =
𝑙𝑇𝑟𝑢𝑒 𝑃𝑜𝑠𝑖𝑡𝑖𝑣𝑒𝑠 𝑇𝑃 + 𝐹𝑎𝑙𝑠𝑒 𝑃𝑜𝑠𝑖𝑡𝑖𝑣𝑒𝑠 (𝐹𝑃)
𝑃𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛 𝑥 𝑅𝑒𝑐𝑎𝑙𝑙
𝐹1 − 𝑆𝑐𝑜𝑟𝑒 = 2 𝑥
𝑃𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛 + 𝑅𝑒𝑐𝑎𝑙𝑙
Metrik Evaluasi Model Klasifikasi
• Confusion Matrix: • ROC-AUC (Receiver Operating
Matriks yang menunjukkan distribusi prediksi Characteristic - Area Under Curve):
benar dan salah.
✓Mengukur kemampuan model
Komponen: memisahkan kelas. Cocok untuk model
✓ True Positive (TP): Prediksi positif benar. probabilistik.
✓ True Negative (TN): Prediksi negatif benar.
✓ROC Curve: Grafik antara True Positive
✓ False Positive (FP): Prediksi positif salah. Rate (TPR) dan False Positive Rate (FPR).
✓ False Negative (FN): Prediksi negatif
salah.
Contoh Confusion Matrix:
Naïve Bayes Classifier
Naïve Bayes Classifier adalah model probabilistik untuk klasifikasi.
Terdapat dua model probabilistik, yaitu :
a. Discriminative Model
𝑷 𝑪 𝑿 𝑪 = 𝑪𝟏, . . . , 𝑪𝑳, 𝑿 = (𝑿𝟏, . . . , 𝑿𝒏)
b. Generative Model
𝑷 𝑿 𝑪 𝑪 = 𝑪𝟏, . . . , 𝑪𝑳, 𝑿 = (𝑿𝟏, . . . , 𝑿𝒏)
Untuk menentukan kelas, digunakan MAP (Maximum A Posterior)
Classification Rule. Assign 𝒙 𝒕𝒐 𝑪∗ 𝒊𝒇 𝑷 𝑪 = 𝒄 𝑿 = 𝒙) > 𝑷 𝑪 = 𝒄 𝑿 = 𝒙 𝒄 ≠ 𝒄, 𝒄 = 𝑪𝟏, … , 𝑪𝑳
Naïve Bayes Classifier menerapkan Bayesian Rule
𝑷 𝑿𝑪 𝑷(𝑪)
𝑷 𝑪𝑿 = ∞𝑷 𝑿 𝑪 𝑷(𝑪)
𝑷(𝑿)
Contoh Kasus : Naïve Bayes
Classifier
• Terdapat 14 data latih.
• Data memiliki 4 atribut (Outlook, Temperature, Humidity dan
Wind).
• Data latih terdiri dari dua kelas (kelas YES dan kelas NO untuk
bermain tenis).
• Diperlukan klasifikasi untuk menentukan kelas dari data uji,
apakah bermain tenis (YES) atau tidak (NO).
Contoh Kasus : Naïve Bayes Classifier
day outlook temp humidity wind Play
Berdasarkan data latih tersebut, dilakukan
D1 Sunny Hot High Weak No
D2 Sunny Hot High Strong No
perhitungan sebagai berikut :
D3 Overcast Hot High Weak Yes a. Mencari Nilai Probabilitas:
D4 Rain Mild High Weak Yes Temperat Play=Yes Play=No
Outlook Play=Yes Play=No ur
D5 Rain Cool Normal Weak Yes
D6 Rain Cool Normal Strong No Sunny 2/9 3/5 Hot 2/9 2/5
D7 Overcast Cool Normal Strong Yes Overcast 4/9 0/5 Mild 4/9 2/5
D8 Sunny Mild High Weak No Rain 3/9 2/5 Cool 3/9 1/5
D9 Sunny Cool Normal Weak Yes
D10 Rain Mild Normal Weak Yes
Humidity Play=Yes Play=No Wind Play=Yes Play=No
D11 Sunny Mild Normal Strong Yes
High 3/9 4/5=0.8 Strong 3/9 3/5
D12 Overcast Mild High Strong Yes
D13 Overcast Hot Normal Weak Yes Normal 6/9 1/5=0.2 Weak 6/9 2/5
D14 Rain Mild High Strong No
𝑃 𝑃𝑙𝑎𝑦 = 𝑌𝑒𝑠 = 9/14 𝑃 𝑃𝑙𝑎𝑦 = 𝑁𝑜 = 5/14
Contoh Kasus : Naïve Bayes Classifier
Atribut Nilai Yes 9/14 No 5/14
• Data Baru:
Wind Strong 3/9 3/5
outlook temp humidity Wind
Sunny Cool High Strong Wind Weak 6/9 2/5
• Look Up Table:
• MAP rule
Atribut Nilai Yes 9/14 No 5/14
a) 𝑷 𝒀𝒆𝒔 𝑿′ : [𝑃 𝑆𝑢𝑛𝑛𝑦 𝑌𝑒𝑠 ∗ (𝑃 𝐶𝑜𝑜𝑙 𝑌𝑒𝑠 ∗
Outlook Sunny 2/9 3/5 (𝑃 𝐻𝑖𝑔ℎ 𝑌𝑒𝑠 ∗ 𝑃 𝑆𝑡𝑟𝑜𝑛𝑔 𝑌𝑒𝑠 ]*P(Play=Yes)
Outlook Overcast 4/9 0/5 Hasil:
Outlook Rain 3/9 2/5 Yes= (2/9)*(3/9)*(3/9)*(3/9)*(9/14)=0.00523
b) 𝑷 𝑵𝒐 𝑿′ : [𝑃 𝑆𝑢𝑛𝑛𝑦 𝑁𝑜 ∗ (𝑃 𝐶𝑜𝑜𝑙 𝑁𝑜 ∗
Temperatur Hot 2/9 2/5 (𝑃 𝐻𝑖𝑔ℎ 𝑁𝑜 (𝑃𝑆𝑡𝑟𝑜𝑛𝑔|𝑁𝑜)]*P(Play=No.)
Temperatur Mild 4/9 2/5 Hasil:
Temperatur Cool 3/9 1/5 No=(3/5)*(1/5)*(4/5)*(3/5)*(5/14)= 0.0206
Diketahui Nilai P(Yes|X’)<(P(No.|X’), Maka Label X’
Humidity High 3/9 4/5 adalah “No”.
Humidity Normal 6/9 1/5 Dapat di simpulkan bahwa data baru masuk
kedalam kelas Play No..
Karakteristik Naïve Bayes Classifier
• Naïve Bayes Classifier bekerja lebih baik pada training data yang
kecil
• Proses pembangunan Naïve Bayes Classifier pada data numerik
menjadi lebih rumit dan memungkinkan terdapat informasi yang
hilang
• Pada Naïve Bayes Classifier, diasumsikan bahwa satu fitur
dengan fitur yang lain saling independen, hal ini mungkin tidak
selalu terjadi pada kasus nyata.
Naive Bayes pada Pemrograman
Python
Pada bahasa pemrograman Python, Naive Bayes dapat dilakukan
dengan menggunakan library Scikit-Learn dengan menjalankan
potongan kode berikut:
from sklearn import naive_bayes
from sklearn import metrics
nb = naive_bayes.BernoulliNB()
[Link](X_train, y_train)
y_pred = [Link](X_test)
score = metrics.accuracy_score(y_test, y_pred)
print("Akurasi dengan menggunakan Naive Bayes: ", score)
Decision Tree
Decision Tree (Pohon Keputusan) merupakan
salah satu algoritma pembelajaran mesin yang
mengklasifikasi dengan mengambil suatu
keputusan antara benar atau tidaknya suatu aturan.
Kelebihan dari algoritma Decision Tree adalah input
yang digunakan boleh berupa tipe data apapun
(String, Integer, Float, Boolean, dll)
Decision Tree
Ilustrasi Decision Tree: Hari Libur ?
Ya Tidak
Jam >
Bermain 17.00?
Ya Tidak
Bermain Bekerja
• Bagian paling puncak dari pohon keputusan (Hari Libur?) disebut dengan
root node.
• Bagian selanjutnya dari pohon keputusan adalah branch, pada gambar
di atas digambarkan oleh node (Jam > 17.00?).
• Terakhir leaves merupakan node yang berisi kelas dari permasalahan
yang ingin diklasifikasikan.
Decision Tree
Salah satu cara membangun Decision Tree adalah
dengan menggunakan perhitungan Gini Impurity.
Gini Impurity untuk leaf dari Decision Tree dapat
dihitung menggunakan persamaan berikut:
𝟐
𝑮𝒊𝒏𝒊 𝑰𝒎𝒑𝒖𝒓𝒊𝒕𝒚 = 𝟏 − 𝑷𝒓𝒐𝒃𝒂𝒃𝒊𝒍𝒊𝒕𝒂𝒔 𝒀𝒂 − (𝑷𝒓𝒐𝒃𝒂𝒃𝒊𝒍𝒊𝒕𝒂𝒔 (𝑻𝒊𝒅𝒂𝒌))𝟐
Studi Kasus : Decision Tree
Misalnya dimiliki data seperti pada table berikut:
Kebutuhan Sudah Harga
Primer Gajian Barang
Beli Untuk menentukan root, perlu
Ya Ya 7000 Tidak dicari Gini Impurity terkecil dari
Ya Tidak 12000 Tidak “Kebutuhan Primer”, “Sudah
Tidak Ya 18000 Ya Gajian”, dan “Harga Barang”
Tidak Ya 35000 Ya terhadap “Beli”.
Ya Ya 38000 Ya
Ya Tidak 50000 Tidak
Tidak Tidak 83000 Tidak
Studi Kasus : Decision Tree
Mencari Nilai Gini Impurity “Kebutuhan Primer” terhadap “Beli”
Kebutuhan Sudah Harga 𝑮𝒊𝒏𝒊 𝑰𝒎𝒑𝒖𝒓𝒊𝒕𝒚:
Beli Kebutuhan
Primer Gajian Barang = 1-(1/4)2 − (3/4)2
Primer?
Ya Ya 7000 Tidak = 0.38
Ya Tidak 12000 Tidak 𝑮𝒊𝒏𝒊 𝑰𝒎𝒑𝒖𝒓𝒊𝒕𝒚:
Ya Tidak
Tidak Ya 18000 Ya = 1-(2/3)2 − (1/3)2
Tidak Ya 35000 Ya = 0.44
Ya Ya 38000 Ya Beli
𝑻𝒐𝒕𝒂𝒍 𝑮𝒊𝒏𝒊 𝑰𝒎𝒑𝒖𝒓𝒊𝒕𝒚:
Tidak Beli = (4/7)*0.38+(3/7)*0.44
Ya Tidak 50000 Tidak Ya :1 Ya :2 = 0.4
Tidak Tidak 83000 Tidak Tidak :3 Tidak :1
Total Gini Impurity dapat dihitung dengan weighted average dari Gini Impurity kedua leaves. Jumlah
kemunculan “Ya” untuk kebutuhan primer sebanyak 4 dan jumlah kemunculan “Tidak” untuk kebutuhan
primer sebanyak 3, maka weighted average Gini Impurity dapat dihitung dengan (terdapat di gambar):
Gini Impurity leaf kiri * 4 / (4+3) +Gini Impurity leaf kanan * 3 / (4+3).
Studi Kasus : Decision Tree
Dengan cara yang sama, Gini Impurity “Sudah Gajian” terhadap “Beli”
dihitung dan diilustrasikan sebagai berikut:
Kebutuha Sudah Harga 𝑮𝒊𝒏𝒊 𝑰𝒎𝒑𝒖𝒓𝒊𝒕𝒚:
Beli Sudah Gajian?
n Primer Gajian Barang = 1-(3/4)2 − (1/4)2
Ya Ya 7000 Tidak = 0.38
Ya Tidak 12000 Tidak Ya Tidak 𝑮𝒊𝒏𝒊 𝑰𝒎𝒑𝒖𝒓𝒊𝒕𝒚:
Tidak Ya 18000 Ya = 1-(0/3)2 − (3/3)2
Tidak Ya 35000 Ya =0
Ya Ya 38000 Ya Beli Tidak Beli 𝑻𝒐𝒕𝒂𝒍 𝑮𝒊𝒏𝒊 𝑰𝒎𝒑𝒖𝒓𝒊𝒕𝒚:
Ya Tidak 50000 Tidak Ya :3 Ya :0 = (4/7)*0.38+(3/7)*0
Tidak :1 Tidak :3 = 0.22
Tidak Tidak 83000 Tidak
Studi Kasus : Decision Tree
Karena “Harga Barang” memiliki variabel kontinu, Gini Impurity
“Harga Barang” terhadap “Beli” dihitung dengan cara yang sedikit
berbeda.
• Pertama, data harus diurutkan berdasarkan “Harga Barang”
terkecil ke “Harga Barang” terbesar.
• Kemudian untuk setiap data yang berdekatan, hitung Gini Impurity
untuk rata-rata “Harga Barang” kedua data yang berdekatan.
Langkah perhitungan dapat dilihat pada Slide berikutnya
Studi Kasus : Decision Tree
• Hitung Gini Impurity untuk harga barang > 9.500, 9.500 di dapat dari
rata-rata 2 data pertama.
Rata-rata dari Harga
7000 dan 12000 Beli 𝑮𝒊𝒏𝒊 𝑰𝒎𝒑𝒖𝒓𝒊𝒕𝒚:
Barang = 1-(0/1)2 − (1/1)2
Harga Barang <
7000 Tidak =0
9500 9500 ?
12000 Tidak 𝑮𝒊𝒏𝒊 𝑰𝒎𝒑𝒖𝒓𝒊𝒕𝒚:
15000 Ya Tidak = 1-(3/6)2 − (3/6)2
18000 Ya
= 0.5
26500
35000 Ya
36500 Beli Tidak Beli 𝑻𝒐𝒕𝒂𝒍 𝑮𝒊𝒏𝒊 𝑰𝒎𝒑𝒖𝒓𝒊𝒕𝒚
38000 Ya Ya :0 Ya :3 𝒖𝒏𝒕𝒖𝒌 𝑩𝒂𝒓𝒂𝒏𝒈 < 𝟗𝟓𝟎𝟎? :
44000 Tidak :1 Tidak :3
50000 Tidak
= (1/7)*0+(6/7)*0.5
66500 83000 Tidak = 0.43
Studi Kasus : Decision Tree
• Dengan cara yang sama, hitung Gini Impurity untuk
15000, 26500, 36500, 44000, dan 66500.
• Setelah itu ambil Gini Impurity terkecil sebagai
kandidat root
• Jika ada lebih dari 1 yang sama, maka bebas
menentukan yang mana yang ingin digunakan
sebagai root.
Studi Kasus : Decision Tree
Didapatkan Gini Impurity dari
Harga
Gini Barang
Beli “Kebutuhan Primer”, “Sudah Gajian”,
Impurity
7000 Tidak
dan “Harga Barang” terhadap “Beli”
0.43 9500
12000 Tidak
secara berurutan 0.4, 0.22, dan 0.34.
0.34 15000
18000 Ya Karena Gini Impurity “Sudah Gajian”
0.48 26500
35000 Ya
terhadap ”Beli” merupakan yang
0,48 36500
38000 Ya
terkecil (0.22), maka “Sudah Gajian”
0.34 44000
50000 Tidak dijadikan root dari Decision Tree.
0.43 66500 83000 Tidak Maka Decision Tree sementara
dapat dilihat di slide selanjutnya →
Studi Kasus : Decision Tree
Kebutuha Sudah Harga Sudah Gajian?
Beli
n Primer Gajian Barang
Ya Ya 7000 Tidak Ya Tidak
Ya Tidak 12000 Tidak
Beli Tidak Beli
Tidak Ya 18000 Ya Ya :3 Ya :0
Tidak :1 Tidak :3
Tidak Ya 35000 Ya
Ya Ya 38000 Ya
Ya Tidak 50000 Tidak Karena Gini Impurity leaf kanan adalah 0,
Tidak Tidak 83000 Tidak maka tidak perlu di-split lagi. Oleh karena itu
hanya leaf kiri yang perlu di-split. Untuk split
leaf kiri dapat dilihat pada slide selanjutnya.
Studi Kasus : Decision Tree
Leaf kiri dapat di-split dengan mencari Gini Impurity terkecil dari “Kebutuhan Primer”
atau “Harga Barang”. Cara yang dilakukan sama, namun data yang digunakan lebih
sedikit karena telah tersaring oleh Decision root. Contoh untuk “Kebutuhan Primer”
dan “Harga Barang” berikut ini:
Total
Kebutuhan Sudah Harga
Beli 𝑮𝒊𝒏𝒊 𝑰𝒎𝒑𝒖𝒓𝒊𝒕𝒚
Primer Gajian Barang Sudah Gajian? 𝑲𝒆𝒃𝒖𝒕𝒖𝒉𝒂𝒏 𝑷𝒓𝒊𝒎𝒆𝒓
Ya Ya 7000 Tidak =0.25
Ya Tidak
Ya Tidak 12000 Tidak
Tidak Ya 18000 Ya Tidak Beli
Kebutuhan
Tidak Ya 35000 Ya Primer? Ya :0
Tidak :3
Ya Tidak
Ya Ya 38000 Ya
Beli Tidak Beli
Ya Tidak 50000 Tidak
Ya :1 Ya :2
Tidak Tidak 83000 Tidak Tidak :1 Tidak :0
Studi Kasus : Decision Tree
• Mencari Gini Impurity dari Harga Barang:
Ingat untuk data kontinu, perlu dihitung Gini
Impurity dari data berdekatan, dan Gini Sudah Gajian?
Impurity data dengan Harga Barang <15000
lebih kecil maka yang dijadikan Split adalah Tidak
Harga Barang < 15000 Ya
Kebutuhan Sudah Harga Harga Tidak Beli
Beli
Primer Gajian Barang Barang<15000? Ya :0
Ya Ya 7000 Tidak Tidak :3
Ya Tidak
Ya Tidak 12000 Tidak Beli Tidak Beli
Ya :0 Ya :3
Tidak Ya 18000 Ya
Tidak :1 Tidak :0
Tidak Ya 35000 Ya
Ya Ya 38000 Ya Total 𝑮𝒊𝒏𝒊 𝑰𝒎𝒑𝒖𝒓𝒊𝒕𝒚
𝑯𝒂𝒓𝒈𝒂 𝑩𝒂𝒓𝒂𝒏𝒈
Ya Tidak 50000 Tidak =0
Tidak Tidak 83000 Tidak
Studi Kasus : Decision Tree
• Karena Gini Impurity dari “Harga
Barang > 15000” lebih kecil
dibandingkan dengan Gini Impurity
“Kebutuhan Primer”, maka “Harga
Barang > 15000” dipilih sebagai
branch.
• Tidak diperlukan proses split lagi
karena Gini Impurity dari seluruh
leaves sudah mencapai 0. Sehingga
Decision Tree yang dihasilkan adalah
seperti gambar disamping:
Kelebihan dan Kekurangan Decision Tree
Classifier
• Pohon keputusan dapat memberikan penjelasan dari proses klasifikasi
yang dilakukan
• Proses pembangunan pohon keputusan pada data numerik menjadi
lebih rumit dan memungkinkan terdapat informasi yang hilang
• Pohon keputusan dapat tumbuh menjadi sangat kompleks pada data
yang rumit.
• Untuk mencegah agar Decision Tree tidak mengalami overfitting, nilai
maximum kedalaman tree dapat ditentukan.
• nilai minimum sampel data yang diperlukan agar node mengalami split
juga dapat ditentukan agar Decision Tree tidak mengalami overfitting.
Decision Tree Classifier pada Bahasa
Pemrograman Python
Pada bahasa pemrograman Python, Decision Tree dapat dilakukan dengan
menggunakan labrary Scikit-Learn dengan menjalankan potongan kode berikut:
from [Link] import DecisionTreeClassifier
from sklearn import metrics
# Inisialisasi Decision Tree Classifier
dt_classifier = DecisionTreeClassifier(max_depth=None, min_samples_split=2)
# Latih model dengan data training
dt_classifier.fit(X_train, y_train)
# Lakukan prediksi pada data testing
y_pred_dt = dt_classifier.predict(X_test)
# Evaluasi akurasi model
score_dt = metrics.accuracy_score(y_test, y_pred_dt)
print("Akurasi dengan menggunakan Decision Tree: ", score_dt)
Decision Tree Classifier pada Bahasa
Pemrograman Python
Beberapa parameter dapat diubah nilainya, antara lain adalah
parameter max_depth dan min_samples_split, dengan penjelasan pada
tabel berikut:
Parameter Keterangan Contoh Nilai
Max_depth Maksimum kedalaman tree • Bilangan Integer (1,2,3,4,….)
yang dibentuk • Nilai default : None (jika None maka tree akan
terus mendalam sampai seluruh Gini Impurity =
0)
min_samples_split Minimum sampel yang • Bilangan Integer (1,2,3,4,….)
diperlukan agar node • Nilai default : 2
dapat ‘split’
Contoh Perubahan Nilai Parameter
from [Link] import DecisionTreeClassifier
from sklearn import metrics
# Inisialisasi Decision Tree Classifier
dt_classifier = DecisionTreeClassifier(max_depth=4, min_samples_split=2)
# Latih model dengan data training
dt_classifier.fit(X_train, y_train)
# Lakukan prediksi pada data testing
y_pred_dt = dt_classifier.predict(X_test)
# Evaluasi akurasi model
score_dt = metrics.accuracy_score(y_test, y_pred_dt)
print("Akurasi dengan menggunakan Decision Tree: ", score_dt)
Latihan!
• Dari Tugas Pertemuan 3 yaitu mencari data dengan kaggle
silahkan bisa gunakan algortima Decision Tree dan Naive bayes
untuk melakukan klasfifikasi.
• Lihat hasil score akurasinya lebih bagus mana performa kedua
algortima tersebut.
• Jika data yang digunakan dalam tugas pertemuan 3 adalah data
dengan lebel berupa angka, maka mahasiswa bisa mencari data
lagi dengan data yang memiliki kelas atau label klasifikasi.