Machine learning merupakan bidang yang memungkinkan komputer mempelajari pola dari data untuk menghasilkan prediksi atau keputusan berdasarkan informasi yang tersedia. Pendekatan ini banyak digunakan dalam analisis data karena mampu membangun model berdasarkan data yang telah diamati dan menerapkannya untuk memperkirakan hasil pada data baru. Alpaydın (2020) menjelaskan bahwa machine learning berkaitan dengan pengembangan algoritma yang memungkinkan komputer memanfaatkan data atau pengalaman sebelumnya untuk menyelesaikan suatu permasalahan. Salah satu pendekatan dalam machine learning adalah supervised learning, yaitu proses pembelajaran menggunakan data yang memiliki variabel prediktor dan variabel respons. Melalui pendekatan tersebut, model dapat mempelajari hubungan antara variabel prediktor dan variabel respons untuk menghasilkan prediksi pada pengamatan baru.
Salah satu metode dalam supervised learning adalah Classification and Regression Tree (CART), yaitu metode yang membentuk model prediksi melalui pembagian data secara bertahap berdasarkan variabel prediktor. CART mencakup dua jenis pemodelan, yaitu Classification Tree untuk memprediksi variabel respons kategorik dan Regression Tree untuk memprediksi variabel respons numerik. Abedinia dan Seydi (2024) menjelaskan bahwa pohon keputusan merupakan metode pembelajaran statistik yang dapat digunakan untuk permasalahan klasifikasi dan regresi melalui proses pembagian data secara rekursif. Struktur pohon yang dihasilkan memungkinkan aturan prediksi disajikan secara sistematis sehingga lebih mudah dipahami dan diinterpretasikan. Selain itu, kompleksitas pohon dapat dikendalikan melalui proses pruning atau pemangkasan cabang. Chew et al. (2025) membahas penerapan strategi pruning untuk menyederhanakan struktur pohon keputusan sekaligus mempertahankan kinerja model. Dengan demikian, CART dapat digunakan untuk membangun model prediksi yang memiliki struktur interpretatif dan dapat disesuaikan kompleksitasnya berdasarkan kebutuhan analisis.
Oleh karena itu, pemahaman mengenai konsep machine learning dan metode CART diperlukan sebagai dasar untuk memahami proses pembentukan model prediksi berbasis pohon keputusan. Pemahaman tersebut mencakup prinsip pembagian data, pembentukan struktur pohon, serta perbedaan penggunaan Classification Tree dan Regression Tree berdasarkan jenis variabel respons. Selain itu, pemahaman mengenai kompleksitas model dan proses pruning diperlukan agar struktur pohon yang terbentuk dapat diinterpretasikan dengan baik. Penguasaan konsep dasar tersebut diharapkan dapat membantu mahasiswa memahami prinsip kerja metode Decision Tree dan penerapannya dalam analisis data.
Machine learning merupakan pendekatan dalam ilmu komputer yang memungkinkan sistem mempelajari pola dan hubungan dari data untuk menghasilkan prediksi atau keputusan. Proses pembelajaran dilakukan dengan membangun model berdasarkan data yang tersedia, sehingga model tersebut dapat digunakan untuk menganalisis pengamatan baru. Kemampuan model dalam menghasilkan prediksi dipengaruhi oleh karakteristik data, pemilihan metode, serta proses evaluasi yang dilakukan.
Salah satu pendekatan dalam machine learning adalah supervised learning, yaitu pembelajaran menggunakan data yang memiliki variabel prediktor dan variabel respons. Variabel prediktor digunakan sebagai dasar untuk memperkirakan nilai variabel respons. Berdasarkan jenis variabel responsnya, supervised learning dibedakan menjadi klasifikasi dan regresi. Klasifikasi digunakan ketika variabel respons berbentuk kategori, sedangkan regresi digunakan ketika variabel respons berbentuk numerik.
Salah satu metode supervised learning adalah Decision Tree. Metode ini membentuk model prediksi melalui serangkaian aturan pemisahan data berdasarkan variabel prediktor. Hasil pemodelannya berupa struktur pohon yang menunjukkan proses pengambilan keputusan dari simpul awal hingga simpul akhir. Decision Tree dapat digunakan untuk klasifikasi maupun regresi, serta memiliki kelebihan berupa struktur model yang relatif mudah dipahami dan diinterpretasikan. Oleh karena itu, metode ini dapat digunakan untuk mempelajari hubungan antara variabel prediktor dan variabel respons dalam suatu data (Fransiska, 2026).
Decision Tree merupakan metode pemodelan yang merepresentasikan aturan pengambilan keputusan dalam bentuk struktur menyerupai pohon. Struktur tersebut terdiri atas beberapa komponen, yaitu root node sebagai simpul awal yang memuat seluruh pengamatan, intermediate node sebagai simpul yang membagi pengamatan berdasarkan kriteria tertentu, branch sebagai cabang yang menghubungkan simpul, serta leaf node sebagai simpul akhir yang menghasilkan prediksi. Pembentukan pohon dilakukan melalui pemisahan data secara bertahap hingga diperoleh kelompok pengamatan yang sesuai dengan tujuan pemodelan (Fransiska, 2026).
Salah satu algoritma yang digunakan untuk membentuk Decision Tree adalah Classification and Regression Tree (CART). Algoritma ini dapat digunakan untuk dua jenis pemodelan, yaitu Classification Tree dan Regression Tree. Classification Tree digunakan ketika variabel respons bersifat kategorik, sedangkan Regression Tree digunakan ketika variabel respons bersifat numerik. CART membentuk pohon melalui proses pemisahan biner (binary splitting), yaitu membagi setiap simpul menjadi dua kelompok berdasarkan kriteria pemisahan tertentu. Pemisahan dilakukan secara berulang untuk memperoleh kelompok yang sesuai dengan karakteristik variabel respons (Sinambela, 2008).
Pada Classification Tree, pemilihan pemisahan dapat didasarkan pada ukuran ketidakmurnian kelas, seperti Gini Index. Sementara itu, pada Regression Tree, pemisahan dilakukan untuk memperoleh kelompok dengan nilai respons yang relatif homogen. Prediksi pada setiap simpul akhir umumnya berupa rata-rata nilai respons pengamatan yang berada dalam simpul tersebut. Pendekatan pohon regresi dapat digunakan untuk mempelajari pola hubungan antara variabel respons numerik dan variabel prediktor (Luqman dkk., 2015; Nopianti dkk., 2022).
Kinerja model regresi dapat dievaluasi menggunakan Mean Squared Error (MSE), yaitu rata-rata kuadrat selisih antara nilai aktual dan nilai prediksi. MSE dirumuskan sebagai berikut.
\[ MSE=\frac{1}{n}\sum_{i=1}^{n}(y_i-\hat{y}_i)^2 \] dengan \(n\) merupakan jumlah pengamatan, \(y_i\) merupakan nilai aktual, dan \(\hat{y}_i\) merupakan nilai prediksi. Nilai MSE yang lebih kecil menunjukkan tingkat kesalahan prediksi yang lebih rendah pada data evaluasi.
Kompleksitas pohon juga menjadi aspek penting dalam pembentukan
model. Pohon yang terlalu sederhana berpotensi tidak mampu menangkap
pola data dengan baik, sedangkan pohon yang terlalu kompleks dapat
mengalami overfitting. Kondisi tersebut terjadi ketika model
terlalu menyesuaikan diri dengan data pelatihan sehingga kemampuan
prediksinya pada data baru dapat menurun. Salah satu cara untuk
mengendalikan kompleksitas pohon adalah pruning atau
pemangkasan cabang. Dalam implementasi CART menggunakan paket
rpart pada R, kompleksitas pohon dapat dikendalikan melalui
complexity parameter (CP). Pemilihan CP dapat mempertimbangkan
kesalahan validasi silang (cross-validation error) untuk
memperoleh struktur pohon yang lebih sederhana tanpa mengabaikan
kemampuan prediksinya (Fransiska, 2026).
Secara umum, pemodelan Regression Tree dilakukan melalui beberapa tahapan berikut.
Persiapan data Data diperiksa untuk mengetahui kelengkapan, tipe variabel, dan kesesuaian variabel prediktor serta variabel respons. Tahap ini bertujuan memastikan data yang digunakan sesuai dengan kebutuhan pemodelan.
Pembagian data Data dibagi menjadi data training dan testing. Data training digunakan untuk membentuk model, sedangkan data testing digunakan untuk mengukur kemampuan model dalam memprediksi pengamatan yang tidak digunakan selama pelatihan.
Pembentukan model Model Regression Tree dibangun dengan membagi data secara bertahap berdasarkan variabel prediktor. Proses pemisahan bertujuan membentuk kelompok pengamatan dengan nilai respons yang relatif homogen, sehingga prediksi pada setiap simpul akhir dapat merepresentasikan kelompok tersebut.
Visualisasi dan identifikasi kepentingan variabel Struktur pohon divisualisasikan untuk memperlihatkan aturan pemisahan dan hasil prediksi pada setiap simpul. Selain itu, variable importance digunakan untuk menggambarkan kontribusi relatif variabel prediktor dalam pembentukan model.
Evaluasi model Kemampuan prediksi model dievaluasi menggunakan data testing. Salah satu ukuran yang dapat digunakan adalah MSE, yang menunjukkan rata-rata kuadrat selisih antara nilai aktual dan nilai prediksi. Semakin kecil nilai MSE, semakin rendah kesalahan prediksi pada data yang dievaluasi.
Pemangkasan pohon (pruning) Pemangkasan dilakukan untuk
mengendalikan kompleksitas pohon dan mengurangi risiko
overfitting. Pada paket rpart, nilai CP dapat
dipilih dengan mempertimbangkan tabel kompleksitas dan nilai kesalahan
validasi silang.
Evaluasi setelah pemangkasan Model hasil pruning dievaluasi kembali menggunakan data pengujian dan ukuran evaluasi yang sama. Perbandingan hasil sebelum dan sesudah pemangkasan dapat digunakan untuk menilai perubahan kesalahan prediksi serta menentukan apakah struktur pohon yang lebih sederhana memberikan kinerja yang lebih baik (Fransiska, 2026).
Data yang digunakan dalam praktikum ini merupakan data kuantitatif
yang bersumber dari dataset sekunder Hitters dalam paket
ISLR pada perangkat lunak R. Dataset tersebut berisi
informasi mengenai pemain bisbol, termasuk karakteristik dan statistik
permainan serta gaji yang diterima. Dataset ini digunakan untuk
membangun model Decision Tree dengan pendekatan Regression
Tree guna memprediksi gaji pemain bisbol berdasarkan variabel
prediktor yang tersedia. Sebelum pemodelan dilakukan, data diperiksa
untuk mengetahui keberadaan nilai hilang (missing value) dan
ditangani menggunakan fungsi na.omit().
Variabel penelitian terdiri atas variabel respons dan variabel
prediktor. Variabel respons yang digunakan adalah Salary,
yaitu gaji pemain bisbol dalam satuan ribuan dolar Amerika Serikat.
Variabel Salary merupakan variabel kuantitatif sehingga
sesuai untuk pemodelan regresi.
Variabel prediktor merupakan variabel lain dalam dataset
Hitters yang digunakan untuk memprediksi
Salary, seperti pengalaman bermain, jumlah pertandingan,
serta statistik pukulan dan pertahanan pemain. Variabel-variabel
tersebut digunakan sebagai dasar pembentukan pohon regresi untuk
mengidentifikasi pola hubungan antara karakteristik pemain dan gaji yang
diterima.
Langkah-langkah analisis yang dilakukan dalam praktikum Decision Tree menggunakan Regression Tree adalah sebagai berikut.
ISLR dan memuat dataset
Hitters ke dalam R.na.omit().Salary sebagai variabel respons dan variabel
lainnya sebagai variabel prediktor.Salary pada data
testing menggunakan model yang telah dibangun.Batasan masalah diminta untuk memprediksi variabel Salary
menggunakan algoritma Decision Tree (Regression Tree)
pada dataset Hitters dari package ISLR.
Tahapan yang diminta meliputi pengecekan dan penanganan missing
value menggunakan na.omit(), pembagian data menjadi
training dan testing, pembentukan dan visualisasi
tree, analisis variable importance, prediksi dan
evaluasi menggunakan Mean Squared Error (MSE), penentuan nilai
Complexity Parameter (CP) terbaik, pruning, serta
evaluasi kembali model menggunakan MSE.
Tahap awal dilakukan dengan memanggil library yang
diperlukan dan memuat dataset Hitters dari package
ISLR. Dataset tersebut berisi informasi pemain bisbol yang
mencakup statistik permainan, pengalaman bermain, liga dan divisi tempat
pemain bertanding, serta gaji pemain (Salary). Variabel
Salary digunakan sebagai variabel respons yang akan
diprediksi, sedangkan variabel lainnya digunakan sebagai prediktor.
Sintaks yang digunakan adalah sebagai berikut.
##
## 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: lattice
library(rpart)
library(rpart.plot)
library(tibble)
library(forcats)
# Data
data(Hitters)
str(Hitters)## '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 ...
## [1] 322 20
Fungsi library() digunakan untuk memanggil
library yang diperlukan, sedangkan data()
digunakan untuk memuat dataset. Fungsi str() digunakan
untuk mengetahui struktur data, termasuk jumlah observasi, jumlah
variabel, dan tipe data, sementara dim() digunakan untuk
melihat dimensi dataset.
Berdasarkan hasil str(Hitters) dan
dim(Hitters), dataset terdiri atas 322 observasi dan 20
variabel. Variabel yang tersedia mencakup statistik permainan musim
berjalan, yaitu AtBat, Hits,
HmRun, Runs, RBI, dan
Walks. Selain itu terdapat pengalaman dan akumulasi
statistik karier, yaitu Years, CAtBat,
CHits, CHmRun, CRuns,
CRBI, dan CWalks. Variabel lainnya adalah
PutOuts, Assists, Errors,
Salary, serta tiga variabel kategorik berupa faktor dua
level, yaitu League (A/N), Division (E/W), dan
NewLeague (A/N).
Variabel Salary bertipe numerik sehingga dapat digunakan
sebagai variabel respons dalam pemodelan Regression Tree.
Berbeda dengan Classification Tree yang memprediksi kelas,
Regression Tree digunakan untuk memprediksi nilai numerik. Oleh
karena itu, pembentukan model dilakukan menggunakan
method = "anova" pada fungsi rpart().
Hasil pemeriksaan awal juga menunjukkan bahwa variabel
Salary memiliki nilai yang hilang (NA).
Kondisi tersebut perlu ditangani sebelum pembagian data dan pemodelan
dilakukan.
Missing value merupakan kondisi ketika suatu observasi tidak memiliki nilai pada variabel tertentu. Pemeriksaan dilakukan untuk mengetahui jumlah data yang hilang pada setiap variabel.
Sintaks yang digunakan adalah sebagai berikut.
## 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
## [1] 263 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 0 0
Fungsi is.na() digunakan untuk mengidentifikasi nilai
yang hilang, sedangkan colSums() digunakan untuk menghitung
jumlah missing value pada setiap variabel. Selanjutnya, fungsi
na.omit() digunakan untuk menghapus observasi yang memiliki
setidaknya satu nilai hilang.
Berdasarkan hasil pemeriksaan awal, terdapat 59 missing
value pada variabel Salary, sedangkan 19 variabel
lainnya tidak memiliki nilai hilang. Setelah dilakukan penanganan
menggunakan na.omit(), jumlah observasi berkurang dari 322
menjadi 263 observasi dengan 20 variabel.
Hasil pemeriksaan kembali menunjukkan bahwa seluruh variabel sudah
tidak memiliki missing value. Penghapusan observasi dipilih
karena nilai Salary yang hilang merupakan nilai respons,
sehingga observasi tersebut tidak dapat digunakan untuk melatih maupun
mengevaluasi model regresi.
Splitting data merupakan proses membagi dataset menjadi data training dan data testing. Data training digunakan untuk membentuk model, sedangkan data testing digunakan untuk mengevaluasi kemampuan model pada data yang tidak digunakan selama proses pelatihan.
Dataset dibagi dengan proporsi 70% untuk data training dan
30% untuk data testing menggunakan fungsi
createDataPartition().
Sintaks yang digunakan adalah sebagai berikut.
# Data Training dan Testing
set.seed(234)
train <- createDataPartition(
y = Hitters_clean$Salary,
p = 0.7,
list = FALSE
)
Hitters.train <- Hitters_clean[train, ]
Hitters.test <- Hitters_clean[-train, ]
dim(Hitters.train)## [1] 185 20
## [1] 78 20
Fungsi set.seed(234) digunakan agar pembagian data dapat
direproduksi ketika sintaks dijalankan kembali. Argumen
p = 0.7 menunjukkan proporsi data training,
sedangkan sisa observasi digunakan sebagai data testing. Karena
createDataPartition() menerima variabel respons, pembagian
dilakukan dengan mempertahankan sebaran nilai Salary pada
kedua bagian data.
Hasil pembagian menunjukkan bahwa data training terdiri atas 185 observasi dan 20 variabel, sedangkan data testing terdiri atas 78 observasi dan 20 variabel. Data training digunakan untuk membangun Regression Tree, sementara data testing digunakan untuk menghitung MSE.
Regression Tree merupakan metode pemodelan yang membagi data ke dalam sejumlah kelompok berdasarkan nilai prediktor, sehingga setiap kelompok memiliki nilai respons yang relatif serupa. Pada setiap simpul terminal, prediksi berupa rata-rata nilai respons dari observasi pada simpul tersebut.
Pembentukan model dilakukan menggunakan fungsi rpart()
dengan Salary sebagai variabel respons dan seluruh variabel
lainnya sebagai prediktor. Parameter method = "anova"
digunakan karena respons berupa data numerik, sedangkan
cp = 0.001 ditetapkan melalui rpart.control()
agar terbentuk pohon awal yang cukup besar sebelum dipangkas.
Sintaks yang digunakan adalah sebagai berikut.
# Regression Tree
fit.tree <- rpart(
Salary ~ .,
data = Hitters.train,
method = "anova",
control = rpart.control(cp = 0.001)
)
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 *
Formula Salary ~ . menunjukkan bahwa Salary
diprediksi menggunakan seluruh variabel lainnya dalam dataset.
Visualisasi pohon dilakukan menggunakan sintaks berikut.
# Visualisasi Tree
rpart.plot(
fit.tree,
type = 2,
extra = 101,
fallen.leaves = TRUE,
main = "Regression Tree untuk Prediksi Salary"
)Argumen type = 2 digunakan untuk menampilkan aturan
pemisahan di bawah setiap simpul. Argumen extra = 101
menambahkan jumlah observasi (\(n\))
dan persentase observasi pada setiap simpul, di samping nilai prediksi
yang memang ditampilkan secara default. Argumen
fallen.leaves = TRUE digunakan agar simpul terminal sejajar
di bagian bawah sehingga struktur pohon lebih mudah dibaca.
Gambar 1. Regression tree untuk prediksi salary
Berdasarkan hasil model, simpul akar memiliki nilai prediksi
Salary sebesar 529,319 dari 185 observasi.
Pemisahan pertama dilakukan berdasarkan variabel CRBI pada
nilai 300,5. Simpul dengan CRBI < 300,5 berisi 107
observasi (58%) dengan prediksi 296,148, sedangkan simpul dengan
CRBI >= 300,5 berisi 78 observasi (42%) dengan prediksi
849,182.
Pada cabang CRBI < 300,5, pemisahan dilanjutkan
dengan CAtBat pada nilai 1.447, kemudian menggunakan
RBI, CRuns, Years,
Walks, dan Division. Pada cabang
CRBI >= 300,5, pemisahan dilanjutkan dengan
Hits pada nilai 122,5, kemudian menggunakan
HmRun, CHmRun, Years, dan
CRuns. Hal ini menunjukkan bahwa model membentuk kelompok
pemain berdasarkan kombinasi akumulasi performa karier, pengalaman
bermain, dan statistik permainan.
Pohon awal memiliki 12 pemisahan dan 13 simpul terminal. Nilai prediksi simpul terminal terendah adalah 114,730 (37 observasi), sedangkan tertinggi adalah 1.640,052 (7 observasi). Kompleksitas ini memungkinkan model menangkap pola yang rinci, tetapi pohon yang terlalu besar berpotensi mengalami overfitting. Oleh karena itu, diperlukan evaluasi kesalahan prediksi dan penentuan CP terbaik sebelum dilakukan pruning.
Variable importance digunakan untuk mengetahui tingkat
kepentingan setiap variabel prediktor dalam pembentukan model. Pada
rpart, nilai kepentingan dihitung dari kontribusi variabel
terhadap penurunan deviance pada pemisahan utama, ditambah
kontribusi dari pemisahan pengganti (surrogate split). Nilai
yang lebih besar menunjukkan kontribusi relatif yang lebih besar dalam
model.
Sintaks yang digunakan adalah sebagai berikut.
## 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
importance_df <- data.frame(
Feature = names(importance),
Overall = as.numeric(importance)
) %>%
arrange(desc(Overall))
importance_df## Feature Overall
## 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
Hasil tersebut disajikan dalam diagram batang menggunakan sintaks berikut.
ggplot(
importance_df,
aes(x = fct_reorder(Feature, Overall), y = Overall)
) +
geom_col(fill = "cadetblue") +
coord_flip() +
theme_minimal() +
labs(
title = "Variable Importance pada Regression Tree",
x = "Variabel",
y = "Tingkat Kepentingan"
)Gambar 2. Variable importance pada regression tree
Berdasarkan hasil perhitungan, terdapat 15 variabel yang tercatat
memiliki kepentingan. Variabel CRBI memiliki tingkat
kepentingan tertinggi, yaitu 18.006.203,09, diikuti CRuns
(16.275.302,12), CHits (15.846.822,12), CAtBat
(15.773.269,72), Years (12.575.599,24), dan
CWalks (11.352.010,78). Keenam variabel tersebut memiliki
nilai yang jauh di atas variabel lain. Variabel Hits berada
di urutan ketujuh dengan nilai 3.995.824,17, sedangkan
Division memiliki nilai terendah, yaitu 96.930,34. Variabel
Assists, Errors, League, dan
NewLeague tidak muncul dalam daftar.
Hasil tersebut menunjukkan bahwa variabel akumulasi performa karier
dan pengalaman bermain paling berkontribusi terhadap pembentukan pohon.
Namun, CRBI, CRuns, CHits, dan
CAtBat sama-sama merupakan akumulasi statistik karier dan
kemungkinan saling berkorelasi. Karena variable importance pada
rpart ikut menghitung surrogate split, kontribusi
variabel-variabel tersebut saling tumpang tindih, sehingga selisih
antarvariabel tidak sebaiknya ditafsirkan terlalu tajam. Selain itu,
nilai variable importance menunjukkan kontribusi relatif dalam
model yang terbentuk, bukan bukti hubungan sebab-akibat terhadap
Salary.
Setelah model terbentuk, dilakukan prediksi terhadap data
testing. Hasil prediksi dibandingkan dengan nilai aktual
Salary untuk menghitung Mean Squared Error (MSE),
yaitu rata-rata kuadrat selisih antara nilai aktual dan nilai prediksi,
dengan rumus:
\[ \mathrm{MSE}=\frac{1}{n}\sum_{i=1}^{n}(y_i-\hat{y}_i)^2 \]
Keterangan:
Sintaks yang digunakan adalah sebagai berikut.
# Prediksi dan Evaluasi MSE Sebelum Pruning
pred.tree <- predict(
fit.tree,
newdata = Hitters.test
)
mse_before <- mean(
(Hitters.test$Salary - pred.tree)^2
)
mse_before## [1] 80020.62
Fungsi predict() digunakan untuk menghasilkan prediksi
Salary pada data testing, kemudian MSE dihitung dari
rata-rata kuadrat selisih antara Salary aktual dan hasil
prediksi.
Berdasarkan hasil evaluasi, diperoleh MSE sebelum pruning sebesar 80.020,62. Nilai ini digunakan sebagai pembanding terhadap model setelah pruning, dengan nilai yang lebih rendah menunjukkan kesalahan prediksi yang lebih kecil pada data yang sama.
Complexity Parameter (CP) merupakan parameter yang
mengendalikan kompleksitas pohon. Pemisahan dipertahankan hanya apabila
memberikan penurunan galat relatif minimal sebesar nilai CP. Penentuan
CP terbaik dilakukan dengan memeriksa tabel kompleksitas menggunakan
printcp() dan grafik menggunakan plotcp().
Sintaks yang digunakan adalah sebagai berikut.
##
## 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
## [1] 0.02238561
Fungsi printcp() menampilkan nilai CP, jumlah pemisahan
(nsplit), kesalahan relatif (rel error), kesalahan
validasi silang (xerror), dan simpangan baku kesalahan validasi
(xstd). Nilai xerror diperoleh dari validasi
silang 10-lipat bawaan rpart. CP terbaik dipilih
berdasarkan xerror terkecil.
Gambar 3. Grafik CP (plotcp)
Berdasarkan hasil printcp(fit.tree), nilai
rel error terus menurun seiring bertambahnya pemisahan,
tetapi xerror berhenti membaik setelah pemisahan kelima.
Nilai xerror terkecil sebesar 0,58019 diperoleh pada 5
pemisahan, dengan CP terbaik sebesar 0,02238561. Pada grafik, titik ini
berada di bawah garis putus-putus, sedangkan penambahan pemisahan
setelahnya tidak memberikan perbaikan yang berarti. Oleh karena itu, CP
sebesar 0,02238561 dipilih sebagai dasar pruning.
Pruning merupakan proses menyederhanakan pohon dengan menghilangkan cabang yang kurang diperlukan berdasarkan nilai CP yang ditentukan. Proses ini bertujuan mengurangi kompleksitas model dan berpotensi memperbaiki kemampuan prediksi pada data baru.
Sintaks yang digunakan adalah sebagai berikut.
## 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 Tree Setelah Pruning
rpart.plot(
pruned.tree,
type = 2,
extra = 101,
fallen.leaves = TRUE,
main = "Regression Tree Setelah Pruning"
)Gambar 3. Regression ree etelah runing
Berdasarkan hasil, pohon setelah pruning menjadi jauh lebih
sederhana, yaitu dari 12 pemisahan (13 simpul terminal) menjadi 5
pemisahan (6 simpul terminal). Pohon tetap menggunakan CRBI
sebagai pemisahan awal. Pada cabang CRBI < 300,5,
pemisahan menggunakan CAtBat pada nilai 1.447 sehingga
terbentuk dua simpul terminal dengan prediksi 205,711 (71 observasi) dan
474,509 (36 observasi). Pada cabang CRBI >= 300,5,
pemisahan menggunakan Hits pada nilai 122,5. Kelompok
dengan Hits < 122,5 menjadi simpul terminal dengan
prediksi 593,177 (32 observasi), sedangkan kelompok dengan
Hits >= 122,5 dipisah lagi berdasarkan
CHmRun dan Years menjadi tiga simpul terminal
dengan prediksi 753,535 (23 observasi), 1.152,677 (16 observasi), dan
1.640,052 (7 observasi).
Variabel RBI, CRuns, Walks,
Division, dan HmRun yang sebelumnya digunakan
sebagai pemisah pada pohon awal tidak lagi digunakan sebagai pemisahan
setelah pruning. Dengan demikian, model yang lebih sederhana
hanya mempertahankan lima variabel pemisah, yaitu CRBI,
CAtBat, Hits, CHmRun, dan
Years.
Selanjutnya, dihitung variable importance pada model setelah pruning.
# Variable Importance Setelah Pruning
importance_pruned <- pruned.tree$variable.importance
importance_pruned## CRBI CRuns CHits CAtBat Years CWalks AtBat
## 16886866.7 15507629.7 14858301.0 14777292.4 12482323.9 10975741.4 3581420.4
## Hits CHmRun Runs RBI Walks HmRun PutOuts
## 3556168.8 3100277.6 2555996.3 2000345.0 1889214.7 1111302.8 442896.8
Hasilnya menunjukkan bahwa CRBI tetap menjadi variabel
dengan tingkat kepentingan tertinggi, yaitu 16.886.866,7, diikuti
CRuns (15.507.629,7), CHits (14.858.301,0),
CAtBat (14.777.292,4), Years (12.482.323,9),
dan CWalks (10.975.741,4). Variabel Division
tidak lagi muncul, sehingga jumlah variabel yang tercatat berkurang dari
15 menjadi 14. Urutan variabel utama tidak berubah, sehingga variabel
akumulasi performa karier dan pengalaman bermain tetap memiliki
kontribusi relatif terbesar meskipun kompleksitas pohon telah
dikurangi.
Evaluasi model setelah pruning dilakukan dengan memprediksi
Salary pada data testing yang sama, kemudian
menghitung MSE.
# Prediksi dan Evaluasi MSE Setelah Pruning
pred.prune <- predict(
pruned.tree,
newdata = Hitters.test
)
mse_after <- mean(
(Hitters.test$Salary - pred.prune)^2
)
mse_after## [1] 75515.11
# Perbandingan MSE
hasil_mse <- data.frame(
Model = c("Sebelum Pruning", "Setelah Pruning"),
MSE = c(mse_before, mse_after)
)
hasil_mse## Model MSE
## 1 Sebelum Pruning 80020.62
## 2 Setelah Pruning 75515.11
Berdasarkan hasil evaluasi, diperoleh MSE setelah pruning sebesar 75.515,11. Nilai tersebut lebih rendah dibandingkan MSE sebelum pruning, yaitu 80.020,62. Perbandingan kedua model disajikan pada tabel berikut.
| Model | Jumlah Pemisahan | MSE |
|---|---|---|
| Sebelum pruning | 12 | 80.020,62 |
| Setelah pruning | 5 | 75.515,11 |
Penurunan MSE sebesar 4.505,51 atau sekitar 5,63% menunjukkan bahwa pada data testing yang digunakan, model setelah pruning memiliki kesalahan prediksi yang lebih rendah dengan struktur yang jauh lebih sederhana. Namun, evaluasi ini hanya berdasarkan satu kali pembagian data dengan 78 observasi testing, sehingga selisih tersebut dapat berubah apabila pembagian data berbeda.
Secara keseluruhan, analisis menggunakan dataset Hitters
menghasilkan model Regression Tree untuk memprediksi
Salary. Penanganan missing value dengan
na.omit() menghasilkan 263 observasi lengkap, yang dibagi
menjadi 185 observasi training dan 78 observasi
testing. Pada pohon awal, CRBI merupakan variabel
dengan tingkat kepentingan tertinggi dan sekaligus menjadi pemisah
pertama. CP terbaik yang diperoleh berdasarkan xerror
terkecil adalah 0,02238561. Setelah dilakukan pruning, jumlah
pemisahan berkurang dari 12 menjadi 5, sedangkan MSE turun dari
80.020,62 menjadi 75.515,11. Berdasarkan hasil tersebut, model setelah
pruning lebih sederhana dan memiliki kesalahan prediksi yang
lebih rendah pada data testing yang digunakan.
Decision Tree merupakan metode machine learning yang membentuk model prediksi melalui serangkaian aturan pemisahan berdasarkan variabel prediktor. Metode ini memiliki dua pendekatan utama, yaitu Classification Tree untuk memprediksi variabel respons kategoris dan Regression Tree untuk memprediksi variabel respons numerik. Pada Regression Tree, proses pemisahan dilakukan untuk membentuk kelompok observasi dengan nilai respons yang relatif serupa, sedangkan prediksi pada setiap simpul terminal umumnya berupa rata-rata nilai respons pada kelompok tersebut. Struktur pohon yang dihasilkan juga relatif mudah diinterpretasikan karena aturan pemisahannya dapat ditelusuri dari simpul akar hingga simpul terminal.
Pembentukan Regression Tree dilakukan melalui beberapa
tahapan, yaitu pemeriksaan dan penanganan missing value,
pembagian data menjadi data training dan testing,
pembentukan serta visualisasi pohon, analisis variable
importance, dan evaluasi hasil prediksi menggunakan Mean
Squared Error (MSE). Kompleksitas pohon dapat dikendalikan
menggunakan Complexity Parameter (CP), sedangkan proses
pruning dilakukan untuk menyederhanakan pohon dengan
menghilangkan cabang yang tidak diperlukan. Pemilihan CP dapat
didasarkan pada nilai cross-validation error
(xerror) terkecil. MSE digunakan untuk mengukur rata-rata
kuadrat kesalahan prediksi, dengan nilai yang lebih rendah menunjukkan
kesalahan prediksi yang lebih kecil pada data yang dievaluasi.
Hasil penerapan Regression Tree pada dataset
Hitters menunjukkan bahwa 59 missing value pada
variabel Salary berhasil ditangani menggunakan
na.omit(), sehingga tersisa 263 observasi. Data tersebut
dibagi menjadi 185 observasi training dan 78 observasi
testing. Variabel CRBI memiliki tingkat
kepentingan tertinggi pada model awal, sedangkan CP terbaik yang
diperoleh adalah 0,02238561. Setelah dilakukan pruning, jumlah
pemisahan berkurang dari 12 menjadi 5. MSE juga mengalami penurunan dari
80.020,62 sebelum pruning menjadi 75.515,11 setelah
pruning, atau turun sekitar 5,63%. Hasil ini menunjukkan bahwa
model setelah pruning memiliki kesalahan prediksi yang lebih
rendah pada data testing yang digunakan.
Abedinia, A., & Seydi, V. (2024). Building semi-supervised decision trees with semi-CART algorithm. International Journal of Machine Learning and Cybernetics, 15(10), 4493–4510. https://doi.org/10.1007/s13042-024-02161-z
Alpaydın, E. (2020). Introduction to machine learning (4th ed.). The MIT Press. https://mitpress.mit.edu/9780262043793/introduction-to-machine-learning/
Chew, Y. J., Ooi, S. Y., Pang, Y. H., & Lim, Z. Y. (2025). Decision tree pruning with privacy-preserving strategies. Electronics, 14(15), Article 3139. https://doi.org/10.3390/electronics14153139
Fransiska, H. (2026). Modul Praktikum Machine Learning and Modern Prediction. Laboratorium Matematika Universitas Bengkulu.
Luqman, M., dkk. (2015). Identifikasi variabel yang mempengaruhi besar pinjaman dengan metode pohon regresi (Studi kasus di Unit Pengelola Kegiatan PNPM Mandiri). Jurnal Gaussian, 4(4). https://ejournal3.undip.ac.id/index.php/gaussian/article/view/10238
Nopianti, R., Panudju, A. T., & Permana, A. (2022). Prediksi harga saham Indonesia pada masa Covid-19 menggunakan regresi pohon keputusan. Jurnal Ecodemica: Jurnal Ekonomi, Manajemen, dan Bisnis, 6(1). https://ejournal.bsi.ac.id/ejurnal/index.php/ecodemica/article/view/11365
Sinambela, Y. E. S. (2008). Penerapan metode klasifikasi dengan algoritma CART pada data status daerah kabupaten di Indonesia [Karya ilmiah, Institut Pertanian Bogor]. Repository IPB. http://repository.ipb.ac.id/handle/123456789/50394