Perkembangan teknologi informasi menyebabkan jumlah data yang tersedia semakin meningkat, sehingga diperlukan metode yang tepat untuk mengolah data menjadi informasi yang bermanfaat. Salah satu teknik yang dapat digunakan adalah machine learning, yaitu metode yang memungkinkan komputer mempelajari pola dari data untuk menghasilkan prediksi atau klasifikasi. Salah satu algoritma yang digunakan dalam proses klasifikasi adalah Decision Tree. Menurut Nasrullah (2021), algoritma Decision Tree C4.5 dapat digunakan untuk mengklasifikasikan data dan memiliki keunggulan berupa hasil yang relatif mudah dipahami serta diinterpretasikan oleh manusia (Samiudin, 2018).
Decision Tree atau pohon keputusan merupakan metode klasifikasi yang membentuk struktur menyerupai pohon berdasarkan atribut dan aturan keputusan tertentu. Struktur tersebut terdiri atas simpul akar (root node), simpul internal (internal node), cabang (branch), dan simpul daun (leaf node) yang menunjukkan hasil keputusan atau prediksi. Penerapan algoritma ini dapat ditemukan dalam berbagai bidang, seperti pendidikan, kesehatan, dan pengambilan keputusan. Decision Tree diterapkan untuk mengklasifikasikan data prediksi kelulusan mahasiswa dan memperoleh akurasi sebesar 87,93%. Hasil tersebut menunjukkan bahwa algoritma Decision Tree dapat dimanfaatkan untuk membantu proses klasifikasi berdasarkan karakteristik data (Elwahdiyah & Hartono, 2025).
Berdasarkan uraian tersebut, praktikum kali ini untuk memahami konsep dasar dan tahapan penerapan algoritma pohon keputusan dalam analisis data. Melalui praktikum ini, mahasiswa diharapkan mampu memahami proses pembentukan pohon keputusan, menentukan atribut yang digunakan dalam klasifikasi, serta menginterpretasikan hasil pemodelan yang diperoleh. Selain itu, praktikum ini bertujuan untuk meningkatkan pemahaman mengenai penerapan algoritma Decision Tree dalam menyelesaikan permasalahan berbasis data serta mengevaluasi kemampuan model dalam menghasilkan klasifikasi yang sesuai.
Berdasarkan latar belakang, rumusan masalah yang disimpulkan adalah:
1. Bagaimana konsep dasar Decision Tree untuk klasifikasi menggunakan metode CART?
2. Bagaimana membangun model Classification Tree menggunakan algoritma CART?
Berdasarkan rumusan masalah, tujuan yang dapat disimpulkan adalah:
1. Menjelaskan konsep dasar Decision Tree untuk klasifikasi menggunakan metode CART.
2. Membangun model Classification Tree menggunakan algoritma CART.
Adapun manfaat pada penelitian ini, yaitu:
1. Bagi penulis
a. Dapat memberikan informasi serta pengetahuan tentang CART.
b. Dapat menerapkan wawasan ilmu yang telah diperoleh dalam bidang statistika tentang CART.
2. Bagi pembaca
Menambah ilmu pengetahuan dan pemahaman yang berkaitan tentang CART.
Gunakan dataset Hitters dari package ISLR untuk memprediksi Salary menggunakan Decision Tree (Regression Tree). Lakukan pengecekan dan penanganan missing value menggunakan na.omit(), kemudian bagi data menjadi training dan testing. Selanjutnya, bangun dan visualisasikan tree, analisis variable importance, lakukan prediksi dan evaluasi menggunakan MSE, tentukan CP terbaik, lakukan pruning, dan evaluasi kembali model menggunakan MSE.
CART (Classification and Regression Trees) merupakan metode statistik yang digunakan untuk melakukan klasifikasi dan regresi melalui pembentukan pohon keputusan. Metode ini membagi data menjadi dua kelompok pada setiap tahap pemisahan (binary split) berdasarkan variabel prediktor yang paling optimal. CART dapat digunakan untuk variabel respons kategorik maupun numerik sehingga penerapannya cukup luas dalam analisis data (Prabawati dkk., 2019).
CART memiliki beberapa komponen utama, yaitu root node sebagai simpul awal, internal node sebagai simpul pemisah, branch sebagai cabang yang menghubungkan simpul, dan leaf node sebagai simpul akhir yang menghasilkan prediksi. Dalam klasifikasi, CART menggunakan indeks Gini untuk menentukan pemisahan terbaik sehingga kelompok data yang terbentuk semakin homogen. Pemisahan dilakukan secara berulang hingga memenuhi kriteria penghentian tertentu (Pratiwi dkk., 2020).
Tahapan pembentukan model CART meliputi pembentukan pohon klasifikasi, penentuan pemisahan terbaik, penghentian pertumbuhan pohon, dan pemangkasan (pruning). Pemisahan data dilakukan berdasarkan kriteria yang sesuai, seperti indeks Gini untuk klasifikasi. Pohon yang terbentuk kemudian dapat dipangkas untuk mengurangi kompleksitas model dan mencegah overfitting. Selanjutnya, kinerja model dievaluasi menggunakan data pengujian dengan metrik seperti akurasi, presisi, sensitivitas, dan F1-score (Pratiwi dkk., 2020).
Pada Classification Tree, pemisahan data dilakukan dengan menentukan aturan yang dapat membentuk kelompok data dengan kelas yang semakin homogen.Beberapa ukuran yang digunakan dalam proses pemisahan tersebut antara lain Entropy, Information Gain, dan Gini Index (Fransiska, 2026).
Entropy digunakan untuk mengukur tingkat ketidakpastian atau ketidakmurnian kelas dalam suatu simpul. Semakin kecil nilai Entropy, semakin homogen simpul tersebut. Dirumuskan sebagai (Fransiska, 2026):
\[ \ \mathrm{Entropy}(t)=-\sum_{k=1}^{K}p_k\log_2(p_k) \ \] Semakin kecil nilai Entropy, semakin homogen data dalam suatu simpul. Sebaliknya, nilai Entropy semakin besar apabila proporsi kelas dalam simpul semakin seimbang. Jika seluruh amatan dalam suatu simpul berasal dari satu kelas yang sama, maka nilai Entropy sama dengan 0.
Digunakan untuk mengukur seberapa besar tingkat ketidakpastian (Entropy) berkurang setelah dilakukan suatu split. Semakin besar nilai Information Gain, semakin baik pemisahan yang dilakukan karena kelompok data yang terbentuk menjadi semakin homogen. Jika suatu dataset 𝐷 dipartisi menjadi beberapa bagian 𝐷1,𝐷2,…,𝐷𝑗, maka Information Gain dirumuskan sebagai:
\[ \ IG=E(D)-\sum_{j=1}^{J}\frac{|D_j|}{|D|}E(D_j) \ \]
Jika data hanya dibagi menjadi dua bagian, yaitu 𝐷1 dan 𝐷2 maka rumusnya dapat ditulis sebagai:
\[ \ IG=E(D)-\left[\frac{|D_1|}{|D|}E(D_1)+\frac{|D_2|}{|D|}E(D_2)\right] \ \]
Digunakan untuk mengukur tingkat ketidakmurnian kelas (Gini impurity) dalam suatu simpul. Semakin kecil nilai Gini Index, semakin homogen data dalam simpul tersebut. Gini index dirumuskan sebagai:
\[ \ \mathrm{Gini}(t)=1-\sum_{k=1}^{K}p_k^2 \ \]
Jika dataset 𝐷 dipartisi menjadi dua bagian 𝐷1 dan 𝐷2, maka nilai Gini setelah pemisahan dihitung menggunakan rata-rata terbobot:
\[ \ \mathrm{Gini}_{\mathrm{split}}= \frac{|D_1|}{|D|}\mathrm{Gini}(D_1) +\frac{|D_2|}{|D|}\mathrm{Gini}(D_2) \ \]
Proses perhitungan entropy dan gain diulang secara rekursif pada setiap node hingga seluruh data terpartisi sempurna atau tidak ada lagi atribut yang dapat dipartisi (Fatah & Kholishah, 2026).
Jenis data pada penelitian ini adalah data kuantitatif. Data kuantitatif merupakan data atau informasi yang didapatkan dalam bentuk angka atau numerik. Pada batasan masalah, data yang digunakan adalah dataset BreastCancer dari package mlbench pada program R, yang digunakan untuk klasifikasi kondisi kanker payudara. Sumber data yang digunakan adalah data sekunder. Data sekunder adalah data yang telah dikumpulkan dan diolah sebelumnya oleh pihak lain, bukan oleh peneliti yang sedang melakukan penelitian saat ini. Data sekunder yang digunakan pada penelitian ini berasal dari dataset program R.
Variabel penelitian adalah atribut atau nilai yang memiliki variasi tertentu dan dipilih peneliti untuk dianalisis.Variabel yang digunakan yaitu Class, Cl.thickness (ketebalan gumpalan sel), Cell.size (keseragaman ukuran sel), Cell.shape (keseragaman bentuk sel), Marg.adhesion (perlekatan sel), Epith.c.size (ukuran sel epitel), Bare.nuclei (kondisi inti sel), Bl.cromatin (struktur kromatin sel), Normal.nucleoli (kondisi nukleolus sel), dan Mitoses (aktivitas pembelahan sel). Variabel Class menunjukkan kondisi kanker payudara yang dikategorikan menjadi benign (jinak) dan malignant (ganas).
Berikut adalah algoritma untuk menyelesaiankan batasan masalah:
1. Mulai.
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
## Loading required package: ggplot2
## Loading required package: lattice
## 'data.frame': 322 obs. of 20 variables:
## $ AtBat : int 293 315 479 496 321 594 185 298 323 401 ...
## $ Hits : int 66 81 130 141 87 169 37 73 81 92 ...
## $ HmRun : int 1 7 18 20 10 4 1 0 6 17 ...
## $ Runs : int 30 24 66 65 39 74 23 24 26 49 ...
## $ RBI : int 29 38 72 78 42 51 8 24 32 66 ...
## $ Walks : int 14 39 76 37 30 35 21 7 8 65 ...
## $ Years : int 1 14 3 11 2 11 2 3 2 13 ...
## $ CAtBat : int 293 3449 1624 5628 396 4408 214 509 341 5206 ...
## $ CHits : int 66 835 457 1575 101 1133 42 108 86 1332 ...
## $ CHmRun : int 1 69 63 225 12 19 1 0 6 253 ...
## $ CRuns : int 30 321 224 828 48 501 30 41 32 784 ...
## $ CRBI : int 29 414 266 838 46 336 9 37 34 890 ...
## $ CWalks : int 14 375 263 354 33 194 24 12 8 866 ...
## $ League : Factor w/ 2 levels "A","N": 1 2 1 2 2 1 2 1 2 1 ...
## $ Division : Factor w/ 2 levels "E","W": 1 2 2 1 1 2 1 2 2 1 ...
## $ PutOuts : int 446 632 880 200 805 282 76 121 143 0 ...
## $ Assists : int 33 43 82 11 40 421 127 283 290 0 ...
## $ Errors : int 20 10 14 3 4 25 7 9 19 0 ...
## $ Salary : num NA 475 480 500 91.5 750 70 100 75 1100 ...
## $ NewLeague: Factor w/ 2 levels "A","N": 1 2 1 2 2 1 1 1 2 1 ...
## AtBat Hits HmRun Runs RBI Walks Years CAtBat CHits CHmRun
## -Andy Allanson 293 66 1 30 29 14 1 293 66 1
## -Alan Ashby 315 81 7 24 38 39 14 3449 835 69
## -Alvin Davis 479 130 18 66 72 76 3 1624 457 63
## -Andre Dawson 496 141 20 65 78 37 11 5628 1575 225
## -Andres Galarraga 321 87 10 39 42 30 2 396 101 12
## -Alfredo Griffin 594 169 4 74 51 35 11 4408 1133 19
## CRuns CRBI CWalks League Division PutOuts Assists Errors
## -Andy Allanson 30 29 14 A E 446 33 20
## -Alan Ashby 321 414 375 N W 632 43 10
## -Alvin Davis 224 266 263 A W 880 82 14
## -Andre Dawson 828 838 354 N E 200 11 3
## -Andres Galarraga 48 46 33 N E 805 40 4
## -Alfredo Griffin 501 336 194 A W 282 421 25
## Salary NewLeague
## -Andy Allanson NA A
## -Alan Ashby 475.0 N
## -Alvin Davis 480.0 A
## -Andre Dawson 500.0 N
## -Andres Galarraga 91.5 N
## -Alfredo Griffin 750.0 A
## [1] 322 20
## AtBat Hits HmRun Runs RBI Walks Years CAtBat
## 0 0 0 0 0 0 0 0
## CHits CHmRun CRuns CRBI CWalks League Division PutOuts
## 0 0 0 0 0 0 0 0
## Assists Errors Salary NewLeague
## 0 0 59 0
Berdasarkan tampilan awal dataset Hitters, data memuat informasi mengenai performa dan pengalaman setiap pemain bisbol, yang disajikan dalam bentuk baris dan kolom. Variabel yang tersedia meliputi AtBat, Hits, HmRun, Runs, RBI, Walks, dan Years, yang masing-masing menggambarkan aspek permainan serta pengalaman pemain. Perbedaan nilai pada variabel-variabel tersebut memperlihatkan bahwa setiap pemain memiliki karakteristik yang beragam. Dalam analisis ini, variabel Salary digunakan sebagai target prediksi, sedangkan variabel lainnya berfungsi sebagai prediktor dalam pembentukan model Regression Tree. Sebelum model dibangun, kelengkapan data diperiksa terlebih dahulu dan observasi yang mengandung nilai hilang dihapus menggunakan fungsi na.omit() agar proses analisis menggunakan data yang lengkap.
# Menghapus baris yang memiliki missing value
Hitters.clean <- na.omit(Hitters)
# Memeriksa kembali missing value
colSums(is.na(Hitters.clean))## AtBat Hits HmRun Runs RBI Walks Years CAtBat
## 0 0 0 0 0 0 0 0
## CHits CHmRun CRuns CRBI CWalks League Division PutOuts
## 0 0 0 0 0 0 0 0
## Assists Errors Salary NewLeague
## 0 0 0 0
## [1] 263 20
Hasil pengolahan dataset Hitters menunjukkan bahwa data telah melalui proses pembersihan menggunakan fungsi na.omit(), sehingga observasi yang mengandung nilai hilang tidak disertakan dalam analisis. Dataset yang digunakan memiliki ukuran 263 × 20, yaitu 263 observasi pemain bisbol dengan 20 variabel yang merepresentasikan karakteristik masing-masing pemain. Pada pemodelan ini, Salary ditetapkan sebagai variabel yang akan diprediksi, sementara 19 variabel lainnya digunakan sebagai faktor penjelas. Data tersebut kemudian dianalisis menggunakan metode Regression Tree untuk membentuk model prediksi gaji pemain bisbol berdasarkan karakteristik yang tersedia.
set.seed(234)
# Membagi data: 70% training dan 30% testing
indeks.train <- createDataPartition(
Hitters.clean$Salary,
p = 0.7,
list = FALSE
)
Hitters.train <- Hitters.clean[indeks.train, ]
Hitters.test <- Hitters.clean[-indeks.train, ]
# Memeriksa ukuran masing-masing data
nrow(Hitters.train)## [1] 185
## [1] 78
Proses pemisahan dataset menggunakan fungsi createDataPartition() menghasilkan 185 observasi untuk data training dan 78 observasi untuk data testing dari keseluruhan 263 pemain bisbol. Data training mencakup sekitar 70,34% dari total pengamatan dan dimanfaatkan untuk membentuk model Regression Tree dengan Salary sebagai variabel yang diprediksi. Sementara itu, 29,66% data testing digunakan untuk mengukur kemampuan model dalam menghasilkan prediksi pada observasi yang tidak dilibatkan dalam pembentukan model. Pembagian ini memungkinkan evaluasi kinerja model dilakukan secara terpisah dari proses pelatihan.
fit.tree <- rpart(
Salary ~ .,
data = Hitters.train,
method = "anova",
control = rpart.control(cp = 0.001)
)
# Menampilkan ringkasan model
print(fit.tree)## n= 185
##
## node), split, n, deviance, yval
## * denotes terminal node
##
## 1) root 185 37300170.00 529.3190
## 2) CRBI< 300.5 107 7781241.00 296.1480
## 4) CAtBat< 1447 71 4787307.00 205.7113
## 8) RBI>=16 64 451745.40 169.8464
## 16) CRuns< 101.5 37 43273.30 114.7297 *
## 17) CRuns>=101.5 27 142042.10 245.3766
## 34) Years< 3.5 10 6090.00 186.0000 *
## 35) Years>=3.5 17 79957.63 280.3039 *
## 9) RBI< 16 7 3500575.00 533.6190 *
## 5) CAtBat>=1447 36 1267980.00 474.5093
## 10) Walks< 60.5 27 759116.70 418.9753
## 20) Division=W 14 300819.20 361.2381 *
## 21) Division=E 13 361367.20 481.1538 *
## 11) Walks>=60.5 9 175788.90 641.1111 *
## 3) CRBI>=300.5 78 15721120.00 849.1817
## 6) Hits< 122.5 32 1830184.00 593.1771
## 12) HmRun< 7.5 16 724360.00 484.0104 *
## 13) HmRun>=7.5 16 724468.40 702.3438 *
## 7) Hits>=122.5 46 10334770.00 1027.2720
## 14) CHmRun< 256.5 39 5352320.00 917.2857
## 28) Years>=9.5 23 1423979.00 753.5352
## 56) CRuns< 751.5 13 361905.40 629.9725 *
## 57) CRuns>=751.5 10 605568.10 914.1667 *
## 29) Years< 9.5 16 2425068.00 1152.6770 *
## 15) CHmRun>=256.5 7 1882174.00 1640.0520 *
Berdasarkan output print(fit.tree), model Regression Tree dibangun menggunakan 185 observasi pemain bisbol pada data training. Pembagian awal pohon menggunakan variabel CRBI dengan titik pemisah 300,5, yang menghasilkan rata-rata gaji sebesar 296,148 untuk kelompok dengan CRBI di bawah 300,5 dan 849,182 untuk kelompok dengan CRBI minimal 300,5. Proses pemisahan berlanjut menggunakan variabel lain, seperti CAtBat, Hits, RBI, Years, dan CHmRun, untuk membentuk kelompok pemain berdasarkan karakteristik yang berkaitan dengan gaji. Pada output tersebut, yval menunjukkan nilai prediksi gaji pada setiap node, n menyatakan jumlah observasi, sedangkan deviance menggambarkan tingkat variasi nilai respons dalam kelompok. Simbol * menandai node terminal yang tidak mengalami pemisahan lebih lanjut, dengan prediksi gaji tertinggi sebesar 1.640,052. Tahap berikutnya adalah melakukan pruning untuk menyederhanakan struktur pohon dan mengevaluasi kemampuan model dalam memprediksi gaji pemain bisbol.
BBerdasarkan visualisasi pohon regresi, CRBI menjadi variabel utama yang menentukan pemisahan awal data pemain bisbol dalam memprediksi Salary. Sekitar 58% pemain memiliki CRBI di bawah 301 dengan prediksi gaji rata-rata sebesar 296, sedangkan 42% pemain lainnya memiliki CRBI minimal 301 dengan prediksi rata-rata sebesar 849. Pembentukan cabang berikutnya melibatkan variabel CAtBat, Hits, RBI, Walks, HmRun, dan CHmRun untuk menghasilkan kelompok pemain dengan estimasi gaji yang beragam. Prediksi gaji tertinggi, yaitu 1.640, diperoleh pada kelompok pemain dengan CRBI minimal 301, Hits minimal 123, dan CHmRun minimal 257. Sebaliknya, prediksi terendah sebesar 115 terdapat pada kelompok dengan CRBI di bawah 301, CAtBat di bawah 1.447, RBI minimal 16, dan CRuns di bawah 102. Hal ini menunjukkan bahwa kombinasi statistik performa dan pengalaman pemain menjadi dasar pembentukan kelompok dengan prediksi gaji yang berbeda.
## CRBI CRuns CHits CAtBat Years CWalks
## 18006203.09 16275302.12 15846822.12 15773269.72 12575599.24 11352010.78
## Hits CHmRun AtBat Runs RBI Walks
## 3995824.17 3746799.11 3626215.94 3249147.01 3101676.38 2436801.19
## HmRun PutOuts Division
## 1520655.45 553921.48 96930.34
# Mengubah variable importance menjadi data frame
importance.df <- data.frame(
Variabel = names(importance.tree),
Importance = as.numeric(importance.tree)
) %>%
arrange(desc(Importance))
print(importance.df)## Variabel Importance
## 1 CRBI 18006203.09
## 2 CRuns 16275302.12
## 3 CHits 15846822.12
## 4 CAtBat 15773269.72
## 5 Years 12575599.24
## 6 CWalks 11352010.78
## 7 Hits 3995824.17
## 8 CHmRun 3746799.11
## 9 AtBat 3626215.94
## 10 Runs 3249147.01
## 11 RBI 3101676.38
## 12 Walks 2436801.19
## 13 HmRun 1520655.45
## 14 PutOuts 553921.48
## 15 Division 96930.34
# Visualisasi variable importance
ggplot(
importance.df,
aes(
x = reorder(Variabel, Importance),
y = Importance
)
) +
geom_col(fill = "pink") +
coord_flip() +
theme_minimal() +
labs(
title = "Variable Importance Regression Tree",
x = "Variabel Prediktor",
y = "Tingkat Kepentingan"
)Grafik Variable Importance Regression Tree memperlihatkan bahwa CRBI menjadi variabel dengan kontribusi terbesar dalam memperkirakan Salary, disusul oleh CRuns, CHits, dan CAtBat. Selain itu, Years dan CWalks turut memberikan pengaruh yang relatif besar, sedangkan Division memiliki kontribusi paling kecil. Hal ini mengindikasikan bahwa catatan performa pemain yang terakumulasi selama kariernya, seperti RBI, run, hit, dan jumlah at-bat, menjadi faktor penting dalam estimasi gaji. Variabel dengan nilai kepentingan lebih tinggi memiliki peranan yang lebih besar dalam menentukan pembentukan cabang dan hasil prediksi pada model pohon regresi.
Berdasarkan hasil pengujian, model Regression Tree sebelum dilakukan pruning menghasilkan nilai Mean Squared Error (MSE) sebesar 80.020,62. Nilai ini menggambarkan rata-rata kuadrat perbedaan antara gaji sebenarnya dan gaji yang diperkirakan oleh model. MSE tersebut selanjutnya dijadikan tolok ukur untuk membandingkan kinerja model sebelum dan sesudah proses pruning. Semakin rendah nilai MSE yang diperoleh, semakin akurat prediksi model dalam memperkirakan gaji pemain.
##
## Regression tree:
## rpart(formula = Salary ~ ., data = Hitters.train, method = "anova",
## control = rpart.control(cp = 0.001))
##
## Variables actually used in tree construction:
## [1] CAtBat CHmRun CRBI CRuns Division Hits HmRun RBI
## [9] Walks Years
##
## Root node error: 37300166/185 = 201623
##
## n= 185
##
## CP nsplit rel error xerror xstd
## 1 0.3699126 0 1.00000 1.01127 0.16904
## 2 0.0953392 1 0.63009 0.69445 0.14286
## 3 0.0831170 2 0.53475 0.73597 0.13762
## 4 0.0462720 3 0.45163 0.69821 0.13559
## 5 0.0403020 4 0.40536 0.66768 0.13365
## 6 0.0223856 5 0.36506 0.58019 0.12556
## 7 0.0122387 6 0.34267 0.59338 0.12585
## 8 0.0102240 7 0.33043 0.58679 0.12543
## 9 0.0089296 8 0.32021 0.59549 0.12777
## 10 0.0071429 9 0.31128 0.59159 0.12783
## 11 0.0025987 10 0.30414 0.58683 0.12819
## 12 0.0015012 11 0.30154 0.60006 0.13284
## 13 0.0010000 12 0.30004 0.60041 0.13284
# Menentukan CP dengan nilai xerror terkecil
bestcp <- fit.tree$cptable[
which.min(fit.tree$cptable[, "xerror"]),
"CP"
]
cat("CP terbaik:", bestcp, "\n")## CP terbaik: 0.02238561
Grafik Complexity Parameter (CP) menunjukkan bahwa nilai cross-validation error menurun ketika jumlah cabang pohon bertambah, sebelum akhirnya cenderung konstan. Kesalahan validasi terkecil terlihat pada pohon dengan ukuran sekitar 6–11. Parameter CP yang optimal dipilih berdasarkan nilai xerror minimum pada output printcp(fit.tree). Parameter tersebut selanjutnya diterapkan dalam proses pruning untuk mengurangi kompleksitas pohon regresi sekaligus menjaga kemampuan model dalam melakukan prediksi. Kinerja pohon yang telah disederhanakan kemudian dibandingkan dengan model awal melalui perhitungan MSE guna mengetahui perubahan tingkat kesalahan prediksinya.
pruned.tree <- prune(
fit.tree,
cp = bestcp
)
# Menampilkan model setelah pruning
print(pruned.tree)## n= 185
##
## node), split, n, deviance, yval
## * denotes terminal node
##
## 1) root 185 37300170 529.3190
## 2) CRBI< 300.5 107 7781241 296.1480
## 4) CAtBat< 1447 71 4787307 205.7113 *
## 5) CAtBat>=1447 36 1267980 474.5093 *
## 3) CRBI>=300.5 78 15721120 849.1817
## 6) Hits< 122.5 32 1830184 593.1771 *
## 7) Hits>=122.5 46 10334770 1027.2720
## 14) CHmRun< 256.5 39 5352320 917.2857
## 28) Years>=9.5 23 1423979 753.5352 *
## 29) Years< 9.5 16 2425068 1152.6770 *
## 15) CHmRun>=256.5 7 1882174 1640.0520 *
# Visualisasi pohon setelah pruning
rpart.plot(
pruned.tree,
type = 2,
extra = 101,
fallen.leaves = TRUE,
main = "Regression Tree Setelah Pruning"
)
# Intepretasi Hasil 4.9 Visualisasi Regression Tree setelah proses
pruning memperlihatkan struktur pohon yang lebih ringkas akibat
pengurangan beberapa cabang. Variabel CRBI tetap menjadi pemisah utama
dengan nilai batas 301. Pemain yang memiliki CRBI di bawah 301
memperoleh prediksi gaji rata-rata sebesar 296, sedangkan pemain dengan
CRBI sebesar 301 atau lebih memiliki prediksi rata-rata sebesar 849.
Pada percabangan berikutnya, model menggunakan variabel CAtBat, Hits,
CHmRun, dan Years untuk membentuk kelompok pemain berdasarkan
karakteristiknya. Estimasi gaji tertinggi, yaitu 1.640, diperoleh pada
pemain dengan CRBI minimal 301, Hits minimal 123, dan CHmRun minimal
257. Sebaliknya, prediksi gaji terendah sebesar 206 ditemukan pada
kelompok pemain dengan CRBI di bawah 301 dan CAtBat kurang dari 1.447.
Secara keseluruhan, pruning menyederhanakan struktur pohon sehingga
lebih mudah dipahami, sedangkan efektivitas prediksinya perlu ditinjau
melalui perbandingan nilai MSE sebelum dan sesudah proses tersebut.
Evaluasi model menunjukkan bahwa nilai MSE setelah proses pruning sebesar 75.515,11. Nilai tersebut lebih kecil dibandingkan MSE model awal yang mencapai 80.020,62. Hal ini menunjukkan bahwa proses pruning mampu meningkatkan ketepatan prediksi model Regression Tree dengan mengurangi tingkat kesalahan prediksi.
Berdasarkan hasil perbandingan, model Regression Tree sebelum pruning menghasilkan nilai MSE sebesar 80.020,62, sementara model setelah pruning memiliki nilai MSE sebesar 75.515,11. Selisih sebesar 4.505,51 menunjukkan adanya penurunan kesalahan prediksi setelah penyederhanaan struktur pohon dilakukan. Oleh karena itu, model Regression Tree hasil pruning memberikan kinerja prediksi yang lebih baik pada data pengujian karena menghasilkan nilai MSE yang lebih rendah dibandingkan model awal.
Konsep dasar Decision Tree menggunakan metode CART adalah membentuk struktur pohon keputusan dengan membagi data secara bertahap menjadi dua kelompok pada setiap pemisahan (binary split). Proses pemisahan dilakukan berdasarkan variabel prediktor yang mampu menghasilkan kelompok data paling homogen, dengan menggunakan indeks Gini sebagai kriteria pemisahan pada klasifikasi. Struktur pohon terdiri atas simpul akar (root node), simpul keputusan (internal node), cabang (branch), dan simpul akhir (leaf node) yang menghasilkan prediksi kelas berdasarkan karakteristik data.
Model Classification Tree menggunakan algoritma CART dibangun melalui beberapa tahapan, yaitu menyiapkan dan melakukan prapemrosesan data, menentukan variabel prediktor dan variabel respons, serta membagi data menjadi data latih (training data) dan data uji (testing data). Selanjutnya, algoritma CART membentuk pohon dengan memilih pemisahan terbaik berdasarkan indeks Gini hingga memenuhi kriteria penghentian, kemudian melakukan pemangkasan (pruning) apabila diperlukan untuk mengurangi kompleksitas model. Tahap terakhir adalah mengevaluasi kinerja model menggunakan data uji melalui confusion matrix dan metrik klasifikasi, seperti akurasi, presisi, sensitivitas, dan F1-score.
Berdasarkan analisis yang telah dilakukan, metode Regression Tree mampu memperkirakan gaji pemain bisbol dengan memanfaatkan variabel statistik dan rekam jejak performa pemain selama kariernya. CRBI merupakan variabel dengan tingkat kepentingan tertinggi dalam membentuk pohon regresi, kemudian disusul oleh CRuns, CHits, dan CAtBat. Penerapan pruning berhasil mengurangi kompleksitas pohon sehingga model menjadi lebih ringkas dan mudah dipahami. Perbaikan ini juga ditunjukkan oleh penurunan nilai MSE dari 80.020,62 menjadi 75.515,11. Dengan demikian, model setelah pruning menghasilkan kesalahan prediksi yang lebih kecil dan menunjukkan kinerja yang lebih baik dalam memperkirakan gaji pemain berdasarkan data pengujian.
Elwahdiyah, A., & Hartono. (2025). Jenis Data dan Skala Pengukuran: Mengenal Klasifikasi Data, Skala Pengukuran dan Implikasinya dalam Analisis. Jurnal Ilmiah PGSD FKIP Universitas Mandiri, 11(4), 223-238.
Fransiska, H. (2026). Modul praktikum machine learning and modern prediction. Universitas Bengkulu.
Prabawati, N. I., Widodo, & Ajie, H. (2019). Kinerja algoritma Classification and Regression Tree (CART) dalam mengklasifikasikan lama masa studi mahasiswa yang mengikuti organisasi di Universitas Negeri Jakarta. Jurnal Pendidikan Teknik Informatika dan Komputer, 3(2).
Pratiwi, R., Hayati, N., & Prangga, S. (2020). Perbandingan klasifikasi algoritma C5.0 dengan Classification and Regression Tree (studi kasus: Data sosial kepala keluarga masyarakat Desa Teluk Baru Kecamatan Muara Ancalong tahun 2019). Jurnal Ilmu Matematika dan Terapan, 14(2), 267–278.
Samiudin. (2018). Cara Mudah Menyusun Proposal Skripsi untuk Penelitian Kualitatif. Jurnal studi Islam, 13(2), 12-27.