Assalamu‘alaikum wr. wb.
Hello guys, Kembali lagi Bersama Teknoblog oleh Inzaghi's Blog! Kali ini kita akan membahas tentang Algoritma Decision Tree dalam Machine Learning.
Sumber Materi : Datacamp.com, Analyticsvidhya.com (Blog), Geeksforgeeks.org, Tpointtech.com, dan Dqlab.id
Machine learning menjadi salah satu bidang teknologi yang mengalami perkembangan sangat pesat dalam beberapa tahun terakhir. Salah satu metode yang banyak diterapkan dalam bidang ini adalah decision tree atau pohon keputusan. Model ini digunakan untuk memperkirakan atau menentukan hasil berdasarkan sejumlah kondisi, kriteria, atau atribut yang tersedia. Karena kemampuannya yang fleksibel, decision tree dimanfaatkan di berbagai sektor, seperti kesehatan, keuangan, pemasaran, manufaktur, hingga manajemen sumber daya manusia.
Dalam praktik machine learning, decision tree dapat digunakan untuk menyelesaikan beragam permasalahan, baik yang berkaitan dengan klasifikasi maupun regresi. Selain membantu menghasilkan keputusan yang lebih tepat dan terstruktur, metode ini juga mampu mempercepat proses pengambilan keputusan dengan memanfaatkan data yang tersedia secara efisien. Lalu, bagaimana penerapan decision tree dalam kehidupan sehari-hari?
A. Pengertian Decision Tree Algorithm
Decision tree merupakan sebuah model berbentuk struktur pohon yang menyerupai diagram alir (flowchart). Pada struktur ini, setiap simpul internal (internal node) merepresentasikan suatu fitur atau atribut, cabang (branch) menunjukkan aturan atau hasil dari suatu keputusan, sedangkan simpul daun (leaf node) menggambarkan hasil atau prediksi akhir.
Simpul yang berada di bagian paling atas disebut root node. Node ini berfungsi sebagai titik awal untuk membagi data berdasarkan nilai atribut tertentu. Selanjutnya, proses pembagian dilakukan secara berulang menggunakan teknik yang dikenal sebagai recursive partitioning, sehingga terbentuk struktur pohon yang semakin rinci. Bentuk visual yang menyerupai diagram alir membuat decision tree mudah dipahami karena alur pengambilan keputusannya mirip dengan cara manusia berpikir saat menganalisis suatu permasalahan.
Dalam bidang machine learning, decision tree termasuk ke dalam kategori algoritma white box, yaitu algoritma yang proses pengambilan keputusannya dapat dilihat dan dipahami secara jelas. Berbeda dengan algoritma black box, seperti neural network, yang mekanisme internalnya sulit dijelaskan, decision tree memungkinkan pengguna menelusuri setiap langkah yang menghasilkan suatu prediksi. Selain itu, proses pelatihannya (training) umumnya lebih cepat dibandingkan dengan neural network.
Kompleksitas waktu (time complexity) pada decision tree dipengaruhi oleh jumlah data (record) serta banyaknya atribut yang digunakan dalam proses pelatihan. Decision tree juga termasuk metode nonparametrik (distribution-free) karena tidak memerlukan asumsi mengenai distribusi probabilitas dari data yang digunakan. Dengan karakteristik tersebut, algoritma ini mampu mengolah data berdimensi tinggi secara efektif dan tetap menghasilkan tingkat akurasi yang baik dalam berbagai kasus.
B. Istilah-istilah dalam Algoritma Decision Tree
Sebelum mempelajari decision tree lebih lanjut, penting untuk memahami beberapa istilah dasar yang sering digunakan dalam algoritma ini.
1. Root Node (Simpul Akar)
Root node merupakan simpul pertama atau titik awal pada sebuah decision tree. Seluruh data atau populasi awal akan mulai dibagi berdasarkan atribut maupun kondisi tertentu dari node ini.
2. Decision Node (Simpul Keputusan)
Decision node adalah simpul yang terbentuk setelah root node atau node lainnya melakukan proses pemisahan (splitting). Simpul ini berisi keputusan atau kondisi yang digunakan untuk membagi data ke dalam cabang-cabang berikutnya.
3. Leaf Node (Simpul Daun)
Leaf node merupakan simpul akhir pada decision tree yang tidak dapat dibagi lagi. Simpul ini biasanya menunjukkan hasil akhir, seperti kelas prediksi atau output keputusan. Leaf node juga sering disebut sebagai terminal node.
4. Sub-Tree (Subpohon)
Sub-tree adalah bagian tertentu dari keseluruhan struktur decision tree. Konsep ini serupa dengan subgraph pada teori graf, yaitu bagian yang membentuk pohon yang lebih kecil di dalam pohon utama.
5. Pruning (Pemangkasan)
Pruning adalah teknik untuk menghapus atau memangkas node-node tertentu pada decision tree. Tujuan utamanya adalah mengurangi overfitting, menyederhanakan struktur pohon, serta meningkatkan kemampuan model dalam melakukan prediksi terhadap data baru.
6. Branch (Cabang)
Branch merupakan jalur yang menghubungkan satu node dengan node lainnya berdasarkan suatu aturan keputusan. Cabang menggambarkan alur pengambilan keputusan dari satu kondisi menuju kondisi atau hasil berikutnya. Istilah branch sering kali digunakan bersamaan dengan sub-tree karena keduanya sama-sama merepresentasikan bagian dari struktur pohon.
7. Parent Node dan Child Node (Simpul Induk dan Simpul Anak)
Parent node adalah simpul yang masih dapat dibagi menjadi beberapa sub-node. Sementara itu, child node merupakan simpul hasil pembagian dari parent node. Parent node menyatakan suatu kondisi atau aturan keputusan, sedangkan child node menunjukkan kemungkinan hasil atau keputusan lanjutan berdasarkan kondisi tersebut.
C. Cara Kerja Algoritma Decision Tree
Algoritma decision tree bekerja dengan membagi dataset berdasarkan nilai atribut atau fitur tertentu hingga menghasilkan kelompok data yang semakin homogen. Tujuan utama proses ini adalah agar setiap subset yang terbentuk berisi data yang, sebisa mungkin, berasal dari kelas yang sama. Pada bagian akhir pohon, setiap leaf node (simpul daun) merepresentasikan hasil prediksi akhir yang dapat berupa label kelas pada kasus klasifikasi maupun nilai kontinu pada kasus regresi. Agar lebih mudah dipahami, berikut adalah tahapan cara kerja algoritma decision tree.
1. Memulai dari Root Node
Proses dimulai pada root node (simpul akar), yaitu node paling atas yang merepresentasikan seluruh dataset. Pada tahap ini, semua data masih berada dalam satu kelompok sebelum dilakukan proses pembagian.
2. Menentukan Pemisahan Terbaik
Selanjutnya, algoritma mencari atribut atau fitur yang paling efektif untuk membagi data menjadi beberapa kelompok yang memiliki karakteristik paling berbeda. Pemilihan atribut ini dilakukan menggunakan kriteria tertentu, seperti Information Gain, Gain Ratio, atau Gini Index, sehingga setiap percabangan mampu memisahkan data seoptimal mungkin.
3. Membentuk Cabang (Branching)
Setelah atribut terbaik dipilih, dataset dibagi menjadi beberapa subset sesuai dengan nilai atribut tersebut. Setiap hasil pembagian membentuk cabang (branch) baru pada pohon keputusan yang menggambarkan kemungkinan jalur keputusan berdasarkan kondisi tertentu.
4. Mengulangi Proses Secara Rekursif
Pada setiap cabang yang terbentuk, algoritma kembali mencari atribut terbaik untuk melakukan pemisahan berikutnya. Proses ini berlangsung secara rekursif, yaitu terus berulang hingga salah satu kondisi penghentian tercapai, misalnya seluruh data dalam satu node berasal dari kelas yang sama atau tidak ada lagi atribut yang dapat digunakan untuk membagi data.
5. Menghasilkan Leaf Node
Ketika proses pembagian berhenti, node terakhir akan menjadi leaf node (simpul daun). Node ini berisi hasil akhir prediksi. Dalam classification tree, leaf node menunjukkan kelas atau kategori data, sedangkan pada regression tree, leaf node menghasilkan nilai numerik atau nilai kontinu sebagai prediksi.
D. Struktur Algoritma Decision Tree
Decision Tree adalah salah satu algoritma Supervised Learning yang digunakan untuk menyelesaikan masalah klasifikasi (classification) maupun regresi (regression). Algoritma ini bekerja seperti diagram alir (flowchart), di mana setiap keputusan dibuat berdasarkan suatu atribut hingga menghasilkan keputusan akhir.
![]() |
| Contoh Decision Tree (Sumber Gambar : ChatGPT) |
Pada gambar di atas, proses pengambilan keputusan dilakukan secara bertahap dengan menggunakan pertanyaan mengenai kondisi cuaca.
1. Root Node (Node Akar)
Pada bagian paling atas terdapat node:
"Apakah cuaca cerah?"
Inilah yang disebut Root Node.
Fungsinya :
- Merupakan titik awal proses klasifikasi
- Mewakili seluruh dataset sebelum dibagi
- Memilih atribut yang paling baik untuk memisahkan data
Pada algoritma Decision Tree sebenarnya, atribut root dipilih menggunakan ukuran seperti:
- Information Gain (ID3)
- Gain Ratio (C4.5)
- Gini Index (CART)
Karena atribut tersebut dianggap paling mampu memisahkan kelas.
2. Branch (Cabang)
Setiap garis pada gambar merupakan Branch.
Cabang menunjukkan hasil dari suatu keputusan.
Contohnya:
Apakah cuaca cerah?
Ya → Apakah suhu panas?
Tidak → Apakah sedang hujan?
Artinya setiap jawaban akan membawa data menuju proses berikutnya.
3. Internal Node
Internal Node adalah node yang masih melakukan pengujian atribut.
Pada gambar terdapat dua internal node:
Internal Node 1
Apakah suhu panas?
Jika :
- Ya → Tidak bermain
- Tidak → Bermain
Internal Node 2
Apakah sedang hujan?
Jika :
- Ya → Tidak bermain
- Tidak → Bermain
Internal node berfungsi untuk terus membagi data sampai diperoleh kelompok data yang cukup homogen (pure).
4. Leaf Node
Leaf Node merupakan node terakhir.
Pada gambar terdapat empat leaf node.
Misalnya :
Tidak bermain
(Kelas: Tidak)
atau
Bermain
(Kelas: Ya)
Leaf node tidak memiliki cabang lagi karena merupakan hasil prediksi akhir.
Dalam Machine Learning :
- Classification Tree → Leaf berisi kelas
- Regression Tree → Leaf berisi nilai numerik
E. Kelebihan dan Kekurangan Algoritma Decision Tree
Berikut ini merupakan Kelebihan dan Kekurangan Algoritma Decision Tree.
Kelebihan Decision Tree :
- Mudah Dipahami dan Diinterpretasikan : Decision tree memiliki struktur yang menyerupai diagram alir (flowchart), sehingga alur pengambilan keputusannya mudah divisualisasikan dan dipahami. Bahkan, pengguna yang tidak memiliki latar belakang teknis pun dapat memahami cara kerja model ini dengan relatif mudah.
- Mampu Mengolah Data Numerik dan Kategorikal : Algoritma ini dapat memproses berbagai jenis data, baik data numerik maupun data kategorikal, tanpa memerlukan proses prapemrosesan (preprocessing) yang rumit.
- Tidak Memerlukan Normalisasi atau Scaling Data : Berbeda dengan beberapa algoritma machine learning lainnya, decision tree tidak mengharuskan data dinormalisasi atau diskalakan terlebih dahulu sebelum proses pelatihan (training), sehingga persiapan data menjadi lebih sederhana.
- Melakukan Seleksi Fitur Secara Otomatis : Decision tree secara otomatis memilih atribut atau fitur yang paling berpengaruh dalam proses pengambilan keputusan. Hal ini membantu model memfokuskan analisis pada fitur-fitur yang memiliki kontribusi terbesar terhadap hasil prediksi.
- Mampu Menangani Hubungan Nonlinier : Algoritma ini dapat mengenali dan memodelkan hubungan yang kompleks atau nonlinier antarvariabel, sehingga cocok digunakan pada berbagai jenis permasalahan dengan pola data yang tidak sederhana.
Kekurangan (Disadvantages) Decision Tree :
- Rentan Mengalami Overfitting : Decision tree memiliki kecenderungan untuk menyesuaikan diri secara berlebihan terhadap data pelatihan (overfitting), terutama jika struktur pohon terlalu dalam atau memiliki terlalu banyak cabang. Akibatnya, performa model pada data baru dapat menurun.
- Sensitif terhadap Perubahan Data : Perubahan kecil pada dataset dapat menghasilkan struktur pohon yang sangat berbeda. Hal ini membuat decision tree tergolong kurang stabil dibandingkan beberapa algoritma machine learning lainnya.
- Bias terhadap Dataset yang Tidak Seimbang : Jika distribusi kelas dalam dataset tidak seimbang (imbalanced dataset), decision tree cenderung memberikan prediksi yang lebih menguntungkan kelas yang jumlah datanya lebih banyak, sehingga akurasi pada kelas minoritas dapat menurun.
- Terbatas pada Pemisahan Axis-Parallel : Decision tree umumnya hanya melakukan pemisahan berdasarkan satu atribut pada setiap node (sejajar dengan sumbu atau axis-parallel splits). Oleh karena itu, algoritma ini kurang efektif dalam menangani batas keputusan (decision boundary) yang berbentuk diagonal atau lebih kompleks.
- Struktur Pohon Dapat Menjadi Terlalu Kompleks : Ketika jumlah data dan atribut semakin besar, struktur decision tree dapat berkembang menjadi sangat kompleks. Pohon yang terlalu besar akan lebih sulit diinterpretasikan dan kehilangan salah satu keunggulan utamanya, yaitu kemudahan dalam memahami proses pengambilan keputusan.
F. Contoh dari Decision Tree
Mari kita pahami pohon keputusan dengan bantuan sebuah contoh :
![]() |
| Sumber : Analyticsvidhya.com (Blog) |
Decision Tree memiliki struktur berbentuk pohon yang menyerupai diagram alur (flowchart), di mana setiap simpul (node) memiliki fungsi tertentu dalam proses pengambilan keputusan. Simpul di bagian dalam (internal node) merepresentasikan suatu atribut atau fitur, cabang (branch) menunjukkan aturan keputusan berdasarkan nilai atribut tersebut, sedangkan simpul paling akhir (leaf node) berisi hasil atau prediksi yang dihasilkan oleh model.
Pada bagian paling atas terdapat root node, yaitu titik awal yang mewakili seluruh data. Dari node ini, algoritma mulai membagi data berdasarkan atribut yang dianggap paling relevan. Proses pembagian tersebut dilakukan secara berulang atau rekursif (recursive partitioning) hingga diperoleh kelompok data yang semakin spesifik. Karena strukturnya menyerupai diagram alur, Decision Tree mampu menggambarkan proses pengambilan keputusan dengan cara yang mirip seperti manusia berpikir, sehingga hasilnya mudah dipahami dan diinterpretasikan.
Dalam Machine Learning, Decision Tree termasuk ke dalam kategori algoritma white-box, yaitu model yang memperlihatkan secara jelas bagaimana keputusan dibuat pada setiap tahap. Berbeda dengan algoritma black-box seperti Neural Network, yang mekanisme pengambilan keputusannya sulit dijelaskan, Decision Tree memungkinkan pengguna menelusuri setiap langkah yang menghasilkan suatu prediksi. Selain itu, waktu pelatihan (training time) algoritma ini umumnya lebih cepat dibandingkan dengan Neural Network.
Kompleksitas komputasi Decision Tree dipengaruhi oleh jumlah data (records) dan jumlah atribut (features) yang digunakan. Algoritma ini juga termasuk metode nonparametrik (distribution-free) karena tidak memerlukan asumsi tertentu mengenai distribusi probabilitas data. Berkat karakteristik tersebut, Decision Tree mampu mengolah data berdimensi tinggi dengan tingkat akurasi yang baik sekaligus tetap mempertahankan interpretasi model yang mudah dipahami.
- Apakah Anda memperhatikan sesuatu pada diagram alir di atas? Kita melihat bahwa jika cuaca berawan, maka kita harus pergi bermain. Mengapa tidak terpecah lebih jauh? Mengapa berhenti di situ?
- Untuk menjawab pertanyaan ini, kita perlu mengetahui beberapa konsep lagi seperti entropi, perolehan informasi, dan indeks Gini. Tetapi secara sederhana, saya dapat mengatakan di sini bahwa output untuk dataset pelatihan selalu ya untuk cuaca berawan. Karena tidak ada ketidakteraturan di sini, kita tidak perlu membagi node lebih lanjut.
- Tujuan pembelajaran mesin adalah untuk mengurangi ketidakpastian atau ketidakteraturan dari dataset dan untuk ini, kita menggunakan pohon-pohon ini.
- Sekarang Anda pasti berpikir, bagaimana saya tahu apa yang seharusnya menjadi node akar? Apa yang seharusnya menjadi node keputusan? Kapan saya harus berhenti membagi? Untuk memutuskan ini, ada metrik yang disebut "Entropi" yang merupakan jumlah ketidakpastian dalam dataset.
G. Ukuran Pemilihan Atribut dalam Decision Tree
Attribute Selection Measure (ASM) adalah metode heuristik yang digunakan untuk menentukan kriteria pemisahan (splitting criterion) terbaik dalam membangun Decision Tree. Tujuan utamanya adalah memilih atribut yang mampu membagi data menjadi kelompok-kelompok yang paling optimal sehingga hasil klasifikasi atau prediksi menjadi lebih akurat.
ASM juga dikenal sebagai aturan pemisahan (splitting rules) karena berfungsi menentukan titik atau batas pemisahan (split point) pada setiap node dalam pohon keputusan. Metode ini mengevaluasi setiap fitur atau atribut pada dataset, kemudian memberikan nilai atau peringkat berdasarkan seberapa baik atribut tersebut mampu memisahkan data. Atribut yang memperoleh skor tertinggi akan dipilih sebagai splitting attribute, yaitu atribut yang digunakan untuk membagi data pada node tersebut.
Apabila atribut yang digunakan memiliki nilai kontinu (continuous-valued attribute), maka selain memilih atribut terbaik, algoritma juga harus menentukan titik pemisahan (split point) yang paling sesuai agar data dapat dipartisi secara optimal.
Beberapa metode Attribute Selection Measure yang paling banyak digunakan dalam algoritma Decision Tree antara lain:
- Information Gain : Mengukur seberapa besar pengurangan ketidakpastian (entropy) setelah data dipisahkan berdasarkan suatu atribut.
- Gain Ratio : Pengembangan dari Information Gain yang mengurangi kecenderungan memilih atribut dengan jumlah kategori yang sangat banyak.
- Gini Index : Yang mengukur tingkat kemurnian (purity) suatu kelompok data dan umum digunakan pada algoritma CART (Classification and Regression Trees).
1. Information Gain
Information Gain menunjukkan seberapa bermanfaat suatu pertanyaan atau atribut (fitur) dalam membagi data ke dalam beberapa kelompok. Konsep ini mengukur seberapa besar tingkat ketidakpastian (uncertainty) berkurang setelah proses pembagian dilakukan. Semakin besar nilai Information Gain, semakin baik atribut tersebut dalam menghasilkan kelompok data yang lebih jelas dan terpisah. Oleh karena itu, atribut dengan nilai Information Gain tertinggi akan dipilih sebagai dasar pengambilan keputusan pada proses pembentukan pohon keputusan (Decision Tree).
Sebagai contoh, misalkan terdapat sekumpulan data pelanggan yang dibagi menjadi dua kelompok berdasarkan usia, yaitu "Muda" dan "Tua". Jika seluruh pelanggan yang berusia muda membeli suatu produk, sedangkan seluruh pelanggan yang berusia tua tidak membelinya, maka nilai Information Gain akan sangat tinggi. Hal ini karena pembagian tersebut mampu memisahkan kedua kelompok secara sempurna tanpa menyisakan ketidakpastian mengenai hasil klasifikasinya.
- Misalkan S adalah sekumpulan data (instances), A merupakan sebuah atribut, Sᵥ adalah himpunan bagian dari S berdasarkan nilai tertentu v, v menyatakan salah satu nilai yang dapat dimiliki atribut A, dan Values(A) adalah himpunan seluruh nilai yang mungkin dimiliki oleh atribut A.
- Dalam konteks ini, Entropy merupakan ukuran yang digunakan untuk mengetahui tingkat ketidakpastian atau ketidakmurnian (impurity) pada suatu kumpulan data. Semakin tinggi nilai entropy, semakin besar pula tingkat ketidakpastian atau kandungan informasi yang terdapat dalam kumpulan data tersebut. Sebaliknya, nilai entropy yang rendah menunjukkan bahwa data sudah lebih homogen atau lebih mudah dipisahkan ke dalam kelas-kelas tertentu.
Konsep entropy pertama kali diperkenalkan oleh Claude Shannon sebagai ukuran untuk mengetahui tingkat ketidakmurnian (impurity) atau ketidakpastian dalam suatu kumpulan data. Dalam bidang fisika dan matematika, entropy digunakan untuk menggambarkan tingkat keacakan (randomness) atau ketidakteraturan suatu sistem. Sementara itu, dalam teori informasi (information theory), entropy mengukur tingkat ketidakpastian atau ketidakmurnian pada sekumpulan contoh (examples) atau data.
Information Gain merupakan ukuran yang menunjukkan seberapa besar penurunan nilai entropy setelah suatu data dibagi berdasarkan atribut tertentu. Nilai ini dihitung dengan mencari selisih antara entropy sebelum proses pembagian dan rata-rata entropy setelah data dipisahkan berdasarkan nilai-nilai atribut yang dipilih. Semakin besar nilai Information Gain, semakin baik atribut tersebut dalam memisahkan data ke dalam kelompok yang lebih homogen.
Algoritma ID3 (Iterative Dichotomiser 3) memanfaatkan Information Gain sebagai kriteria utama dalam menentukan atribut terbaik yang akan dijadikan simpul (node) pada proses pembentukan pohon keputusan (Decision Tree). Dengan memilih atribut yang memiliki nilai Information Gain tertinggi, ID3 mampu menghasilkan struktur pohon yang lebih efektif dalam melakukan proses klasifikasi.
Di mana p adalah probabilitas bahwa sebuah tupel sembarang dalam D termasuk dalam kelas Ci.
Keterangan :
- Info(D) adalah jumlah rata-rata informasi yang dibutuhkan untuk mengidentifikasi label kelas dari sebuah tuple dalam D.
Bertindak sebagai bobot partisi ke-j.
- InfoA(D) adalah informasi yang diharapkan yang dibutuhkan untuk mengklasifikasikan sebuah tuple dari D berdasarkan partisi oleh A.
Atribut A dengan perolehan informasi tertinggi, Gain(A), dipilih sebagai atribut pemisah pada node N().
2. Gain Ratio
Information gain memiliki kelemahan karena cenderung memihak atribut yang memiliki banyak kemungkinan nilai (outcome). Dengan kata lain, metode ini lebih memilih atribut yang memiliki banyak nilai unik. Sebagai contoh, atribut seperti customer_ID yang setiap nilainya berbeda akan menghasilkan nilai Info(D) = 0 karena setiap data berada pada partisi yang murni (pure partition). Kondisi tersebut membuat nilai information gain menjadi sangat tinggi, meskipun pembagian data yang dihasilkan sebenarnya tidak memberikan manfaat dalam proses klasifikasi.
Algoritma C4.5, yang merupakan pengembangan dari ID3, mengatasi kelemahan tersebut dengan menggunakan gain ratio, yaitu pengembangan dari information gain. Gain ratio mengurangi bias terhadap atribut yang memiliki banyak nilai unik dengan menormalkan nilai information gain menggunakan Split Info. Implementasi algoritma C4.5 dalam bahasa Java dikenal sebagai J48 yang tersedia pada perangkat lunak data mining WEKA.
Di mana :
Bertindak sebagai bobot partisi ke-j.
- v adalah jumlah nilai diskrit dalam atribut A.
Rasio Penguatan (Gain Ratio) dapat didefinisikan sebagai :
Atribut dengan rasio perolehan tertinggi dipilih sebagai atribut pemisah (Sumber Jurnal).
3. Gini Index
Algoritma CART (Classification and Regression Tree) merupakan salah satu algoritma pohon keputusan yang menggunakan Indeks Gini (Gini Index) sebagai metode untuk menentukan titik pemisahan (split) terbaik pada setiap atribut.
Dengan p menyatakan probabilitas bahwa suatu data (tuple) dalam himpunan data D termasuk ke dalam kelas Ci.
Indeks Gini bekerja dengan mengevaluasi pemisahan biner (binary split) pada setiap atribut. Nilai impuritas dari masing-masing partisi dihitung, kemudian digabungkan menjadi rata-rata tertimbang (weighted sum). Apabila atribut A membagi himpunan data D menjadi dua bagian, yaitu D1 dan D2, maka nilai Indeks Gini untuk data tersebut dihitung menggunakan persamaan berikut.
Untuk atribut yang memiliki nilai diskrit, subset yang menghasilkan nilai Gini paling kecil akan dipilih sebagai atribut terbaik untuk melakukan pemisahan (splitting attribute). Sementara itu, pada atribut dengan nilai kontinu, setiap pasangan nilai yang saling berdekatan akan dievaluasi sebagai kandidat titik pemisahan. Selanjutnya, titik yang menghasilkan nilai Gini terendah dipilih sebagai titik pemisahan yang optimal.
Dengan demikian, atribut yang memiliki nilai Indeks Gini paling rendah akan dipilih sebagai atribut yang digunakan untuk membentuk percabangan pada pohon keputusan (decision tree).
https://www.datacamp.com/tutorial/decision-tree-classification-python
https://www.geeksforgeeks.org/machine-learning/decision-tree-introduction-example
H. Penerapan Decision Tree dalam Python
Berikut ini adalah Contoh Penerapan Decision Tree dalam Python.
1. Membangun Klasifikasi Pohon Keputusan (Decision Tree Classifier) di Scikit-learn
Mari kita masukkan terlebih dahulu Library Python.
import pandas as pdfrom sklearn import metricsfrom sklearn.tree import DecisionTreeClassifierfrom sklearn.model_selection import train_test_split
Pertama-tama, mari kita muat dataset Pima Indian Diabetes yang dibutuhkan menggunakan fungsi `readCSV` dari pandas. Anda dapat mengunduh Dataset Kaggle untuk mengikuti langkah-langkahnya.
col_names = ['pregnant', 'glucose', 'bp', 'skin', 'insulin', 'bmi', 'pedigree', 'age', 'label']# load datasetpima = pd.read_csv("diabetes.csv", header=None, names=col_names)
pima.head()
Output :
Setelah itu, kita akan membagikan kolom yang diberikan menjadi dua jenis variabel, yaitu variabel dependen (atau variabel target) dan variabel independen (atau variabel fitur).
#split dataset in features and target variablefeature_cols = ['pregnant', 'insulin', 'bmi', 'age','glucose','bp','pedigree']X = pima[feature_cols] # Featuresy = pima.label # Target variable
Untuk mengevaluasi kinerja suatu model secara objektif, salah satu pendekatan yang umum digunakan adalah membagi dataset menjadi data pelatihan (training set) dan data pengujian (test set). Data pelatihan digunakan untuk melatih model agar dapat mempelajari pola dari data, sedangkan data pengujian dimanfaatkan untuk mengukur kemampuan model dalam melakukan prediksi terhadap data yang belum pernah dilihat sebelumnya.
Proses pembagian dataset tersebut dapat dilakukan menggunakan fungsi train_test_split(). Dalam penggunaannya, fungsi ini memerlukan beberapa parameter utama, yaitu fitur (features) sebagai data masukan, target sebagai label atau variabel yang akan diprediksi, serta ukuran data uji (test size) yang menentukan proporsi dataset yang akan dialokasikan sebagai data pengujian.
# Split dataset into training set and test setX_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=1) # 70% training and 30% test
Lalu, tambahkan Kode berikut ini :
X = df.drop('Outcome', axis=1)y = df['Outcome']
Agar bisa melakukan Data Training (Data Latih) berikut ini.
print(X_train.head())print(X_train.dtypes)
Hasil Output :
Selanjutnya, Anda juga bisa menambahkan Kode ini untuk Data Testing (Data Uji).
print(X_test.head())print(X_test.dtypes)
Hasil Output :
Berikut ini merupakan implementasi sederhana Decision Tree Classification menggunakan Scikit-Learn untuk memprediksi apakah seseorang menderita diabetes (Outcome = 1) atau tidak (Outcome = 0) berdasarkan dataset diabetes.csv.
Pertama, lakukan Import Library yang diperlukan seperti :
- pandas → digunakan untuk membaca dan mengolah dataset.
- train_test_split → membagi dataset menjadi data training dan testing.
- DecisionTreeClassifier → algoritma Decision Tree untuk klasifikasi.
Setelah itu, akan membaca Dataset file diabetes.csv kemudian menyimpannya ke dalam variabel df.
Setelah itu, kita akan pisahkan Feature dan Target.
a. Feature (X)
Merupakan variabel input seperti :
- Pregnancies
- Glucose
- BloodPressure
- SkinThickness
- Insulin
- BMI
- DiabetesPedigreeFunction
- Age
Semuanya digunakan sebagai informasi untuk melakukan prediksi.
b. Target (y)
Merupakan label yang ingin diprediksi.
Outcome:
- 0 = Tidak Diabetes
- 1 = Diabetes
Sehingga, x berisikan :
Pregnancies Glucose BloodPressure ... Age
Sedangkan, y berisikan :
1 0 1 0 ...
Kemudian, dibagi lagi datanya menjadi Data Training dan Testing. Dataset dibagi menjadi dua bagian, yaitu :
- 70% → Data Training
- 30% → Data Testing
X_train, X_test, y_train, y_test = train_test_split(
X,
y,
test_size=0.3,
random_state=42
)Tujuannya adalah agar model belajar menggunakan data training, kemudian diuji menggunakan data yang belum pernah dilihat sebelumnya.
Parameter yang digunakan adalah :
test_size=0.3
Artinya :
30% data digunakan untuk testing.
random_state=42
Digunakan agar pembagian data selalu sama setiap kali program dijalankan. Contohnya :
Hasilnya tetap sama karena menggunakan random_state.
Terakhir, kita akan membuat Decision Tree yang akan seperti ini :
clf = DecisionTreeClassifier(
criterion="entropy",
max_depth=3
)Selanjutnya, kita akan lakukan prediksi model yang digunakan untuk memprediksi data testing.
y_pred = clf.predict(X_test.values) print(y_pred[:10])
Sehingga, inilah Kode Lengkapnya :
import pandas as pdfrom sklearn.model_selection import train_test_splitfrom sklearn.tree import DecisionTreeClassifier# 1. Baca datasetdf = pd.read_csv('diabetes.csv')# 2. Pisahkan fitur dan targetX = df.drop('Outcome', axis=1)y = df['Outcome']# 3. Split dataX_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)# 4. Buat dan latih modelclf = DecisionTreeClassifier(criterion="entropy", max_depth=3)clf.fit(X_train, y_train)# 5. Prediksiy_pred = clf.predict(X_test.values)print(y_pred[:10])
Terakhir, kita latih modelnya menjadi :
# Create Decision Tree classifer objectclf = DecisionTreeClassifier(criterion="entropy", max_depth=3)# Train Decision Tree Classiferclf = clf.fit(X_train,y_train)#Predict the response for test datasety_pred = clf.predict(X_test)
Terakhir, kita perkirakan seberapa akurat pengklasifikasi atau model dapat memprediksi jenis kultivar.
Akurasi dapat dihitung dengan membandingkan nilai set pengujian aktual dan nilai prediksi.
# Model Accuracy, how often is the classifier correct?print("Accuracy:",metrics.accuracy_score(y_test, y_pred))
Hasil Output :
Accuracy: 0.7186147186147186
Kita telah memperoleh tingkat klasifikasi sebesar 71,86% yang dianggap sebagai akurasi yang baik. Anda dapat meningkatkan akurasi ini dengan menyesuaikan parameter pada algoritma pohon keputusan.
2. Visualisasikan Pohon Keputusan (Decision Tree)
Kode ini digunakan untuk mengimpor seluruh library yang dibutuhkan dalam proses pembangunan model Decision Tree, mulai dari membaca dataset, melakukan pelatihan model, mengevaluasi hasil prediksi, hingga menampilkan visualisasi pohon keputusan.
Pada tahap awal, program mengimpor beberapa library Python yang diperlukan. Library Pandas digunakan untuk membaca dan mengelola dataset dalam bentuk DataFrame, sedangkan Matplotlib digunakan untuk menampilkan visualisasi. Library Scikit-Learn (sklearn) menyediakan fungsi-fungsi Machine Learning seperti pembagian data (train_test_split), algoritma Decision Tree Classifier, serta pengukuran akurasi model menggunakan accuracy_score. Selain itu, export_graphviz, StringIO, pydotplus, dan IPython.display.Image digunakan apabila ingin mengekspor struktur Decision Tree ke dalam bentuk gambar.
df = pd.read_csv("diabetes.csv")df.head()print(df.columns)
Dataset dibaca menggunakan fungsi pd.read_csv(), kemudian disimpan ke dalam variabel df. Setelah dataset berhasil dimuat, fungsi df.head() digunakan untuk menampilkan lima baris pertama sebagai pengecekan awal terhadap isi data. Selanjutnya, print(df.columns) digunakan untuk menampilkan seluruh nama atribut atau kolom yang tersedia sehingga memudahkan proses pemilihan fitur yang akan digunakan pada model Machine Learning.
feature_cols = list(X.columns)feature_cols = X.columnsfeature_cols = ['Pregnancies','Insulin','BMI','Age','Glucose','BloodPressure','DiabetesPedigreeFunction']X = df[feature_cols]
Pada Machine Learning, data dibagi menjadi feature (X) dan target (Y). Variabel feature_cols berisi daftar atribut yang dipilih sebagai variabel independen, yaitu Pregnancies, Insulin, BMI, Age, Glucose, BloodPressure, dan DiabetesPedigreeFunction. Selanjutnya, variabel X dibentuk dengan mengambil kolom-kolom tersebut dari dataset. Feature-feature inilah yang nantinya akan digunakan oleh algoritma Decision Tree untuk mempelajari pola dan menghasilkan prediksi terhadap status diabetes.
https://www.blogger.com/blog/post/edit/2490536221435885189/4878175290545862270
https://www.blogger.com/blog/post/edit/2490536221435885189/4066868138176523431
Itulah Penjelasan mengenai Algoritma Decision Tree. Mohon maaf apabila ada kesalahan apapun.
Terima Kasih 😄😘👌👍 :)
Wassalamu‘alaikum wr. wb.





