BAB I PENDAHULUAN

1.1 Latar Belakang

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.

1.2 Rumusan Masalah

Berdasarkan latar belakang di atas dapat disimpulkan bahwa rumusan masalah sebagai berikut:

  1. Bagaimana mahasiswa mampu menjelaskan konsep dasar Decision Tree untuk klasifikasi menggunakan metode CART (Classification and Regression Tree)?
  2. Bagaimana mahasiswa mampu membangun model Classification Tree menggunakan algoritma CART?

1.3 Tujuan Penelitian

Berdasarkan rumusan masalah di atas, tujuan penelitian yang dapat disimpulkan sebagai berikut:

  1. Mahasiswa dapat menjelaskan konsep dasar Decision Tree untuk klasifikasi menggunakan metode CART (Classification and Regression Tree).
  2. Mahasiswa dapat membangun model Classification Tree menggunakan algoritma CART.

1.4 Manfaat Penelitian

Adapun manfaat yang didapatkan dari penelitian ini adalah sebagai berikut:

  1. Bagi penulis
    • Memberikan informasi dan pengetahuan mengenai konsep dasar Decision Tree untuk klasifikasi menggunakan metode CART (Classification and Regression Tree) dan dapat membangun model Classification Tree menggunakan algoritma CART.
    • Menerapkan ilmu atau wawasan baru mengenai konsep dasar Decision Tree untuk klasifikasi menggunakan metode CART (Classification and Regression Tree) dan dapat membangun model Classification Tree menggunakan algoritma CART.
  2. Bagi pembaca
    • Menambah ilmu pengetahuan mengenai konsep dasar Decision Tree untuk klasifikasi menggunakan metode CART (Classification and Regression Tree) dan dapat membangun model Classification Tree menggunakan algoritma CART.
    • Dapat menjadi rujukan bagi penelitian selanjutnya.

1.5 Batasan Masalah

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.

1.6 Sistematika Penulisan

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

BAB II TINJAUAN PUSTAKA

2.1 Machine Learning

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.

2.2 Supervised Learning

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).

2.3 Decision Tree

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.

2.4 Classification and Regression Tree (CART)

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.

2.5 Regression Tree

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.

2.6 Mean Squared Error (MSE)

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.

2.7 Complexity Parameter dan Pruning

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.

BAB III METODE PENELITIAN

3.1 Jenis dan Sumber Data

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.

3.2 Variabel Penelitian

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.

3.3 Analisis Data

Langkah-langkah yang digunakan pada penelitian untuk batasan masalah adalah sebagai berikut:

  1. Memanggil dataset Hitters dari package ISLR.
  2. Melakukan pemeriksaan struktur data dan missing value.
  3. Menangani missing value menggunakan fungsi na.omit().
  4. Membagi data menjadi data training dan testing dengan proporsi 70:30.
  5. Membangun regression tree menggunakan algoritma CART dengan method = “anova”.
  6. Memvisualisasikan tree dan menganalisis variabel importance.
  7. Melakukan prediksi dan mengevaluasi model menggunakan MSE.
  8. Menentukan CP terbaik berdasarkan nilai xerror terkecil.
  9. Melakukan pruning pada tree menggunakan CP terbaik.
  10. Melakukan prediksi dan evaluasi ulang menggunakan MSE.
  11. Membandingkan MSE model sebelum dan sesudah pruning.

BAB IV HASIL DAN PEMBAHASAN

4.1 Hasil dan Pembahasan Batasan Masalah

4.1.1 Library dan Data

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.

4.1.2 Pengecekan dan Penanganan Missing Value

# 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.

4.1.3 Splitting Data

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.

4.1.4 Membangun dan Visualisasi Regression Tree

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.

4.1.5 Variable Importance

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.

4.1.6 Prediksi dan Evaluasi Sebelum Pruning

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.

4.1.7 Menentukan CP Terbaik

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.

4.1.8 Pruning

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.

4.1.9 Evaluasi Setelah Pruning

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.

BAB V KESIMPULAN DAN SARAN

5.1 Kesimpulan

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.

5.2 Saran

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.

DAFTAR PUSTAKA

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