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).
Berdasarkan latar belakang diatas, adapun rumusan masalah sebagai berikut:
Berdasarkan rumusan, tujuan yang dapat disimpulkan adalah sebagai berikut:
Manfaat yang diperoleh melalui penelitian ini, yaitu:
Bagi penulis:
Bagi pembaca:
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.
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
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).
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:
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:
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).
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.
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:
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:
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.
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.
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.
Berikut merupakan algoritma pengolahan data:
Mulai.
Mengimpor dan membersihkan data.
Melakukan statistik deskriptif.
Membagi data training dan testing.
Membentuk model Regression Tree.
Melakukan evaluasi dan pruning model.
Membandingkan hasil evaluasi model.
Menarik kesimpulan.
Selesai.
##
## 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
## ── 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
## Loading required package: lattice
##
## Attaching package: 'caret'
##
## The following object is masked from 'package:purrr':
##
## lift
## 'data.frame': 322 obs. of 20 variables:
## $ AtBat : int 293 315 479 496 321 594 185 298 323 401 ...
## $ Hits : int 66 81 130 141 87 169 37 73 81 92 ...
## $ HmRun : int 1 7 18 20 10 4 1 0 6 17 ...
## $ Runs : int 30 24 66 65 39 74 23 24 26 49 ...
## $ RBI : int 29 38 72 78 42 51 8 24 32 66 ...
## $ Walks : int 14 39 76 37 30 35 21 7 8 65 ...
## $ Years : int 1 14 3 11 2 11 2 3 2 13 ...
## $ CAtBat : int 293 3449 1624 5628 396 4408 214 509 341 5206 ...
## $ CHits : int 66 835 457 1575 101 1133 42 108 86 1332 ...
## $ CHmRun : int 1 69 63 225 12 19 1 0 6 253 ...
## $ CRuns : int 30 321 224 828 48 501 30 41 32 784 ...
## $ CRBI : int 29 414 266 838 46 336 9 37 34 890 ...
## $ CWalks : int 14 375 263 354 33 194 24 12 8 866 ...
## $ League : Factor w/ 2 levels "A","N": 1 2 1 2 2 1 2 1 2 1 ...
## $ Division : Factor w/ 2 levels "E","W": 1 2 2 1 1 2 1 2 2 1 ...
## $ PutOuts : int 446 632 880 200 805 282 76 121 143 0 ...
## $ Assists : int 33 43 82 11 40 421 127 283 290 0 ...
## $ Errors : int 20 10 14 3 4 25 7 9 19 0 ...
## $ Salary : num NA 475 480 500 91.5 750 70 100 75 1100 ...
## $ NewLeague: Factor w/ 2 levels "A","N": 1 2 1 2 2 1 1 1 2 1 ...
## [1] 322 20
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.
## 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
## [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.
## 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.
# 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.
# 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
## [1] 51 20
## [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.
# 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 *
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
## 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.
# 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.
##
## 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
## [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.
# 11. Pruning Regression Tree
pruned.tree <- prune(fit.tree,cp = bestcp)
# Visualisasi Pohon Setelah Pruning
rpart.plot(pruned.tree)## 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.
# 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.
# 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.
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.