BAB I PENDAHULUAN

1.1 Latar Belakang Masalah

Perkembangan teknologi menyebabkan jumlah data yang dihasilkan semakin besar dan beragam. Oleh karena itu, diperlukan metode untuk mengolah data menjadi informasi yang bermanfaat. Salah satu metode yang digunakan adalah data mining, yaitu proses untuk menemukan pola atau informasi dari sekumpulan data. Dalam data mining, klasifikasi digunakan untuk menentukan kelas suatu data berdasarkan atribut yang dimilikinya. Salah satu algoritma yang dapat digunakan untuk melakukan klasifikasi adalah decision tree (Antika dkk., 2023)

Decision tree atau pohon keputusan merupakan metode klasifikasi yang menyajikan hasil pemodelan dalam bentuk struktur pohon. Struktur ini terdiri atas simpul akar (root node), simpul percabangan (branch node), dan simpul daun (leaf node). Simpul akar menjadi titik awal pembentukan pohon, simpul percabangan digunakan untuk membagi data berdasarkan atribut tertentu, sedangkan simpul daun menunjukkan hasil klasifikasi. Dalam pembentukan pohon, pemilihan atribut dilakukan menggunakan kriteria tertentu, seperti entropy dan information gain. (Ma’sum dkk., 2021).

Decision tree memiliki kelebihan berupa struktur yang relatif mudah dipahami dan hasil klasifikasi yang dapat disajikan dalam bentuk aturan keputusan. Metode ini juga membantu melihat atribut yang berperan dalam proses pengelompokan data. Selain itu, beberapa algoritma decision tree dapat digunakan pada data yang memiliki atribut numerik maupun kategorikal. (Permana dkk., 2025).

1.2 Rumusan Masalah

Berdasarkan latar belakang diatas, adapun rumusan masalah sebagai berikut:

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

1.3 Tujuan Penelitian

Berdasarkan rumusan, tujuan yang dapat disimpulkan adalah sebagai berikut:

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

1.4 Manfaat Penelitian

Manfaat yang diperoleh melalui penelitian ini, yaitu:

  1. Bagi penulis:

    1. Menambah pengetahuan dan pemahaman mengenai Decision Tree.
    2. Mampu mengaplikasikan R untuk melakukan metode Decision Tree.
  2. Bagi pembaca:

    1. Menambah ilmu pengetahuan dan pemahaman yang berkaitan Decision Tree dengan R.
    2. Rujukan penelitian selanjutnya.

1.5 Batasan Masalah

Adapun batasan masalah pada penelitian ini dengan menggunakan dataset Hitters dari package ISLR untuk memprediksi Salary menggunakan Decision Tree (Regression Tree). Lakukan pengecekan dan penanganan missing value menggunakan na.omit(), kemudian bagi data menjadi training dan testing. Selanjutnya, bangun dan visualisasikan tree, analisis variable importance, lakukan prediksi dan evaluasi menggunakan MSE, tentukan CP terbaik, lakukan pruning, dan evaluasi kembali model menggunakan MSE.

1.6 Sistematika Penulisan

  Adapun sistematika penulisan dari praktikum ini adalah:

BAB I PENDAHULUAN

Bab ini memuat latar belakang, rumusan masalah, tujuan dan manfaat, batasan masalah dan sistematika penulisan.

BAB II TINJAUAN PUSTAKA

Bab ini merupakan bab yang memuat pengertian dan teori yang diperlukan untuk rancangan penelitian pada bab-bab berikutnya.

BAB III METODE PENELITIAN

Bab ini merupakan bab yang memuat jenis dan sumber data, variabel penelitian, analisis data dan diagram alir yang diperlukan untuk rancangan penelitian pada bab-bab berikutnya.

BAB IV HASIL DAN PEMBAHASAN

Bab ini merupakan bab yang memuat hasil dan pembahasan yang telah dilakukan pada program kemudian diinterpretasikan yang diperlukan untuk rancangan penelitian pada bab-bab berikutnya.

BAB V KESIMPULAN DAN SARAN

Bab ini merupakan bab yang memuat kesimpulan dan saran.

DAFTAR PUSTAKA

LAMPIRAN

BAB II TINJAUAN PUSTAKA

2.1 Decision Tree

Decision Tree merupakan metode supervised learning yang digunakan untuk membentuk aturan prediksi dalam bentuk struktur pohon. Model ini bekerja dengan membagi data secara bertahap berdasarkan variabel prediktor hingga diperoleh kelompok data yang sesuai dengan tujuan pemodelan. Struktur Decision Tree terdiri atas root node sebagai simpul awal, intermediate node sebagai simpul yang masih dapat dibagi, leaf node sebagai simpul akhir yang menghasilkan prediksi, serta branch yang menghubungkan antarsimpul. Pembentukan pohon dilakukan melalui proses pemisahan (splitting) dengan kriteria tertentu untuk memperoleh hasil klasifikasi atau prediksi yang baik (Fransiska, 2026).

Salah satu algoritma dalam Decision Tree adalah Classification and Regression Tree (CART), yang dapat digunakan untuk pemodelan klasifikasi maupun regresi. Klasifikasi digunakan ketika variabel respons berupa kategori, sedangkan regresi digunakan ketika variabel respons berupa nilai numerik. CART membentuk pohon keputusan melalui proses pemisahan data secara bertahap berdasarkan variabel prediktor untuk menghasilkan aturan prediksi sesuai dengan karakteristik data (Zulkifli & Sitorus, 2023).

2.2 Classification Tree

Pada Classification Tree, proses pemisahan data dilakukan dengan memilih aturan yang mampu menghasilkan simpul-simpul yang semakin homogen. Beberapa ukuran yang digunakan dalam proses pemisahan tersebut antara lain Entropy, Information Gain, dan Gini Index. Entropy digunakan untuk mengukur tingkat ketidakpastian atau ketidakmurnian kelas dalam suatu simpul. Semakin kecil nilai Entropy, semakin homogen simpul tersebut. Entropy dirumuskan sebagai berikut (Fransiska, 2026):

\[ \operatorname{Entropy}(t)=-\sum_{k=1}^{K}p_k\log_2(p_k) \]

dengan \(k=1,2,\ldots,K\).

Keterangan:

  • \(t\) = simpul yang diamati.
  • \(K\) = jumlah kelas.
  • \(p_k\) = proporsi pengamatan dari kelas ke-\(k\) dalam simpul.

Apabila seluruh pengamatan dalam suatu simpul berasal dari satu kelas, nilai Entropy sama dengan nol. Sebaliknya, nilai Entropy meningkat ketika proporsi kelas semakin seimbang. Oleh karena itu, ukuran ini dapat digunakan untuk menilai tingkat homogenitas kelas sebelum dan sesudah pemisahan data (Ibrahim & Atim, 2024).

Information Gain merupakan ukuran yang digunakan untuk mengetahui besarnya penurunan Entropy setelah data dipisahkan berdasarkan suatu atribut. Semakin besar penurunan Entropy, semakin baik pemisahan tersebut dalam mengurangi ketidakpastian kelas. Rumus Information Gain adalah sebagai berikut (Fransiska, 2026):

\[ IG(D)=E(D)-\sum_{j=1}^{J}\frac{|D_j|}{|D|}E(D_j) \]

Jika data hanya dibagi menjadi dua bagian, yaitu \(D_1\) dan \(D_2\), rumusnya dapat ditulis sebagai berikut:

\[ \begin{aligned} IG(D)={}&E(D)-\left[ \frac{|D_1|}{|D|}E(D_1)\right.\\ &\left.+\frac{|D_2|}{|D|}E(D_2) \right] \end{aligned} \]

Keterangan:

  • \(E(D)\) = Entropy data sebelum pemisahan.
  • \(E(D_j)\) = Entropy data hasil pemisahan ke-\(j\).
  • \(|D_j|\) = banyaknya pengamatan pada bagian ke-\(j\).
  • \(|D|\) = banyaknya seluruh pengamatan.

Pada algoritma yang menggunakan Information Gain, atribut dengan nilai Information Gain terbesar dipilih sebagai atribut pemisah. Proses ini dilakukan secara berulang pada simpul yang masih dapat dibagi sampai kondisi penghentian terpenuhi (Ibrahim & Atim, 2024).

Gini Index digunakan untuk mengukur tingkat ketidakmurnian kelas dalam suatu simpul. Nilai Gini yang lebih kecil menunjukkan bahwa data dalam simpul semakin homogen. Rumus Gini Index adalah sebagai berikut (Fransiska, 2026):

\[ \operatorname{Gini}(t)=1-\sum_{k=1}^{K}p_k^2 \]

Jika suatu pemisahan membagi data menjadi dua bagian, yaitu \(D_1\) dan \(D_2\), nilai Gini setelah pemisahan dapat dihitung menggunakan rata-rata terbobot berikut:

\[ \operatorname{Gini}_{\text{split}} = \frac{|D_1|}{|D|}\operatorname{Gini}(D_1) + \frac{|D_2|}{|D|}\operatorname{Gini}(D_2) \]

Pemisahan yang menghasilkan nilai Gini gabungan lebih kecil dinilai lebih baik karena mengurangi ketidakmurnian kelas pada simpul yang terbentuk. Indeks Gini merupakan salah satu kriteria pemisahan yang digunakan dalam algoritma CART (Ibrahim & Atim, 2024).

2.3 Regression Tree

Regression Tree digunakan ketika variabel respons berupa nilai numerik kontinu. Proses pembentukan pohon dilakukan dengan membagi data menjadi kelompok-kelompok yang memiliki nilai respons relatif berdekatan. Salah satu ukuran yang dapat digunakan untuk menentukan kualitas pemisahan adalah Mean Squared Error (MSE), yaitu rata-rata kuadrat selisih antara nilai respons aktual dan rata-rata respons dalam suatu simpul. Rumusnya adalah sebagai berikut (Fransiska, 2026):

\[ MSE(t)=\frac{1}{n_t}\sum_{i=1}^{n_t}(y_i-\bar{y}_t)^2 \]

Keterangan:

  • \(t\) = simpul yang diamati.

  • \(n_t\) = banyaknya pengamatan dalam simpul \(t\).

  • \(y_i\) = nilai respons aktual pengamatan ke-\(i\).

  • \(\bar{y}_t\) = rata-rata nilai respons dalam simpul \(t\).

    Pemisahan dipilih apabila menghasilkan penurunan kesalahan atau keragaman nilai respons. Dengan demikian, data dalam setiap simpul diharapkan memiliki nilai respons yang semakin seragam.

2.4 Evaluasi Model

Evaluasi model dilakukan untuk mengetahui kemampuan model dalam menghasilkan prediksi yang sesuai dengan nilai aktual. Pada Classification Tree, evaluasi dapat dilakukan menggunakan confusion matrix, yaitu tabel yang membandingkan kelas aktual dengan kelas hasil prediksi. Berdasarkan tabel tersebut, kinerja model dapat dinilai menggunakan accuracy, precision, recall, specificity, dan F1-score (Agtira dkk., 2023).

Rumus ukuran evaluasi klasifikasi adalah sebagai berikut.

1. Accuracy

\[ \text{Accuracy}=\frac{TP+TN}{TP+TN+FP+FN} \]

2. Precision

\[ \text{Precision}=\frac{TP}{TP+FP} \]

3. Recall

\[ \text{Recall}=\frac{TP}{TP+FN} \]

4. Specificity

\[ \text{Specificity}=\frac{TN}{TN+FP} \]

5. F1-score

\[ F1\text{-score}= 2\times\frac{\text{Precision}\times\text{Recall}} {\text{Precision}+\text{Recall}} \]

Keterangan:

  • \(TP\) (True Positive) = jumlah pengamatan positif yang diprediksi positif.
  • \(TN\) (True Negative) = jumlah pengamatan negatif yang diprediksi negatif.
  • \(FP\) (False Positive) = jumlah pengamatan negatif yang diprediksi positif.
  • \(FN\) (False Negative) = jumlah pengamatan positif yang diprediksi negatif.

Pada Regression Tree, evaluasi dilakukan dengan membandingkan nilai aktual dan nilai prediksi. Ukuran yang dapat digunakan antara lain Mean Squared Error (MSE), Root Mean Squared Error (RMSE), dan koefisien determinasi (\(R^2\)). MSE dan RMSE mengukur besarnya kesalahan prediksi, sedangkan \(R^2\) mengukur proporsi variasi respons yang dapat dijelaskan oleh model (Fransiska, 2026).

1. Mean Squared Error (MSE)

\[ MSE=\frac{1}{n}\sum_{i=1}^{n}(y_i-\hat{y}_i)^2 \]

2. Root Mean Squared Error (RMSE)

\[ RMSE=\sqrt{\frac{1}{n}\sum_{i=1}^{n}(y_i-\hat{y}_i)^2} \]

3. Koefisien Determinasi (\(R^2\))

\[ R^2=1-\frac{\sum_{i=1}^{n}(y_i-\hat{y}_i)^2} {\sum_{i=1}^{n}(y_i-\bar{y})^2} \]

Keterangan:

  • \(n\) = jumlah pengamatan.
  • \(y_i\) = nilai aktual pengamatan ke-\(i\).
  • \(\hat{y}_i\) = nilai prediksi pengamatan ke-\(i\).
  • \(\bar{y}\) = rata-rata nilai aktual.
  • \(\sum_{i=1}^{n}(y_i-\hat{y}_i)^2\) = jumlah kuadrat kesalahan prediksi.
  • \(\sum_{i=1}^{n}(y_i-\bar{y})^2\) = jumlah kuadrat total.

Nilai MSE dan RMSE yang lebih kecil menunjukkan bahwa kesalahan prediksi model semakin rendah. Sementara itu, nilai \(R^2\) yang semakin mendekati 1 menunjukkan bahwa model mampu menjelaskan proporsi variasi respons yang semakin besar.

BAB III METODE PENELITIAN

3.1 Jenis dan Sumber Data

Penelitian ini merupakan penelitian terapan dengan pendekatan kuantitatif. Data yang digunakan adalah data sekunder berupa dataset Hitters yang tersedia dalam package ISLR pada program R. Data tersebut memuat statistik pemain bisbol yang digunakan untuk memprediksi variabel Salary menggunakan metode Regression Tree.

3.2 Variabel Penelitian

Variabel yang digunakan dalam penelitian ini terdiri atas variabel respons dan variabel prediktor. Variabel respons adalah Salary, yaitu gaji pemain bisbol, sedangkan variabel prediktor meliputi AtBat, Hits, HmRun, Runs, RBI, Walks, Years, CAtBat, CHits, CHmRun, CRuns, CRBI, CWalks, League, Division, PutOuts, Assists, Errors, dan NewLeague.

3.3 Langkah-langkah Analisis

Berikut merupakan algoritma pengolahan data:

  1. Mulai.

  2. Mengimpor dan membersihkan data.

  3. Melakukan statistik deskriptif.

  4. Membagi data training dan testing.

  5. Membentuk model Regression Tree.

  6. Melakukan evaluasi dan pruning model.

  7. Membandingkan hasil evaluasi model.

  8. Menarik kesimpulan.

  9. Selesai.

BAB IV HASIL DAN PEMBAHASAN

4.1 Persiapan dan Prepocessing Data

# 1. Library
library(dplyr)
## 
## 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
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ forcats   1.0.1     ✔ readr     2.2.0
## ✔ ggplot2   4.0.3     ✔ stringr   1.6.0
## ✔ lubridate 1.9.5     ✔ tibble    3.3.1
## ✔ purrr     1.2.2     ✔ tidyr     1.3.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(rpart)
library(caret)
## Loading required package: lattice
## 
## Attaching package: 'caret'
## 
## The following object is masked from 'package:purrr':
## 
##     lift
library(rpart.plot)
library(ROCR)
library(ISLR)

4.1.1 Deskripsi Data

# 2. Data
# Mengambil Dataset
data(Hitters)
# Melihat Struktur Data
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 ...
# Melihat Dimensi Data
dim(Hitters)
## [1] 322  20

Interpretasi: Dataset Hitters terdiri atas 322 observasi dqaan 20 variabel yang mencakup daata numerik dan kategorik. Pada variabel Salary masih terdapat nilai yang kosong sehingga perlu dibersihkan sebelum analisis dilakukan.

4.1.2 Pemeriksaan dan Penanganan Missing Value

# 3. Preprocessing Data
# Memeriksa Missing Value
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
# Menghapus Pengamatan dengan Missing Value
Hitters.clean <- na.omit(Hitters)
# Memeriksa Kembali Missing Value
colSums(is.na(Hitters.clean))
##     AtBat      Hits     HmRun      Runs       RBI     Walks     Years    CAtBat 
##         0         0         0         0         0         0         0         0 
##     CHits    CHmRun     CRuns      CRBI    CWalks    League  Division   PutOuts 
##         0         0         0         0         0         0         0         0 
##   Assists    Errors    Salary NewLeague 
##         0         0         0         0
# Melihat Dimensi Data Setelah Preprocessing
dim(Hitters.clean)
## [1] 263  20

Interpretasi: Terdapat 59 data kosong pada variabel Salary.Kemudian data kosong diangani menggunakan na.omit(). Setelah data kosong dihapus, tersisa 263 observasi dan 20 variabel tanpa data kosong.

4.1.3 Statistik Deskriptif

# 4. Eksplorasi Data
# Ringkasan Statistik Dataset
summary(Hitters.clean)
##      AtBat            Hits           HmRun            Runs       
##  Min.   : 19.0   Min.   :  1.0   Min.   : 0.00   Min.   :  0.00  
##  1st Qu.:282.5   1st Qu.: 71.5   1st Qu.: 5.00   1st Qu.: 33.50  
##  Median :413.0   Median :103.0   Median : 9.00   Median : 52.00  
##  Mean   :403.6   Mean   :107.8   Mean   :11.62   Mean   : 54.75  
##  3rd Qu.:526.0   3rd Qu.:141.5   3rd Qu.:18.00   3rd Qu.: 73.00  
##  Max.   :687.0   Max.   :238.0   Max.   :40.00   Max.   :130.00  
##       RBI             Walks            Years            CAtBat       
##  Min.   :  0.00   Min.   :  0.00   Min.   : 1.000   Min.   :   19.0  
##  1st Qu.: 30.00   1st Qu.: 23.00   1st Qu.: 4.000   1st Qu.:  842.5  
##  Median : 47.00   Median : 37.00   Median : 6.000   Median : 1931.0  
##  Mean   : 51.49   Mean   : 41.11   Mean   : 7.312   Mean   : 2657.5  
##  3rd Qu.: 71.00   3rd Qu.: 57.00   3rd Qu.:10.000   3rd Qu.: 3890.5  
##  Max.   :121.00   Max.   :105.00   Max.   :24.000   Max.   :14053.0  
##      CHits            CHmRun           CRuns             CRBI       
##  Min.   :   4.0   Min.   :  0.00   Min.   :   2.0   Min.   :   3.0  
##  1st Qu.: 212.0   1st Qu.: 15.00   1st Qu.: 105.5   1st Qu.:  95.0  
##  Median : 516.0   Median : 40.00   Median : 250.0   Median : 230.0  
##  Mean   : 722.2   Mean   : 69.24   Mean   : 361.2   Mean   : 330.4  
##  3rd Qu.:1054.0   3rd Qu.: 92.50   3rd Qu.: 497.5   3rd Qu.: 424.5  
##  Max.   :4256.0   Max.   :548.00   Max.   :2165.0   Max.   :1659.0  
##      CWalks       League  Division    PutOuts          Assists     
##  Min.   :   1.0   A:139   E:129    Min.   :   0.0   Min.   :  0.0  
##  1st Qu.:  71.0   N:124   W:134    1st Qu.: 113.5   1st Qu.:  8.0  
##  Median : 174.0                    Median : 224.0   Median : 45.0  
##  Mean   : 260.3                    Mean   : 290.7   Mean   :118.8  
##  3rd Qu.: 328.5                    3rd Qu.: 322.5   3rd Qu.:192.0  
##  Max.   :1566.0                    Max.   :1377.0   Max.   :492.0  
##      Errors           Salary       NewLeague
##  Min.   : 0.000   Min.   :  67.5   A:141    
##  1st Qu.: 3.000   1st Qu.: 190.0   N:122    
##  Median : 7.000   Median : 425.0            
##  Mean   : 8.593   Mean   : 535.9            
##  3rd Qu.:13.000   3rd Qu.: 750.0            
##  Max.   :32.000   Max.   :2460.0

Interpretasi: Statistik deskriptif menunjukkan menunjukkan bahwa variabel Salary memiliki nilai minimum 67,5, maksimum 2.460, dan rata-rata 535,9. Variabel lainnya, seperti AtBat, Hits, HmRun, dan Years, juga memiliki nilai yang bervariasi antar pemain.

4.2 Pembagian Data Training dan Testing

4.2.1 Penentuan Variabel Respons dan Prediktor

# 5. Pemisahan Variabel Respons dan Prediktor
Hitters.R <- Hitters.clean
# Variabel Respons
Y <- Hitters.R$Salary
# Variabel Prediktor
X <- Hitters.R[, names(Hitters.R) != "Salary"]
# Memeriksa Tipe Data Variabel Respons
class(Y)
## [1] "numeric"

Interpretasi: Variabel respons yang digunakan adalah Salary, sedangkan variabel lainnya menjadi prediktor. Variabel Salary bertipe data numerik.

4.2.2 Pembagian Data Training dan Testing

# Memeriksa Dimensi Data Training dan 
# 6. Pembagian Data Training dan Testing
set.seed(234)
train <- createDataPartition(
  Y,
  p = 0.8,
  list = FALSE
)
Hitters.train <- Hitters.R[train, ]
Hitters.test <- Hitters.R[-train, ]

# Memeriksa Dimensi Data Training dan Testing
dim(Hitters.train)
## [1] 212  20
dim(Hitters.test)
## [1] 51 20
# Variabel Respons Data Testing
Salary.test <- Hitters.test$Salary
Salary.test
##  [1]   70.000  100.000 1100.000  550.000  700.000  175.000  900.000   67.500
##  [9]  180.000  815.000  875.000  675.000  415.000  450.000  300.000  375.000
## [17] 1500.000  900.000  200.000  175.000  250.000  600.000  200.000  657.000
## [25]  155.000  640.000 1043.333  725.000  202.500  525.000  145.000   90.000
## [33]  550.000  137.000  875.000  800.000  200.000  450.000  300.000 1670.000
## [41]  500.000  190.000  250.000  140.000  350.000  925.000  185.000  286.667
## [49]  500.000  385.000  960.000

Interpretasi: Data dibagi menjadi 80% data training sebanyak 212 observasi dan 20% data testing sebanyak 51 observasi. Variabel Salary.test digunakan sebagai nilai aktual untuk mengevaluasi hasil prediksi.

4.3 Pembentukan Model Regression Tree

4.3.1 Pembentukan Model Awal & Visualisasi Pohon Regresi

# 7. Pembentukan dan Visualisasi Regression Tree
set.seed(234)
fit.tree <- rpart(
  Salary ~ .,
  data = Hitters.train,
  method = "anova",
  cp = 0.008
)
# Menampilkan Model
fit.tree
## n= 212 
## 
## node), split, n, deviance, yval
##       * denotes terminal node
## 
##   1) root 212 46453330.0  544.9977  
##     2) CRBI< 307.5 124  9065008.0  309.6062  
##       4) CAtBat< 1428 79  4910701.0  201.3143  
##         8) RBI>=16.5 72   561989.7  169.0069 *
##         9) RBI< 16.5 7  3500575.0  533.6190 *
##       5) CAtBat>=1428 45  1601443.0  499.7185 *
##     3) CRBI>=307.5 88 20836090.0  876.6857  
##       6) AtBat< 424 32  2174114.0  543.1250  
##        12) CHmRun< 122.5 21   777955.4  453.5318 *
##        13) CHmRun>=122.5 11   905784.7  714.1666 *
##       7) AtBat>=424 56 13067050.0 1067.2920  
##        14) CHmRun< 256.5 47  6300814.0  964.6910  
##          28) Walks< 68.5 37  3302243.0  863.0534  
##            56) Assists>=236.5 11   324834.5  645.1948 *
##            57) Assists< 236.5 26  2234440.0  955.2243  
##             114) Runs< 78.5 19   760675.3  860.8772 *
##             115) Runs>=78.5 7   845580.2 1211.3100 *
##          29) Walks>=68.5 10  1202151.0 1340.7500 *
##        15) CHmRun>=256.5 9  3687698.0 1603.0960 *
# Visualisasi Pohon Regresi
rpart.plot(fit.tree)

Interpretas Pohon regresi membagi data berdasarkan variabel yang paling berpengaruh terhadap Salary, yaitu CRBI, CAtBat, RBI, AtBat, dan variabel lainnya. Nilai prediksi Salary pada setiap simpul akhir (terminal node) berbeda-beda, mulai dari 169,01 hingga 1.603,10, sesuai dengan karakteristik pemain pada masing-masing kelompok. Pohon keputusan regresi digunakan untuk memprediksi Salary pemain bisbol berdasarkan statistik kinerjanya. Pada simpul awal, rata-rata Salary sebesar 545 mencakup 100% data. Pembagian pertama berdasarkan CRBI < 308 menghasilkan dua kelompok, yaitu cabang kiri dengan kondisi terpenuhi sebanyak 58% data dan rata-rata Salary 310, serta cabang kanan dengan kondisi tidak terpenuhi sebanyak 42% data dan rata-rata 877. Pembagian dilanjutkan menggunakan variabel CAtBat, RBI, AtBat, CHmRun, Walks, Assists, dan Runs hingga terbentuk 10 kelompok akhir. Nilai prediksi terendah sebesar 169 mencakup 34% data, yaitu pemain dengan CRBI < 308, CAtBat < 1.428, dan RBI >= 17. Sementara itu, nilai prediksi tertinggi sebesar 1.603 mencakup 4% data, yaitu pemain dengan CRBI >= 308, AtBat >= 424, dan CHmRun >= 257

4.3.2 Analisis Variable Importance

# 8. Analisis Variable Importance
fit.tree$variable.importance
##       CRBI     CAtBat      CRuns      CHits     CHmRun     CWalks       Hits 
## 20963759.9 18154439.2 17901481.9 17234107.6 15365794.7 15322273.2  5877951.5 
##      AtBat       Runs      Walks        RBI      HmRun      Years    Assists 
##  5864147.5  5717190.1  5245870.7  4789027.7  2502404.0  1304797.4   922610.7 
##     Errors    PutOuts 
##   405255.6   179642.1

Interpretasi: Hasil analisis variable importance menunjukkan bahwa CRBI merupakan variabel paling penting dalam memprediksi Salary, dengan nilai sebesar 20.963.759,9. Variabel berikutnya yang berpengaruh adalah CAtBat, CRuns, CHits, dan CHmRun. Sementara itu, PutOuts memiliki nilai kepentingan terendah sebesar 179.642,1.

4.4 EValauasi dan Optimalisasi Model

4.4.1 Evaluasi Model Awal

# 9. Prediksi dan Evaluasi Model Awal
pred.tree <- predict(fit.tree,newdata = Hitters.test)

# Menghitung Mean Squared Error (MSE)
mse.tree <- mean((Salary.test - pred.tree)^2)
mse.tree
## [1] 71929.42

Interpretasi: Model pohon regresi menghasilkan nilai MSE sebesar 71.929,42 pada data testing. Nilai ini menunjukkan rata-rata kuadrat selisih antara Salary aktual dan hasil prediksi model.

4.4.2 Penentuan Complexity Parameter (CP) Terbaik

# 10. Menentukan CP Terbaik
printcp(fit.tree)
## 
## Regression tree:
## rpart(formula = Salary ~ ., data = Hitters.train, method = "anova", 
##     cp = 0.008)
## 
## Variables actually used in tree construction:
## [1] Assists AtBat   CAtBat  CHmRun  CRBI    RBI     Runs    Walks  
## 
## Root node error: 46453326/212 = 219119
## 
## n= 212 
## 
##          CP nsplit rel error  xerror    xstd
## 1  0.356319      0   1.00000 1.00497 0.15259
## 2  0.120442      1   0.64368 0.70937 0.11899
## 3  0.066272      2   0.52324 0.73272 0.12377
## 4  0.054955      3   0.45697 0.76823 0.13343
## 5  0.038672      4   0.40201 0.74092 0.13772
## 6  0.018258      5   0.36334 0.71401 0.13502
## 7  0.015994      6   0.34508 0.75164 0.13472
## 8  0.013523      7   0.32909 0.75405 0.13402
## 9  0.010556      8   0.31557 0.75791 0.13465
## 10 0.008000      9   0.30501 0.75797 0.13670
bestcp <- fit.tree$cptable[
  which.min(fit.tree$cptable[, "xerror"]),"CP"]
bestcp
## [1] 0.1204419

Interpretasi: Berdasarkan hasil validasi silang, nilai CP terbaik adalah 0,1204419 dengan jumlah pemisahan sebanyak 1 karena menghasilkan nilai xerror terkecil sebesar 0,70937.

4.4.3 Pruning Pohon Regresi

# 11. Pruning Regression Tree
pruned.tree <- prune(fit.tree,cp = bestcp)

# Visualisasi Pohon Setelah Pruning
rpart.plot(pruned.tree)

# Variable Importance Setelah Pruning
pruned.tree$variable.importance
##     CRBI   CAtBat    CHits    CRuns   CWalks   CHmRun 
## 16552225 14107010 14107010 13166543 12037982 11661795

Intrerpretasi Setelah pruning, variabel CRBI memiliki tingkat kepentingan tertinggi sebesar 16.552.225, diikuti oleh CAtBat sebesar 14.107.010. Sementara itu, CHits, CRuns, CWalks, dan CHmRun juga berperan dalam memprediksi Salary.

Berdasarkan pohon dapat dilihat bahwa simpul utama menunjukkan bahwa rata-rata Salary seluruh pemain adalah 545 atau mencakup 100% data. Pembagian pertama menggunakan variabel CRBI < 308. Cabang kiri dengan kondisi yes mencakup 58% data dan memiliki rata-rata Salary sebesar 310, sedangkan cabang kanan dengan kondisi no mencakup 42% data dan memiliki rata-rata Salary sebesar 877. Hasil ini menunjukkan bahwa pemain dengan CRBI minimal 308 cenderung memiliki Salary lebih tinggi.

4.4.4 Evaluasi Model Setelah Pruning

# 12. Prediksi dan Evaluasi Model Setelah Pruning
pred.prune <- predict(
  pruned.tree,
  newdata = Hitters.test)

# Menghitung MSE Setelah Pruning
mse.prune <- mean((Salary.test - pred.prune)^2)
mse.prune
## [1] 80022.51

Interpretasi: Nilai MSE setelah pruning sebesar 80.022,51, lebih tinggi dibandingkan MSE model awal sebesar 71.929,42. Hal ini menunjukkan bahwa pruning membuat kesalahan prediksi pada data testing meningkat, sehingga model awal memberikan hasil prediksi yang lebih baik berdasarkan nilai MSE.

4.5 Perbandinga Model

# 13. Perbandingan MSE Sebelum dan Sesudah Pruning
hasil.mse <- data.frame(
  Model = c(
    "Regression Tree",
    "Regression Tree setelah Pruning"),
  MSE = c(mse.tree, mse.prune))
hasil.mse
##                             Model      MSE
## 1                 Regression Tree 71929.42
## 2 Regression Tree setelah Pruning 80022.51

Interpretasi: Berdasarkan perbandingan nilai MSE, Regression Tree sebelum pruning memiliki MSE sebesar 71.929,42, sedangkan setelah pruning sebesar 80.022,51. Dengan demikian, model sebelum pruning menghasilkan prediksi yang lebih baik karena memiliki nilai MSE yang lebih rendah.

BAB V KESIMPULAN

5.1 Kesimpulan

Decision Tree untuk klasifikasi menggunakan metode CART merupakan metode yang membagi data berdasarkan variabel prediktor hingga terbentuk kelompok kelas yang homogen. Pemisahan dilakukan secara bertahap menggunakan Gini Index untuk menentukan pembagian terbaik. Hasilnya disajikan dalam bentuk pohon keputusan yang digunakan untuk memprediksi kelas suatu pengamatan.

Model Classification Tree dibangun dengan menentukan variabel pemisah terbaik berdasarkan kriteria CART. Data kemudian dibagi menjadi beberapa cabang hingga terbentuk simpul akhir yang menunjukkan hasil klasifikasi. Kinerja model dievaluasi menggunakan ukuran evaluasi klasifikasi untuk mengetahui ketepatan prediksi.

Berdasarkan analisis data Hitters, dilakukan preprocessing dengan menghapus 59 data kosong pada variabel Salary, sehingga tersisa 263 observasi dan 20 variabel. Data kemudian dibagi menjadi 212 observasi untuk data training dan 51 observasi untuk data testing. Pembentukan model Regression Tree menunjukkan bahwa CRBI merupakan variabel paling penting dalam memprediksi Salary, dengan nilai CP terbaik sebesar 0,1204419 berdasarkan validasi silang. Evaluasi model menghasilkan MSE sebesar 71.929,42 sebelum pruning dan 80.022,51 setelah pruning. Dengan demikian, model Regression Tree sebelum pruning memberikan hasil prediksi yang lebih baik pada data testing karena memiliki nilai MSE yang lebih rendah dibandingkan model setelah pruning.

DAFTAR PUSTAKA

  1. Agtira, dkk. (2023). [Judul dan metadata artikel perlu disesuaikan dengan halaman jurnal]. REMIK: Riset dan E-Jurnal Manajemen Informatika Komputer, 7(1), 704–712.
  2. Antika, R., Rifa’i, A., Dikananda, F., Efendi, D. I., & Narasati, R. (2023). Penerapan algoritma decision tree berbasis pohon keputusan dalam klasifikasi penyakit jantung. JATI (Jurnal Mahasiswa Teknik Informatika), 7(6), 3688–3692.
  3. Fransiska, H. (2026). Machine learning and modern prediction. Laboratorium Matematika dan Ilmu Pengetahuan Alam, Universitas Bengkulu.
  4. Ibrahim, M. Y. I., & Atim, S. B. (2024). Klasifikasi level obesitas menggunakan Decision Tree C4.5 dalam menentukan akurasi pada kriteria Information Gain, Gain Ratio, Gini Index. JIKI (Jurnal Ilmu Komputer dan Informatika, 5(2).
  5. Ma’sum, J., Febriani, A., & Rachmawaty, D. (2021). Penerapan metode klasifikasi decision tree untuk memprediksi kelulusan tepat waktu. Journal of Industrial Engineering and Technology (Jointech) Universitas Muria Kudus, 2(1), 1–14.
  6. Permana, R. K., Senubekti, M. A., Anggraini, N., & Usman, M. S. (2025). Prediksi kelulusan mahasiswa dengan menggunakan algoritma decision tree. JATI (Jurnal Mahasiswa Teknik Informatika), 9(5), 7744–7751.
  7. Zulkifli, & Sitorus, B. (2023). Sistem cerdas untuk penentuan pohon keputusan bakat dan minat anak menggunakan algoritma Classification and Regression Tree (CART). SENTRI: Jurnal Riset Ilmiah. Fransiska, H. (2026). Machine learning and modern prediction. Laboratorium Matematika dan Ilmu Pengetahuan Alam, Universitas Bengkulu.