Perkembangan machine learning dalam beberapa tahun terakhir tidak hanya ditandai oleh meningkatnya penggunaan model prediktif, tetapi juga oleh tuntutan agar keputusan yang dihasilkan model dapat dipahami dan dipertanggungjawabkan. Tren ini terlihat dari berkembangnya penelitian explainable artificial intelligence (XAI), yaitu pendekatan yang berupaya menjelaskan alasan di balik prediksi model kepada pengguna. Dalam systematic literature review terhadap publikasi tiga tahun terakhir, Saarela & Podgorelec (2024) menyaring 512 artikel jurnal yang ditelaah sejawat dari 664 artikel awal. Studi tersebut menunjukkan bahwa aplikasi XAI telah meluas pada bidang kesehatan, lingkungan, pertanian, industri, keamanan siber, keuangan, transportasi, hukum, pendidikan, dan layanan sosial. Temuan tersebut menunjukkan bahwa kebutuhan terhadap model yang tidak hanya akurat, tetapi juga transparan dan dapat ditafsirkan, semakin penting seiring meluasnya pemanfaatan machine learning dalam pengambilan keputusan.
Salah satu metode yang relevan dengan kebutuhan tersebut adalah Decision Tree. Model ini merepresentasikan proses prediksi melalui struktur pohon yang terdiri atas simpul keputusan, aturan pemisah, dan daun kelas atau nilai prediksi. Struktur tersebut memungkinkan pengguna mengikuti jalur keputusan dan memahami hubungan antara variabel prediktor dan keluaran model. Blockeel et al. (2023) menjelaskan bahwa Decision Tree tetap penting dalam machine learning karena memiliki keunggulan berupa efisiensi, fleksibilitas, kemampuan bekerja pada data berukuran relatif kecil, serta interpretabilitas prediksi individual. Penerapan Decision Tree juga telah dilakukan pada berbagai permasalahan klasifikasi. Sebagai contoh, Jijo & Abdulazeez (2021) meninjau penggunaan beberapa algoritma Decision Tree pada bidang kesehatan, klasifikasi teks, klasifikasi pengguna perangkat pintar, citra, dan bidang lainnya. Dengan demikian, Decision Tree relevan dipelajari dalam konteks statistika karena menghubungkan proses klasifikasi berbasis data dengan pembentukan aturan keputusan yang dapat dijelaskan secara langsung.
Meskipun demikian, penggunaan Decision Tree menghadapi sejumlah masalah metodologis dan praktis. Pohon keputusan tunggal dapat mengalami overfitting ketika struktur pohon terlalu kompleks, sehingga kinerja pada data pelatihan tinggi tetapi kemampuan generalisasinya pada data baru menurun. Model ini juga dapat memiliki varians prediksi yang tinggi dan tidak selalu robust terhadap perubahan data. Rodrigo et al. (2021) menyatakan bahwa Decision Tree umumnya memiliki varians prediksi yang tinggi dan tidak konsisten dalam hal robustness. Dalam studi terhadap 228 individu dengan enam model berbasis Decision Tree, model CART mencapai akurasi rata-rata 70,7% dan AUC rata-rata 0,69, sedangkan gradient boosting mencapai akurasi rata-rata 71,8% dan AUC rata-rata 0,68. Hasil tersebut menunjukkan bahwa decision tree dapat memberikan prediksi yang berguna, tetapi performanya belum tentu sangat kuat dan masih bergantung pada ukuran sampel, pemilihan prediktor, algoritma, serta proses validasi. Apabila model digunakan tanpa evaluasi yang memadai, kesalahan klasifikasi dapat menyebabkan keputusan yang kurang tepat, menurunkan kepercayaan pengguna, dan membatasi penerapannya pada konteks yang membutuhkan akuntabilitas.
Selain persoalan performa, penelitian terdahulu juga menunjukkan adanya kesenjangan dalam cara interpretabilitas dievaluasi. Saarela & Podgorelec (2024) menemukan bahwa sebagian besar studi XAI masih menilai hasil penjelasan berdasarkan bukti anekdotal atau pendapat pakar, bukan melalui metrik kuantitatif yang terstandar. Kesenjangan ini penting karena model yang secara struktural mudah dibaca belum tentu menghasilkan penjelasan yang benar-benar berguna, stabil, atau mudah dipahami oleh pengguna. Temuan tersebut diperkuat oleh Kim et al. (2024), yang menelaah 73 artikel dan menemukan 30 komponen penjelasan yang bermakna bagi pengguna. Namun, hanya 19 dari 73 artikel yang menggunakan kerangka evaluasi yang juga digunakan oleh setidaknya satu penelitian lain. Artinya, belum terdapat keseragaman dalam menilai kualitas penjelasan, kepercayaan pengguna, kemudahan pemahaman, maupun kontribusi penjelasan terhadap kinerja pengambilan keputusan. Di sisi lain, kajian Blockeel et al. (2023) menunjukkan bahwa riset Decision Tree masih memiliki ruang pengembangan, antara lain pada pembelajaran dinamis, ketahanan model, keadilan, dan perbandingan metode pembentukan pohon. Research gap tersebut menunjukkan pentingnya penelitian yang tidak berhenti pada pengukuran akurasi, tetapi juga mengevaluasi kompleksitas pohon, kestabilan model, kualitas interpretasi, dan relevansinya bagi pengguna.
Berdasarkan uraian tersebut, penelitian mengenai Decision Tree penting dilakukan untuk menghasilkan pemahaman yang lebih menyeluruh mengenai hubungan antara performa prediksi dan interpretabilitas model. Secara akademik, penelitian ini dapat berkontribusi dengan membandingkan atau mengevaluasi algoritma Decision Tree menggunakan ukuran kinerja yang sesuai, seperti akurasi, presisi, sensitivitas, spesifisitas, F1-score, AUC, serta ukuran kompleksitas pohon. Penelitian ini juga dapat memperjelas kondisi ketika model yang lebih sederhana dan mudah dijelaskan lebih bermanfaat dibandingkan model yang lebih kompleks tetapi sulit ditafsirkan. Secara praktis, hasil penelitian dapat membantu pengguna, peneliti, maupun pengambil keputusan memperoleh aturan klasifikasi yang transparan dan dapat ditelusuri. Dengan demikian, penelitian ini tidak hanya mendukung pengembangan metode machine learning yang akurat, tetapi juga mendorong penggunaan model statistik yang dapat dipahami, diuji, dan dipertanggungjawabkan.
Berdasarkan latar belakang di atas dapat disimpulkan bahwa rumusan masalah sebagai berikut:
Berdasarkan rumusan masalah di atas, tujuan penelitian yang dapat disimpulkan sebagai berikut:
Adapun manfaat yang didapatkan dari penelitian ini adalah sebagai berikut:
Adapun batasan masalah pada penelitian ini yaitu, 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 variabel importance,
lakukan prediksi dan evaluasi menggunakan MSE, tentukan CP terbaik,
lakukan pruning, dan evaluasi kembali model menggunakan
MSE.
Adapun sistematika penulisan dari praktikum ini adalah sebagai berikut:
BAB I PENDAHULUAN
Bab ini merupakan bab yang memuat latar belakang penelitian, rumusan masalah, tujuan dan manfaat penelitian, batasan masalah penelitian, dan sistematika penelitian.
BAB II TINJAUAN PUSTAKA
Bab ini merupakan bab yang memuat pengertian dari teori yang diperlukan untuk rancangan penelitian pada bab-bab berikutnya.
BAB III METODE PENELITIAN
Bab ini merupakan bab yang memuat uraian mengenai jenis dan sumber penelitian, variabel penelitian, dan analisis data.
BAB IV HASIL DAN PEMBAHASAN
Bab ini merupakan bab yang memuat hasil analisis, pembahasan dari hasil yang telah diperoleh, dan interpretasi.
BAB V KESIMPULAN DAN SARAN
Bab ini merupakan bab yang memuat rangkuman dari hasil keseluruhan dan saran yang diberikan oleh penulis terhadap hasil maupun analisis yang telah dilakukan.
DAFTAR PUSTAKA
Machine learning merupakan pendekatan komputasional yang mempelajari pola dari data untuk menghasilkan prediksi atau keputusan pada pengamatan baru. Dalam machine learning, model tidak hanya dinilai dari kemampuannya menyesuaikan data yang telah diamati, tetapi juga dari kemampuannya melakukan generalisasi terhadap data yang belum digunakan pada proses pembentukan model. Kebutuhan untuk menguji generalisasi tersebut menjadikan pemisahan data, evaluasi prediksi, dan pengendalian kompleksitas sebagai bagian penting dalam penelitian machine learning (Rainio et al., 2024).
Perkembangan machine learning juga mendorong perhatian terhadap interpretabilitas. Model yang akurat belum tentu mudah dipahami oleh pengguna, terutama ketika keputusan model digunakan untuk mendukung keputusan yang penting. Decision Tree menjadi salah satu model yang relevan karena aturan prediksinya dapat ditelusuri melalui struktur percabangan. Blockeel et al. (2023) menjelaskan bahwa Decision Tree tetap digunakan dalam machine learning karena memiliki kombinasi antara efisiensi, fleksibilitas, kemampuan prediksi, dan interpretabilitas.
Supervised learning menggunakan pasangan data yang terdiri atas variabel prediktor dan variabel respons. Model mempelajari hubungan antara prediktor dan respons dari data training, kemudian menghasilkan prediksi untuk data baru. Berdasarkan bentuk variabel respons, supervised learning umumnya dibedakan menjadi klasifikasi dan regresi. Klasifikasi menghasilkan label kategori, sedangkan regresi menghasilkan nilai numerik.
Penelitian ini termasuk permasalahan supervised learning dengan tugas regresi karena variabel respons yang diprediksi adalah Salary, yaitu gaji pemain dalam nilai numerik. Dengan demikian, metode yang tepat bukan classification tree, melainkan regression tree. Pembedaan ini penting karena kriteria pemisahan dan ukuran evaluasi yang digunakan berbeda. Pada regresi, kualitas prediksi dinilai berdasarkan jarak antara nilai aktual dan nilai prediksi, sedangkan pada klasifikasi penilaian biasanya didasarkan pada ketepatan label atau ukuran berbasis confusion matrix (Rainio et al., 2024).
Decision Tree merupakan model prediksi berbentuk struktur pohon yang menguraikan proses pengambilan keputusan melalui serangkaian aturan. Struktur tersebut terdiri atas root node sebagai titik awal, internal node sebagai titik pemisahan, branch sebagai jalur hasil pemisahan, dan terminal node sebagai lokasi prediksi akhir. Suatu observasi bergerak dari root node menuju terminal node berdasarkan kondisi yang dipenuhi oleh nilai prediktornya.
Decision Tree dibangun melalui recursive partitioning. Pada proses tersebut, sekumpulan data dibagi secara bertahap menjadi beberapa subset berdasarkan variabel dan titik pemisah tertentu. Pemisahan dipilih untuk menghasilkan kelompok yang lebih homogen terhadap variabel respons. Untuk respons numerik, ukuran keragaman atau galat dalam subset digunakan untuk menentukan kualitas kandidat pemisahan (Blockeel et al., 2023).
Kelebihan Decision Tree adalah bentuk modelnya relatif mudah dipahami, dapat menangkap hubungan nonlinier, dan dapat merepresentasikan interaksi antarvariabel tanpa harus menentukan persamaan linear terlebih dahulu. Decision Tree juga dapat digunakan untuk menjelaskan prediksi melalui aturan dan visualisasi. Namun, tree yang terlalu kompleks dapat menyesuaikan diri secara berlebihan terhadap data training. Blockeel et al. (2023) menjelaskan bahwa penghentian pertumbuhan tree atau pruning diperlukan karena pemisahan lanjutan pada subset yang kecil dapat menyebabkan overfitting.
Classification and Regression Tree atau CART adalah pendekatan pembentukan decision tree untuk permasalahan klasifikasi dan regresi. CART menggunakan recursive binary splitting, yaitu setiap node dipecah menjadi dua node anak. Prosedur tersebut berulang pada node-node berikutnya sampai kondisi penghentian terpenuhi atau tree dipangkas (Blockeel et al., 2023). Dalam penerapan empiris, Rodrigo et al. (2021) juga menggunakan model Classification and Regression Tree (CART) sebagai salah satu model berbasis Decision Tree dan mengevaluasi performanya bersama beberapa model tree lainnya.
Pada regression tree, kandidat pemisahan dievaluasi berdasarkan penurunan keragaman atau jumlah kuadrat galat. Misalkan node induk \(t\) dibagi menjadi node kiri \(t_L\) dan node kanan \(t_R\). Jumlah kuadrat galat dalam suatu node dapat ditulis sebagai:
\[ SSE(t) = \sum_{i \in t} \left( y_i - \bar{y}_t \right)^2, \]
sehingga penurunan galat akibat suatu pemisahan dapat dirumuskan sebagai:
\[ \Delta SSE = SSE(t) - SSE(t_L) - SSE(t_R). \]
Pemisahan yang menghasilkan pengurangan SSE paling besar dipilih sebagai kandidat terbaik pada tahap tersebut. Proses ini bersifat greedy karena pilihan terbaik pada satu node ditentukan berdasarkan perbaikan lokal. Pendekatan tersebut efisien, tetapi tidak selalu menghasilkan tree global yang paling sederhana atau paling optimal. Keterbatasan inilah yang menjadi alasan pentingnya evaluasi dan pengendalian kompleksitas model.
Regression tree adalah Decision Tree yang digunakan untuk memprediksi variabel respons numerik. Setelah data dibagi ke dalam terminal node, nilai prediksi pada setiap terminal node umumnya berupa rata-rata nilai respons dari observasi yang berada di dalam node tersebut. Tırınk et al. (2023) menerapkan CART untuk memprediksi karakteristik kuantitatif dan menjelaskan bahwa algoritma tersebut membagi node secara biner dan rekursif untuk membentuk node anak yang lebih homogen. Jika ruang prediktor dibagi menjadi \(M\) wilayah \(R_1, R_2, \ldots, R_M\), bentuk prediksi regression tree dapat ditulis sebagai:
\[ f(x) = \sum_{m=1}^{M} c_m \, I(x \in R_m), \]
dengan \(c_m\) sebagai rata-rata nilai respons pada wilayah \(R_m\) dan \(I(x \in R_m)\) sebagai fungsi indikator.
Mean Squared Error (MSE) merupakan ukuran evaluasi yang menghitung rata-rata kuadrat selisih antara nilai aktual dan nilai prediksi. Rumus MSE adalah:
\[ MSE = \frac{1}{n} \sum_{i=1}^{n} \left( y_i - \hat{y}_i \right)^2, \]
dengan \(n\) sebagai jumlah observasi, \(y_i\) sebagai nilai aktual observasi ke-\(i\) dan \(\hat{y}_i\) sebagai nilai prediksi observasi ke-\(i\).
Nilai MSE yang lebih kecil menunjukkan kesalahan prediksi rata-rata yang lebih rendah. Karena selisih dikuadratkan, MSE memberikan penalti lebih besar terhadap kesalahan yang besar dibandingkan ukuran seperti Mean Absolute Error. Rainio et al. (2024) menjelaskan bahwa MSE dan MAE sama-sama dapat digunakan untuk evaluasi regresi, tetapi MSE lebih sensitif terhadap kesalahan prediksi berukuran besar.
Pruning merupakan proses mengurangi cabang tree yang tidak memberikan kontribusi memadai terhadap performa model. Tujuan pruning adalah memperoleh tree yang lebih sederhana, mengurangi risiko overfitting, dan mempertahankan kemampuan prediksi pada data baru. Pruning dapat dilakukan setelah tree awal dibentuk atau dikendalikan sejak proses pertumbuhan tree.
Dalam implementasi CART, complexity parameter atau CP digunakan untuk mengatur tingkat kompleksitas tree. CP memberikan penalti terhadap penambahan kompleksitas sehingga model tidak mempertahankan pemisahan yang hanya menghasilkan perbaikan kecil. Pemilihan CP dapat dilakukan berdasarkan error hasil validasi silang dan ukuran tree yang dihasilkan.
Blockeel et al. (2023) menjelaskan bahwa berbagai kriteria penghentian dan pruning telah dikembangkan karena tidak ada satu prosedur yang selalu unggul pada semua dataset. Artinya, nilai CP perlu dipilih berdasarkan karakteristik data dan hasil evaluasi, bukan hanya berdasarkan asumsi bahwa tree yang lebih besar atau lebih kecil selalu lebih baik.
Penelitian tentang Decision Tree yang interpretable juga menunjukkan adanya trade-off antara performa dan kompleksitas. Custode & Iacca (2023) membahas pembelajaran tree yang mempertimbangkan kualitas performa sekaligus ukuran atau kompleksitas struktur tree. Temuan tersebut mendukung penggunaan pruning sebagai tahapan untuk mengevaluasi apakah pengurangan kompleksitas dapat menghasilkan model yang lebih mudah ditafsirkan tanpa penurunan performa yang besar.
Jenis data pada penelitian ini adalah data numerik. Data numerik adalah jenis data yang terdiri dari angka dan dapat diukur atau dihitung secara kuantitatif. Data ini digunakan untuk merepresentasikan nilai atau ukuran tertentu dalam berbagai konteks, seperti sains, ekonomi, statistik, dan matematika. Data numerik sering digunakan untuk melakukan perhitungan, analisis, dan visualisasi data.
Dalam laporan ini sumber data yang digunakan adalah sumber data dalam wujud data sekunder, yaitu data yang telah dikumpulkan dan disusun oleh pihak lain di luar praktikan itu sendiri. Data pada praktikum ini yaitu dataset Hitters yang tersedia di R.
Variabel adalah simbol, karakteristik, atau atribut yang dapat diukur atau diamati dalam sebuah penelitian atau eksperimen. Pada laporan ini terdapat 1 batasan masalah. Variabel penelitian yang digunakan terdiri atas AtBat, Hits, HmRun, Runs, RBI, Walks, Years, CAtBat, CHits, CHmRun, CRuns, CRBI, CWalks, PutOuts, Assists, Errors, League, Division, Salary, dan NewLeague. Variabel Salary merupakan variabel numerik kontinu, variabel AtBat, Hits, HmRun, Runs, RBI, Walks, Years, CAtBat, CHits, CHmRun, CRuns, CRBI, CWalks, PutOuts, Assists, dan Errors merupakan variabel numerik diskret, sedangkan variabel League, Division, dan NewLeague merupakan variabel kategorik nominal. 20 variabel tersebut digunakan dalam proses preprocessing data untuk mempersiapkan data sebelum dilakukan analisis selanjutnya.
Langkah-langkah yang digunakan pada penelitian untuk batasan masalah adalah sebagai berikut:
na.omit().library(dplyr)
library(tidyverse)
library(rpart)
library(rpart.plot)
library(ISLR)
# Import 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 ...
dim(Hitters)
## [1] 322 20
Fungsi str(Hitters) menunjukkan bahwa dataset
Hitters berupa data.frame dengan 322 observasi dan 20
variabel. Variabel League, Division, dan NewLeague bertipe
factor, sedangkan variabel lainnya bertipe numerik atau
integer. Variabel Salary menjadi variabel respons yang akan
diprediksi.
# Total missing value
sum(is.na(Hitters))
## [1] 59
# Missing value setiap variabel
colSums(is.na(Hitters))
## 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
# Penanganan missing value dengan na.omit()
Hitters.clean <- na.omit(Hitters)
# Mengecek kembali
sum(is.na(Hitters.clean))
## [1] 0
dim(Hitters.clean)
## [1] 263 20
Hasil pengecekan menunjukkan terdapat 59 nilai hilang pada
dataset, seluruhnya berada pada variabel Salary, sedangkan
variabel lainnya lengkap. Proporsi nilai hilang pada Salary sebesar
18.32%. Penanganan dengan na.omit() menghapus seluruh baris
yang memuat nilai hilang, sehingga data berkurang dari 322 menjadi 263
observasi dan tidak ada lagi nilai hilang (0). Penghapusan baris dipilih
karena Salary adalah variabel respons yang tidak sebaiknya diimputasi,
namun konsekuensinya adalah sebagian informasi pemain ikut hilang.
set.seed(234)
train <- sample(
1:nrow(Hitters.clean),
round(0.7 * nrow(Hitters.clean))
)
Hitters.train <- Hitters.clean[train, ]
Hitters.test <- Hitters.clean[-train, ]
dim(Hitters.train)
## [1] 184 20
dim(Hitters.test)
## [1] 79 20
Dengan set.seed(234) dan proporsi 70:30, data terbagi
menjadi 184 observasi training dan 79 observasi
testing, masing-masing dengan 20 kolom (19 prediktor dan 1
respons). Penggunaan set.seed menjamin pembagian data dapat
direproduksi.
fit.tree <- rpart(
Salary ~ .,
data = Hitters.train,
method = "anova",
cp = 0.001
)
fit.tree
## n= 184
##
## node), split, n, deviance, yval
## * denotes terminal node
##
## 1) root 184 41961210.00 555.9910
## 2) CHits< 439 82 1332171.00 210.5325
## 4) CRBI< 115.5 55 182826.90 143.9939
## 8) CRuns< 81 34 28217.26 107.6471 *
## 9) CRuns>=81 21 36969.14 202.8413 *
## 5) CRBI>=115.5 27 409807.40 346.0741
## 10) CWalks< 118 13 99676.69 269.3462 *
## 11) CWalks>=118 14 162530.80 417.3214 *
## 3) CHits>=439 102 22975850.00 833.7125
## 6) RBI< 80.5 77 8627815.00 693.9066
## 12) AtBat< 394.5 32 2133386.00 511.7969
## 24) CHmRun< 124.5 23 702139.20 439.8913
## 48) Errors< 6 13 289156.40 377.0513 *
## 49) Errors>=6 10 294911.50 521.5834 *
## 25) CHmRun>=124.5 9 1008422.00 695.5556 *
## 13) AtBat>=394.5 45 4678518.00 823.4069
## 26) Walks< 77.5 36 1783381.00 759.8836
## 52) Assists>=396 10 363046.00 567.4143 *
## 53) Assists< 396 26 907412.10 833.9102
## 106) CAtBat< 2734 8 35380.47 695.3125 *
## 107) CAtBat>=2734 18 650057.10 895.5092 *
## 27) Walks>=77.5 9 2168800.00 1077.5000 *
## 7) RBI>=80.5 25 8207560.00 1264.3150
## 14) Walks< 52.5 10 923861.40 837.9167 *
## 15) Walks>=52.5 15 4253446.00 1548.5800 *
rpart.plot(fit.tree, main = "Regression Tree (Sebelum Pruning)")
Model regression tree dibangun dengan
cp = 0.001 agar pohon dapat tumbuh cukup besar sebelum
dipangkas. Pohon sebelum pruning memiliki 13 simpul daun.
Pemisahan pertama pada simpul akar dilakukan menggunakan variabel
CHits dengan titik potong 439, yang berarti variabel
tersebut menjadi pemisah paling awal yang paling banyak menurunkan
jumlah kuadrat galat. Setiap simpul daun menampilkan rata-rata Salary
(dalam ribuan dolar) dan persentase observasi training yang
berada pada simpul tersebut.
fit.tree$variable.importance
## CHits CAtBat CRuns CRBI CWalks Years RBI Walks
## 18675326 18084942 17519152 17276732 16038217 12456880 7299030 4687275
## Runs HmRun PutOuts AtBat Assists CHmRun Hits Errors
## 3762997 3752785 2931433 2712577 1760445 1724412 1521265 1027147
fit.tree$variable.importance %>%
data.frame() %>%
rownames_to_column(var = "Feature") %>%
rename(Overall = ".") %>%
ggplot(aes(x = fct_reorder(Feature, Overall), y = Overall)) +
geom_pointrange(aes(ymin = 0, ymax = Overall),
color = "cadetblue", size = .3) +
theme_minimal() +
coord_flip() +
labs(
x = "",
y = "",
title = "Variable Importance - Regression Tree (Sebelum Pruning)"
)
Berdasarkan variable importance, tiga variabel dengan nilai
tertinggi adalah CHits, CAtBat, dan
CRuns. Artinya variabel-variabel tersebut memberikan
kontribusi terbesar dalam menurunkan kesalahan prediksi Salary. Variabel
dengan titik yang berada di dekat nol memiliki kontribusi yang kecil
terhadap model. Perlu dicatat bahwa nilai importance pada
rpart juga memperhitungkan pemisah pengganti
(surrogate), sehingga variabel yang berkorelasi tinggi
(misalnya variabel statistik karier seperti CAtBat, CHits, dan CRuns)
dapat sama-sama tampak penting.
pred.tree <- predict(fit.tree, newdata = Hitters.test)
mse.tree <- mean((pred.tree - Hitters.test$Salary)^2)
mse.tree
## [1] 121881.8
Model sebelum pruning menghasilkan MSE pada data testing sebesar 1.218818^{5} atau RMSE sebesar 349.1 (dalam ribuan dolar). Artinya, rata-rata prediksi Salary menyimpang sekitar 349.1 ribu dolar dari nilai aktualnya. Nilai ini menjadi pembanding untuk model setelah pruning.
printcp(fit.tree)
##
## Regression tree:
## rpart(formula = Salary ~ ., data = Hitters.train, method = "anova",
## cp = 0.001)
##
## Variables actually used in tree construction:
## [1] Assists AtBat CAtBat CHits CHmRun CRBI CRuns CWalks Errors
## [10] RBI Walks
##
## Root node error: 41961207/184 = 228050
##
## n= 184
##
## CP nsplit rel error xerror xstd
## 1 0.4207026 0 1.00000 1.00595 0.15887
## 2 0.1463369 1 0.57930 0.65808 0.11353
## 3 0.0722156 2 0.43296 0.61104 0.10369
## 4 0.0432759 3 0.36074 0.61884 0.12285
## 5 0.0176243 4 0.31747 0.55011 0.11292
## 6 0.0173097 5 0.29984 0.54534 0.11288
## 7 0.0122237 6 0.28253 0.55052 0.11501
## 8 0.0100766 7 0.27031 0.53931 0.11394
## 9 0.0052900 8 0.26023 0.52777 0.11152
## 10 0.0035175 9 0.25494 0.51243 0.10894
## 11 0.0028138 10 0.25143 0.51494 0.10922
## 12 0.0028036 11 0.24861 0.51494 0.10922
## 13 0.0010000 12 0.24581 0.51647 0.10929
plotcp(fit.tree, upper = "splits")
bestcp <- fit.tree$cptable[
which.min(fit.tree$cptable[, "xerror"]),
"CP"
]
bestcp
## [1] 0.003517531
Tabel CP menampilkan nilai CP, jumlah pemisahan
(nsplit), galat relatif data training
(rel error), galat hasil validasi silang
(xerror), dan simpangan bakunya (xstd). Pada
grafik plotcp, nilai CP terbaik berada pada titik dengan
xerror terendah. Nilai xerror minimum sebesar
0.5124 dicapai pada CP = 0.00352 dengan 9 pemisahan (10
simpul daun). Nilai CP inilah yang digunakan untuk memangkas pohon.
pruned.tree <- prune(fit.tree, cp = bestcp)
pruned.tree
## n= 184
##
## node), split, n, deviance, yval
## * denotes terminal node
##
## 1) root 184 41961210.00 555.9910
## 2) CHits< 439 82 1332171.00 210.5325
## 4) CRBI< 115.5 55 182826.90 143.9939 *
## 5) CRBI>=115.5 27 409807.40 346.0741 *
## 3) CHits>=439 102 22975850.00 833.7125
## 6) RBI< 80.5 77 8627815.00 693.9066
## 12) AtBat< 394.5 32 2133386.00 511.7969
## 24) CHmRun< 124.5 23 702139.20 439.8913 *
## 25) CHmRun>=124.5 9 1008422.00 695.5556 *
## 13) AtBat>=394.5 45 4678518.00 823.4069
## 26) Walks< 77.5 36 1783381.00 759.8836
## 52) Assists>=396 10 363046.00 567.4143 *
## 53) Assists< 396 26 907412.10 833.9102
## 106) CAtBat< 2734 8 35380.47 695.3125 *
## 107) CAtBat>=2734 18 650057.10 895.5092 *
## 27) Walks>=77.5 9 2168800.00 1077.5000 *
## 7) RBI>=80.5 25 8207560.00 1264.3150
## 14) Walks< 52.5 10 923861.40 837.9167 *
## 15) Walks>=52.5 15 4253446.00 1548.5800 *
rpart.plot(pruned.tree, main = "Regression Tree (Setelah Pruning)")
pruned.tree$variable.importance
## CHits CAtBat CRuns CRBI CWalks Years RBI
## 18500616.9 17910232.6 17310681.1 17118827.8 15840199.8 12433265.5 7275415.8
## Walks Runs HmRun PutOuts AtBat Assists CHmRun
## 4607798.2 3762997.0 3729170.8 2931433.2 2655351.6 1725023.9 1724411.9
## Hits Errors
## 1521264.6 909075.8
Setelah pruning dengan CP = 0.00352, jumlah simpul daun berubah dari 13 menjadi 10. Pohon menjadi lebih sederhana dan lebih mudah diinterpretasikan karena cabang yang kurang memberikan perbaikan validasi silang telah dipangkas. Pada pohon hasil pruning, variabel dengan importance tertinggi adalah CHits.
pred.prune <- predict(pruned.tree, newdata = Hitters.test)
mse.prune <- mean((pred.prune - Hitters.test$Salary)^2)
mse.prune
## [1] 118091
# Perbandingan
hasil <- data.frame(
Model = c("Sebelum Pruning", "Setelah Pruning"),
Simpul_Daun = c(n.leaf.full, n.leaf.pruned),
MSE = c(mse.tree, mse.prune),
RMSE = sqrt(c(mse.tree, mse.prune))
)
knitr::kable(hasil, digits = 2, align = "lccc")
| Model | Simpul_Daun | MSE | RMSE |
|---|---|---|---|
| Sebelum Pruning | 13 | 121881.8 | 349.12 |
| Setelah Pruning | 10 | 118091.0 | 343.64 |
Model setelah pruning menghasilkan MSE sebesar
1.18091^{5} dan RMSE 343.64, yang lebih kecil MSE
sebelum pruning (1.218818^{5}). Selisih penurunan MSE sebesar
3790.8 (3.11%) menunjukkan bahwa pemangkasan mengurangi
overfitting sehingga kemampuan generalisasi pada data
testing membaik. Perlu diingat bahwa hasil ini bergantung pada
pembagian data (set.seed) dan ukuran data yang relatif
kecil.
Supervised learning dengan regresi, karena variabel respons yang diprediksi (Salary) berupa nilai numerik. Metode yang sesuai adalah regression tree melalui pendekatan CART, yang membentuk pohon keputusan dengan recursive binary splitting. Pada setiap node, pemisahan dipilih berdasarkan penurunan jumlah kuadrat galat (SSE) terbesar, dan prediksi pada terminal node berupa rata-rata nilai respons dalam wilayah tersebut. Keunggulan utama metode ini adalah strukturnya yang mudah diinterpretasi, mampu menangkap hubungan nonlinier, dan dapat merepresentasikan interaksi antarvariabel tanpa asumsi persamaan linear. Namun, sifat greedy dalam proses pemisahan serta kecenderungan tree yang terlalu kompleks untuk mengalami overfitting menjadi keterbatasan yang perlu dikendalikan.
Untuk mengatasi keterbatasan tersebut, pruning dengan complexity parameter (CP) diperlukan guna memperoleh tree yang lebih sederhana tanpa mengorbankan kemampuan generalisasi pada data baru. Nilai CP sebaiknya dipilih berdasarkan karakteristik data dan hasil validasi silang, bukan sekadar asumsi bahwa tree yang lebih besar atau lebih kecil selalu lebih baik, karena adanya trade-off antara performa dan kompleksitas model. Kinerja model dievaluasi menggunakan Mean Squared Error (MSE), yang memberikan penalti lebih besar terhadap kesalahan prediksi berukuran besar sehingga cocok untuk menilai akurasi pada data yang belum digunakan dalam pembentukan model. Dengan demikian, landasan teori ini mendukung penerapan regression tree CART dengan pruning berbasis CP sebagai pendekatan yang seimbang antara akurasi prediksi dan interpretabilitas dalam memprediksi gaji pemain.
Hasil analisis terhadap dataset Hitters menunjukkan terdapat
59 nilai hilang pada variabel Salary yang ditangani dengan
na.omit(), sehingga tersisa 263 observasi. Data dibagi
menjadi 184 observasi training dan 79 observasi
testing. Tree sebelum pruning memiliki 13
simpul daun dengan variabel CHits sebagai pemisah pertama, dan variabel
paling berpengaruh berdasarkan variable importance adalah
CHits, CAtBat, dan CRuns. CP terbaik sebesar 0.00352 menghasilkan
tree dengan 10 simpul daun. Evaluasi menggunakan MSE pada data
testing menghasilkan nilai 1.218818^{5} sebelum
pruning dan 1.18091^{5} setelah pruning.
Praktikan dapat melakukan pembelajaran lebih lanjut mengenai Machine Learning and modern prediction serta cara interpretasinya agar semakin paham. Dapat dilakukan melalui sumber-sumber belajar lainnya. Dalam penulisan laporan praktikan juga diharapkan untuk selalu teliti dan memperhatikan tata cara penulisan yang baik. Penulis juga berharap kritik dan saran kepada pembaca dan asisten praktikum guna membuat laporan ini menjadi lebih baik.
Fransiska, H. (2026). Modul Praktikum Machine Learning. Universitas Bengkulu
Blockeel, H., Devos, L., Frénay, B., Nanfack, G., & Nijssen, S. (2023). Decision trees: from efficient prediction to responsible AI. In Frontiers in Artificial Intelligence (Vol. 6). https://doi.org/10.3389/frai.2023.1124553
Custode, L. L., & Iacca, G. (2023). Evolutionary Learning of Interpretable Decision Trees. IEEE Access, 11. https://doi.org/10.1109/ACCESS.2023.3236260
Jijo, B. T., & Abdulazeez, A. M. (2021). Classification Based on Decision Tree Algorithm for Machine Learning. Journal of Applied Science and Technology Trends, 2(1). https://doi.org/10.38094/jastt20165
Kim, J., Maathuis, H., & Sent, D. (2024). Human-centered evaluation of explainable AI applications: a systematic review. In Frontiers in Artificial Intelligence (Vol. 7). https://doi.org/10.3389/frai.2024.1456486
Rainio, O., Teuho, J., & Klén, R. (2024). Evaluation metrics and statistical tests for machine learning. Scientific Reports, 14(1). https://doi.org/10.1038/s41598-024-56706-x
Rodrigo, H., Beukes, E. W., Andersson, G., & Manchaiah, V. (2021). Exploratory data mining techniques (decision tree models) for examining the impact of internet-based cognitive behavioral therapy for tinnitus: Machine learning approach. Journal of Medical Internet Research, 23(11). https://doi.org/10.2196/28999
Saarela, M., & Podgorelec, V. (2024). Recent Applications of Explainable AI (XAI): A Systematic Literature Review. In Applied Sciences (Switzerland) (Vol. 14, Number 19). https://doi.org/10.3390/app14198884
Tırınk, C., Piwczyński, D., Kolenda, M., & Önder, H. (2023). Estimation of Body Weight Based on Biometric Measurements by Using Random Forest Regression, Support Vector Regression and CART Algorithms. Animals, 13(5). https://doi.org/10.3390/ani13050798