BAB 1 PENDAHULUAN

1.1 Latar Belakang

Perkembangan machine learning mendorong penggunaan berbagai metode untuk membantu proses klasifikasi dan prediksi berdasarkan data. Salah satu metode yang dapat digunakan adalah Random Forest, yaitu metode ensemble learning yang menggabungkan hasil dari sejumlah decision tree untuk menghasilkan prediksi akhir. Metode ini dapat digunakan untuk klasifikasi maupun regresi serta memiliki kemampuan yang baik dalam mempelajari pola data (Akbar & Sanjaya, 2023).

Meskipun Random Forest telah banyak digunakan, pengembangan metode berbasis pohon keputusan tetap dilakukan untuk meningkatkan kemampuan model dalam menangkap pola data. Salah satu metode yang dapat dipelajari adalah Double Random Forest (DRF), yang menggunakan seluruh data pelatihan untuk membangun setiap pohon dan menerapkan pengambilan sampel bootstrap pada setiap simpul untuk menentukan pemisahan. Perbandingan kedua metode tersebut penting untuk memahami perbedaan proses pembentukan pohon dan kinerja prediksi yang dihasilkan (Fitrianto dkk., 2024).

Berdasarkan Modul Praktikum Pertemuan V, praktikum ini membahas implementasi Random Forest dan Double Random Forest pada permasalahan klasifikasi dan regresi. Kinerja model dievaluasi menggunakan accuracy, precision, recall, specificity, dan F1-score untuk klasifikasi, serta MSE, RMSE, MAE, dan \(R^2\) untuk regresi. Selain itu, Out-of-Bag (OOB) error digunakan sebagai evaluasi internal model dan variable importance digunakan untuk mengetahui tingkat kepentingan prediktor. Melalui praktikum ini, mahasiswa diharapkan mampu membangun model, mengevaluasi hasil prediksi, dan membandingkan kinerja kedua metode berdasarkan hasil analisis (Fransiska, 2026).

1.2 Rumusan Masalah

Rumusan masalah yang dapat disimpulkan adalah sebagai berikut: 1. Bagaimana memahami Random Forest dan Double Random Forest sebagai metode ensemble berbasis decision tree?

  1. Bagaimana mengimplementasikan Random Forest untuk klasifikasi dan regresi, serta Double Random Forest untuk klasifikasi dan regresi?

  2. Bagaimana mengevaluasi performa model, memahami Out-of-Bag (OOB) error, dan membandingkan Random Forest dengan Double Random Forest?

1.3 Tujuan Praktikum

Tujuan dari praktikum ini adalah sebagai berikut: 1. Mahasiswa dapat memahami Random Forest dan Double Random Forest sebagai metode ensemble berbasis decision tree?

  1. Mahasiswa dapat mengimplementasikan Random Forest untuk klasifikasi dan regresi, serta Double Random Forest untuk klasifikasi dan regresi?

  2. Mahasiswa dapat mengevaluasi performa model, memahami Out-of-Bag (OOB) error, dan membandingkan Random Forest dengan Double Random Forest?

1.4 Batasan Masalah

Batasan masalah pada praktikum ini adalah lakukan Random Forest Regression pada data Friedman. Bandingkan mtry = 2, 3, dan 5 dengan num.trees = 200, 500, dan 1000. Bandingkan performa data testing berdasarkan MSE, RMSE, MAE, R2, residual plot, dan variable importance. Tampilkan pula OOB MSE sebagai evaluasi internal model.

BAB 2 TINJAUAN PUSTAKA

2.1 Random Forest dan Double Random Forest

Ensemble learning merupakan pendekatan pembelajaran mesin yang menggabungkan beberapa model untuk menghasilkan prediksi yang lebih baik. Salah satu metode yang menggunakan pendekatan ini adalah Random Forest, yaitu metode berbasis decision tree yang membangun banyak pohon keputusan dan menggabungkan hasil prediksinya. Random Forest merupakan pengembangan dari bagging (Bootstrap Aggregating), tetapi memiliki perbedaan berupa pemilihan sejumlah prediktor secara acak pada setiap simpul. Pengacakan tersebut bertujuan mengurangi korelasi antar-pohon sehingga penggabungan hasil prediksi menjadi lebih efektif (Khairunnisa dkk., 2024).

Proses pembentukan Random Forest diawali dengan mengambil sampel bootstrap, yaitu sampel acak dengan pengembalian dari data pelatihan. Selanjutnya, pada setiap simpul dipilih sejumlah prediktor secara acak berdasarkan parameter mtry, kemudian ditentukan pemisahan terbaik dari prediktor yang terpilih. Proses tersebut diulang hingga terbentuk sejumlah pohon sesuai parameter num.trees. Pada klasifikasi, hasil prediksi akhir ditentukan melalui suara terbanyak (majority voting), sedangkan pada regresi diperoleh melalui rata-rata prediksi seluruh pohon. Dengan demikian, Random Forest termasuk metode ensemble yang membangun pohon secara relatif independen atau paralel (Khairunnisa dkk., 2024).

Rumus prediksi Random Forest untuk klasifikasi adalah sebagai berikut.

\[ \hat{y}(x)=\operatorname{mode} \{T_1(x),T_2(x),\ldots,T_B(x)\} \]

Sementara itu, rumus prediksi Random Forest untuk regresi adalah sebagai berikut.

\[ \hat{f}(x)=\frac{1}{B}\sum_{b=1}^{B}T_b(x) \]

Keterangan:

  • \(\hat{y}(x)\) adalah kelas hasil prediksi.
  • \(\hat{f}(x)\) adalah nilai prediksi regresi.
  • \(T_b(x)\) adalah hasil prediksi pohon ke-\(b\).
  • \(B\) adalah jumlah pohon yang dibentuk.
  • \(\operatorname{mode}\) menunjukkan kelas yang paling sering muncul.

Double Random Forest (DRF) merupakan pengembangan Random Forest yang bertujuan mengatasi kondisi underfitting, yaitu ketika model belum mampu menangkap pola data secara memadai. Pada Random Forest standar, setiap pohon dibentuk menggunakan sampel bootstrap yang diambil pada awal pembentukan pohon. Sebaliknya, DRF memulai setiap pohon dengan seluruh data pelatihan, sedangkan bootstrap sampling dilakukan pada setiap simpul untuk menentukan pemisahan terbaik. Setelah pemisahan ditentukan, aturan tersebut diterapkan pada data asli yang mencapai simpul dan observasi diteruskan ke simpul berikutnya. Penelitian Purwanto dkk. (2025) menunjukkan bahwa DRF dapat membantu mengatasi underfitting pada data angka putus sekolah, meskipun perbedaan kinerja kedua metode relatif kecil ketika model Random Forest telah sesuai dengan data.

Prediksi akhir DRF juga menggunakan majority voting untuk klasifikasi dan rata-rata prediksi untuk regresi. Perbedaan utama kedua metode terletak pada proses pembentukan pohon, bukan pada cara menggabungkan prediksi akhirnya. Penggunaan seluruh data pelatihan pada setiap pohon DRF memungkinkan pembentukan pohon yang lebih besar, tetapi proses bootstrap yang berulang pada setiap simpul dapat meningkatkan waktu komputasi. Oleh karena itu, perbandingan Random Forest dan DRF diperlukan untuk mengetahui metode yang lebih sesuai dengan karakteristik data dan tujuan analisis (Purwanto dkk., 2025).

2.2 Parameter Model, OOB Error, dan Evaluasi Kinerja

Pembentukan Random Forest dan DRF melibatkan beberapa parameter yang memengaruhi kompleksitas pohon dan kinerja prediksi. Parameter num.trees atau ntree menentukan jumlah pohon yang dibentuk, sedangkan mtry menentukan banyaknya prediktor yang dipilih secara acak pada setiap simpul. Parameter min.node.size atau nodesize mengatur jumlah minimum observasi pada simpul terminal. Selain itu, replace dan sample.fraction mengatur mekanisme pengambilan sampel, splitrule menentukan aturan pemisahan, sedangkan importance mengatur perhitungan kepentingan variabel. Pemilihan parameter yang tepat diperlukan agar model dapat menghasilkan prediksi yang baik dan sesuai dengan karakteristik data (Purwanto dkk., 2025).

Random Forest juga memiliki ukuran evaluasi internal yang disebut Out-of-Bag (OOB) error. Pada pengambilan sampel bootstrap berukuran \(n\) dari \(n\) observasi, rata-rata proporsi observasi unik yang terpilih mendekati 63,2%, sedangkan sekitar 36,8% observasi tidak terpilih untuk membentuk suatu pohon. Observasi yang tidak terpilih tersebut disebut Out-of-Bag observations dan dapat diprediksi menggunakan pohon yang tidak menggunakannya selama pelatihan. OOB error digunakan untuk memperkirakan kesalahan prediksi internal model tanpa harus membentuk data validasi khusus untuk setiap pohon (Fransiska, 2026).

Untuk regresi, OOB MSE dapat dituliskan sebagai berikut.

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

Keterangan:

  • \(n\) adalah jumlah observasi.
  • \(y_i\) adalah nilai aktual observasi ke-\(i\).
  • \(\hat{y}_{i,OOB}\) adalah prediksi OOB untuk observasi ke-\(i\).

Pada klasifikasi, OOB error menunjukkan proporsi observasi yang salah diklasifikasikan, sedangkan pada regresi OOB error menunjukkan nilai MSE. Nilai OOB error yang lebih kecil menunjukkan kesalahan prediksi internal yang lebih rendah. Meskipun demikian, evaluasi menggunakan data pengujian tetap diperlukan untuk menilai kemampuan model pada observasi yang tidak digunakan dalam proses pelatihan (Fransiska, 2026).

Evaluasi klasifikasi dapat dilakukan menggunakan confusion matrix yang terdiri atas empat komponen, yaitu True Positive (TP), True Negative (TN), False Positive (FP), dan False Negative (FN). Komponen tersebut digunakan untuk menghitung accuracy, precision, recall, specificity, dan F1-score. Rumus masing-masing ukuran evaluasi adalah sebagai berikut.

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

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

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

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

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

Accuracy mengukur proporsi prediksi yang benar secara keseluruhan, precision mengukur ketepatan prediksi kelas positif, dan recall mengukur kemampuan model mengenali observasi positif. Sementara itu, specificity mengukur kemampuan mengenali kelas negatif dan F1-score merupakan rata-rata harmonik antara precision dan recall. Nilai ukuran tersebut umumnya semakin baik jika semakin mendekati satu, tetapi interpretasinya perlu mempertimbangkan keseimbangan kelas pada data (Khairunnisa dkk., 2024).

Pada regresi, evaluasi dilakukan dengan membandingkan nilai aktual dan nilai prediksi menggunakan MSE, RMSE, MAE, serta koefisien determinasi (\(R^2\)). Rumus ukuran evaluasi regresi adalah sebagai berikut.

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

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

\[ MAE=\frac{1}{n}\sum_{i=1}^{n}|y_i-\hat{y}_i| \]

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

Keterangan:

  • \(y_i\) adalah nilai aktual observasi ke-\(i\).
  • \(\hat{y}_i\) adalah nilai prediksi observasi ke-\(i\).
  • \(\bar{y}\) adalah rata-rata nilai aktual.
  • \(n\) adalah jumlah observasi.

MSE mengukur rata-rata kuadrat kesalahan, RMSE merupakan akar kuadrat MSE, sedangkan MAE mengukur rata-rata nilai absolut kesalahan prediksi. Nilai MSE, RMSE, dan MAE yang lebih kecil menunjukkan kesalahan prediksi yang lebih rendah, sedangkan nilai \(R^2\) yang lebih besar umumnya menunjukkan kemampuan model yang lebih baik dalam menjelaskan variasi variabel respons. Selain ukuran tersebut, variable importance digunakan untuk mengetahui kepentingan relatif setiap prediktor dalam model. Informasi ini membantu proses interpretasi, tetapi tidak secara langsung membuktikan hubungan sebab-akibat antarvariabel (Purwanto dkk., 2025; Khairunnisa dkk., 2024).

2.3 Implementasi dan Perbandingan Model di R

Implementasi Random Forest dan DRF dapat dilakukan untuk permasalahan klasifikasi maupun regresi menggunakan bahasa pemrograman R. Berdasarkan (Fransiska, 2026), Random Forest diimplementasikan menggunakan paket ranger, dengan data BreastCancer untuk klasifikasi dan data simulasi Friedman untuk regresi. Tahapan analisis meliputi persiapan data, pembagian data pelatihan dan pengujian, pembentukan model, prediksi, evaluasi, visualisasi, dan interpretasi hasil. Untuk klasifikasi, model dievaluasi menggunakan confusion matrix, accuracy, precision, recall, specificity, F1-score, dan variable importance. Untuk regresi, evaluasi dilakukan menggunakan MSE, RMSE, MAE, \(R^2\), residual plot, dan variable importance (Fransiska, 2026).

Perbandingan kinerja model dilakukan dengan menguji beberapa kombinasi parameter. Dalam modul, perbandingan Random Forest untuk klasifikasi dan regresi menggunakan mtry sebesar 2, 3, dan 5 serta jumlah pohon sebanyak 200, 500, dan 1.000. OOB error juga digunakan sebagai evaluasi internal model. Sementara itu, implementasi DRF dan perbandingan langsung antara RF dan DRF mengikuti sintaks tambahan yang disediakan dalam modul. Hasil evaluasi selanjutnya digunakan untuk menentukan model yang memberikan kinerja lebih baik berdasarkan ukuran evaluasi yang sesuai dengan jenis analisis. Dengan demikian, praktikum ini tidak hanya membahas pembentukan model, tetapi juga pemilihan parameter, evaluasi prediksi, dan interpretasi hasil (Fransiska, 2026).

BAB 3 METODE PENELITIAN

3.1 Jenis dan Sumber Data

Jenis data yang digunakan dalam penelitian kali ini merupakan data kuantitatif. Data kuantitatif adalah data yang berbentuk angka dan dapat dianalisis menggunakan metode statistik. Penelitian ini menggunakan data Friedman yang digunakan untuk melakukan pemodelan Random Forest Regression serta membandingkan kinerja model berdasarkan kombinasi parameter mtry dan num.trees.

Sumber data penelitian ini adalah data simulasi Friedman yang digunakan dalam praktikum Random Forest dan Double Random Forest. Data tersebut digunakan untuk membentuk model, melakukan prediksi pada data testing, serta mengevaluasi kinerja model berdasarkan nilai MSE, RMSE, MAE, R², residual plot, dan variable importance. Selain itu, nilai OOB MSE digunakan sebagai evaluasi internal model.

3.2 Variabel Data

Variabel penelitian adalah sesuatu yang menjadi fokus perhatian yang memberikan pengaruh dan mempunyai nilai. Variabel penelitian pada batasan masalah ini terdiri atas variabel respons (Y) dan variabel prediktor (X). Variabel respons merupakan variabel yang diprediksi oleh model, sedangkan variabel prediktor merupakan variabel yang digunakan untuk menjelaskan atau memprediksi nilai respons. Pada data Friedman, variabel respons berupa nilai Y, sedangkan variabel prediktor berupa X1, X2, dan seterusnya sesuai dengan variabel yang tersedia dalam dataset. Pemodelan dilakukan menggunakan kombinasi parameter mtry sebesar 2, 3, dan 5 serta num.trees sebesar 200, 500, dan 1.000 untuk membandingkan kinerja model.

3.3 Analisis Data

Analisis data pada penelitian ini dilakukan melalui tahapan sebagai berikut.

  1. Persiapan Data

    Data Friedman disiapkan untuk pemodelan Random Forest Regression. Selanjutnya, dilakukan pemeriksaan struktur data, tipe variabel, dan keberadaan missing value. Variabel respons (Y) dan variabel prediktor (X) ditentukan berdasarkan struktur data Friedman.

  2. Pembagian Data

    Data dibagi menjadi data pelatihan (training data) dan data pengujian (testing data). Data pelatihan digunakan untuk membentuk model, sedangkan data pengujian digunakan untuk mengevaluasi kemampuan prediksi model.

  3. Pembentukan Model Random Forest Regression

    Model dibentuk menggunakan sembilan kombinasi parameter, yaitu mtry sebesar 2, 3, dan 5 serta num.trees sebesar 200, 500, dan 1.000. Parameter mtry menunjukkan jumlah prediktor yang dipertimbangkan secara acak pada setiap pemisahan simpul, sedangkan num.trees menunjukkan jumlah pohon yang dibentuk dalam model.

  4. Evaluasi Internal Model

    Setiap model dievaluasi menggunakan Out-of-Bag Mean Squared Error (OOB MSE). OOB MSE digunakan untuk mengukur kesalahan prediksi internal model berdasarkan observasi yang tidak digunakan dalam pembentukan pohon tertentu. Nilai OOB MSE yang lebih kecil menunjukkan kesalahan prediksi internal yang lebih rendah.

  5. Prediksi Data Testing

    Model yang telah terbentuk digunakan untuk memprediksi nilai variabel respons pada data pengujian. Hasil prediksi kemudian dibandingkan dengan nilai aktual untuk mengetahui kemampuan model dalam memprediksi data pengujian.

  6. Evaluasi Kinerja Model

    Kinerja setiap model pada data pengujian dievaluasi menggunakan MSE, RMSE, MAE, dan R². Nilai MSE, RMSE, dan MAE yang lebih kecil menunjukkan kesalahan prediksi yang lebih rendah, sedangkan nilai R² yang lebih besar umumnya menunjukkan kemampuan model yang lebih baik dalam menjelaskan variasi variabel respons.

  7. Analisis Residual Plot

    Residual plot dibuat berdasarkan selisih antara nilai aktual dan nilai prediksi pada data pengujian. Grafik ini digunakan untuk melihat pola kesalahan prediksi. Residual yang menyebar secara acak di sekitar nol tanpa pola tertentu menunjukkan tidak adanya pola sistematis yang jelas pada kesalahan prediksi.

  8. Analisis Variable Importance

    Variable importance dianalisis untuk mengetahui tingkat kepentingan relatif setiap variabel prediktor dalam model. Hasilnya disajikan dalam bentuk tabel atau grafik untuk mengetahui variabel yang memiliki tingkat kepentingan relatif lebih tinggi.

  9. Perbandingan dan Interpretasi Model

    Hasil dari sembilan kombinasi parameter dibandingkan berdasarkan MSE, RMSE, MAE, R², dan OOB MSE. Perbandingan juga didukung oleh residual plot dan variable importance. Selanjutnya, ditentukan model dengan kinerja terbaik berdasarkan hasil evaluasi pada data pengujian dan dilakukan interpretasi terhadap hasil pemodelan.

3.4 Diagram Alir

Diagram alir dibawah ini merupakan langkah-langkah yang diambil untuk mendukung proses penelitian batasan masalah.

BAB 4 HASIL DAN PEMBAHASAN

4.1 Persiapan Data Friedman

Tahap pertama adalah menyiapkan data Friedman yang digunakan dalam pemodelan Random Forest Regression. Data dibangkitkan menggunakan fungsi mlbench.friedman1() dari paket mlbench.

library(mlbench)
library(ranger)
library(ggplot2)
library(dplyr)

set.seed(123)

# Membangkitkan data Friedman
friedman <- mlbench.friedman1(n = 1000, sd = 1)

# Menyusun data menjadi data frame
if (is.data.frame(friedman)) {
  data_friedman <- as.data.frame(friedman)
} else {
  data_friedman <- as.data.frame(friedman$x)
  data_friedman$y <- as.numeric(friedman$y)
}

# Melihat struktur data
dim(data_friedman)
## [1] 1000   11
str(data_friedman)
## 'data.frame':    1000 obs. of  11 variables:
##  $ V1 : num  0.288 0.788 0.409 0.883 0.94 ...
##  $ V2 : num  0.274 0.594 0.16 0.853 0.848 ...
##  $ V3 : num  0.16 0.145 0.149 0.514 0.493 ...
##  $ V4 : num  0.206 0.943 0.379 0.626 0.184 ...
##  $ V5 : num  0.304 0.833 0.594 0.807 0.294 ...
##  $ V6 : num  0.249 0.989 0.717 0.652 0.241 ...
##  $ V7 : num  0.4403 0.3974 0.3715 0.5288 0.0738 ...
##  $ V8 : num  0.9303 0.591 0.0797 0.845 0.0298 ...
##  $ V9 : num  0.578 0.489 0.742 0.226 0.749 ...
##  $ V10: num  0.798 0.879 0.242 0.56 0.905 ...
##  $ y  : num  7.85 27.19 10.12 18.77 10.17 ...
head(data_friedman)
##          V1        V2        V3        V4        V5         V6         V7
## 1 0.2875775 0.2736227 0.1596740 0.2058269 0.3044642 0.24862988 0.44026102
## 2 0.7883051 0.5938669 0.1445159 0.9425390 0.8328188 0.98946318 0.39739215
## 3 0.4089769 0.1601848 0.1491804 0.3793238 0.5936475 0.71712190 0.37154765
## 4 0.8830174 0.8534302 0.5144343 0.6262401 0.8071966 0.65172829 0.52880857
## 5 0.9404673 0.8477392 0.4928273 0.1835024 0.2940508 0.24055621 0.07378541
## 6 0.0455565 0.4778868 0.6163428 0.6592076 0.1410852 0.08679275 0.71684977
##           V8        V9         V10         y
## 1 0.93034086 0.5779101 0.797964158  7.849800
## 2 0.59104489 0.4888454 0.879135979 27.194434
## 3 0.07974532 0.7421904 0.242462305 10.119632
## 4 0.84501857 0.2256090 0.559528822 18.774356
## 5 0.02978437 0.7488911 0.904773553 10.169495
## 6 0.81465972 0.8248685 0.008198569  8.586764
summary(data_friedman)
##        V1                  V2                 V3                 V4           
##  Min.   :0.0004654   Min.   :0.001156   Min.   :0.003516   Min.   :6.534e-05  
##  1st Qu.:0.2536404   1st Qu.:0.253137   1st Qu.:0.233550   1st Qu.:2.434e-01  
##  Median :0.4899502   Median :0.498370   Median :0.496463   Median :5.054e-01  
##  Mean   :0.4972778   Mean   :0.498256   Mean   :0.498604   Mean   :5.040e-01  
##  3rd Qu.:0.7468051   3rd Qu.:0.745485   3rd Qu.:0.745841   3rd Qu.:7.685e-01  
##  Max.   :0.9994045   Max.   :0.999524   Max.   :0.999651   Max.   :9.995e-01  
##        V5                 V6                 V7                 V8           
##  Min.   :0.000829   Min.   :0.001636   Min.   :0.000863   Min.   :0.0008261  
##  1st Qu.:0.254085   1st Qu.:0.269757   1st Qu.:0.264754   1st Qu.:0.2504367  
##  Median :0.485769   Median :0.493714   Median :0.490621   Median :0.4978823  
##  Mean   :0.489129   Mean   :0.505534   Mean   :0.496102   Mean   :0.4980242  
##  3rd Qu.:0.733984   3rd Qu.:0.761554   3rd Qu.:0.734836   3rd Qu.:0.7471687  
##  Max.   :0.999941   Max.   :0.999688   Max.   :0.997738   Max.   :0.9981033  
##        V9                V10                  y          
##  Min.   :0.001941   Min.   :9.374e-05   Min.   : 0.6104  
##  1st Qu.:0.253597   1st Qu.:2.471e-01   1st Qu.:10.7249  
##  Median :0.491687   Median :4.894e-01   Median :14.4085  
##  Mean   :0.489310   Mean   :4.993e-01   Mean   :14.3998  
##  3rd Qu.:0.729686   3rd Qu.:7.498e-01   3rd Qu.:17.9296  
##  Max.   :0.999716   Max.   :9.998e-01   Max.   :27.5047
# Memeriksa missing value
sum(is.na(data_friedman))
## [1] 0

Berdasarkan hasil pemeriksaan, data Friedman terdiri atas variabel respons y dan variabel prediktor yang digunakan untuk membentuk model regresi. Fungsi dim() menunjukkan jumlah observasi dan variabel, sedangkan str() dan summary() digunakan untuk melihat struktur serta ringkasan data. Pemeriksaan missing value dilakukan untuk memastikan kelengkapan data sebelum pemodelan.

4.2 Pembagian Data Training dan Testing

Data dibagi menjadi 80% data pelatihan (training data) dan 20% data pengujian (testing data). Data pelatihan digunakan untuk membangun model, sedangkan data pengujian digunakan untuk mengevaluasi hasil prediksi.

set.seed(123)

n <- nrow(data_friedman)
indeks_train <- sample(seq_len(n), size = floor(0.8 * n))

train <- data_friedman[indeks_train, ]
test <- data_friedman[-indeks_train, ]

# Menampilkan jumlah data
cat("Jumlah data keseluruhan:", nrow(data_friedman), "\n")
## Jumlah data keseluruhan: 1000
cat("Jumlah data training:", nrow(train), "\n")
## Jumlah data training: 800
cat("Jumlah data testing:", nrow(test), "\n")
## Jumlah data testing: 200

Pembagian data menghasilkan 80% observasi untuk pelatihan dan 20% observasi untuk pengujian. Data training digunakan untuk mempelajari pola hubungan antara variabel prediktor dan respons, sedangkan data testing digunakan untuk menilai kemampuan prediksi model pada data yang tidak digunakan dalam pelatihan.

4.3 Pembentukan Model Random Forest Regression

Pemodelan dilakukan menggunakan sembilan kombinasi parameter, yaitu mtry sebesar 2, 3, dan 5 serta num.trees sebesar 200, 500, dan 1.000.

# Kombinasi parameter
kombinasi <- expand.grid(
  mtry = c(2, 3, 5),
  num.trees = c(200, 500, 1000)
)

# Menyiapkan penyimpanan model dan hasil evaluasi
models <- list()
hasil <- data.frame()

# Membentuk sembilan model
for (i in seq_len(nrow(kombinasi))) {

  m <- kombinasi$mtry[i]
  nt <- kombinasi$num.trees[i]

  model_id <- paste0("mtry_", m, "_trees_", nt)

  model <- ranger(
    y ~ .,
    data = train,
    mtry = m,
    num.trees = nt,
    importance = "permutation",
    seed = 123
  )

  # Menyimpan model
  models[[model_id]] <- model

  # Prediksi pada data testing
  prediksi <- predict(model, data = test)$predictions

  # Menghitung metrik evaluasi
  aktual <- test$y
  residual <- aktual - prediksi

  mse <- mean(residual^2)
  rmse <- sqrt(mse)
  mae <- mean(abs(residual))

  r2 <- 1 - sum(residual^2) /
    sum((aktual - mean(aktual))^2)

  # Mengambil OOB MSE
  oob_mse <- model$prediction.error

  # Menyimpan hasil
  hasil <- rbind(
    hasil,
    data.frame(
      model_id = model_id,
      mtry = m,
      num.trees = nt,
      OOB_MSE = oob_mse,
      MSE = mse,
      RMSE = rmse,
      MAE = mae,
      R2 = r2
    )
  )
}

hasil
##            model_id mtry num.trees  OOB_MSE      MSE     RMSE      MAE
## 1  mtry_2_trees_200    2       200 5.749827 5.270433 2.295742 1.874969
## 2  mtry_3_trees_200    3       200 4.741359 4.449877 2.109473 1.738743
## 3  mtry_5_trees_200    5       200 4.278680 4.010741 2.002683 1.641628
## 4  mtry_2_trees_500    2       500 5.601036 5.211138 2.282792 1.865749
## 5  mtry_3_trees_500    3       500 4.666186 4.423108 2.103119 1.729556
## 6  mtry_5_trees_500    5       500 4.206585 3.992427 1.998106 1.634287
## 7 mtry_2_trees_1000    2      1000 5.596866 5.198753 2.280077 1.865310
## 8 mtry_3_trees_1000    3      1000 4.598077 4.370794 2.090644 1.720158
## 9 mtry_5_trees_1000    5      1000 4.188038 4.001380 2.000345 1.635405
##          R2
## 1 0.7839562
## 2 0.8175921
## 3 0.8355931
## 4 0.7863868
## 5 0.8186894
## 6 0.8363438
## 7 0.7868945
## 8 0.8208339
## 9 0.8359768

Pembentukan model dilakukan dengan mengombinasikan tiga nilai mtry dan tiga nilai num.trees, sehingga diperoleh sembilan model. Perbedaan nilai mtry menunjukkan perbedaan jumlah prediktor yang dipertimbangkan secara acak pada setiap pemisahan simpul, sedangkan num.trees menentukan jumlah pohon yang digunakan dalam model. Hasil pemodelan selanjutnya dibandingkan berdasarkan evaluasi internal OOB dan kinerja prediksi pada data testing.

4.4 Evaluasi Kinerja Model

Evaluasi dilakukan menggunakan MSE, RMSE, MAE, R², dan OOB MSE. MSE, RMSE, dan MAE mengukur besarnya kesalahan prediksi, sedangkan R² menunjukkan kemampuan model dalam menjelaskan variasi respons. OOB MSE digunakan sebagai evaluasi internal Random Forest.

# Mengurutkan model berdasarkan MSE testing terkecil
hasil_urut <- hasil %>%
  arrange(MSE)

knitr::kable(
  hasil_urut,
  digits = 4,
  caption = "Perbandingan Kinerja Sembilan Model Random Forest Regression"
)
Perbandingan Kinerja Sembilan Model Random Forest Regression
model_id mtry num.trees OOB_MSE MSE RMSE MAE R2
mtry_5_trees_500 5 500 4.2066 3.9924 1.9981 1.6343 0.8363
mtry_5_trees_1000 5 1000 4.1880 4.0014 2.0003 1.6354 0.8360
mtry_5_trees_200 5 200 4.2787 4.0107 2.0027 1.6416 0.8356
mtry_3_trees_1000 3 1000 4.5981 4.3708 2.0906 1.7202 0.8208
mtry_3_trees_500 3 500 4.6662 4.4231 2.1031 1.7296 0.8187
mtry_3_trees_200 3 200 4.7414 4.4499 2.1095 1.7387 0.8176
mtry_2_trees_1000 2 1000 5.5969 5.1988 2.2801 1.8653 0.7869
mtry_2_trees_500 2 500 5.6010 5.2111 2.2828 1.8657 0.7864
mtry_2_trees_200 2 200 5.7498 5.2704 2.2957 1.8750 0.7840
# Model dengan MSE testing terkecil
model_terbaik <- hasil_urut[1, ]

cat("Model dengan MSE testing terkecil menggunakan mtry =",
    model_terbaik$mtry,
    "dan num.trees =",
    model_terbaik$num.trees, ".\n\n")

Model dengan MSE testing terkecil menggunakan mtry = 5 dan num.trees = 500 .

cat("Nilai MSE model tersebut adalah",
    round(model_terbaik$MSE, 4),
    ", RMSE sebesar",
    round(model_terbaik$RMSE, 4),
    ", MAE sebesar",
    round(model_terbaik$MAE, 4),
    ", R² sebesar",
    round(model_terbaik$R2, 4),
    ", dan OOB MSE sebesar",
    round(model_terbaik$OOB_MSE, 4), ".\n\n")

Nilai MSE model tersebut adalah 3.9924 , RMSE sebesar 1.9981 , MAE sebesar 1.6343 , R² sebesar 0.8363 , dan OOB MSE sebesar 4.2066 .

cat("Model tersebut memiliki kesalahan prediksi testing paling rendah ",
    "di antara sembilan kombinasi parameter yang diuji. ",
    "Nilai RMSE dan MAE menunjukkan besarnya kesalahan prediksi, ",
    "sedangkan R² menunjukkan kemampuan model menjelaskan variasi respons. ",
    "OOB MSE digunakan sebagai pembanding evaluasi internal model.")

Model tersebut memiliki kesalahan prediksi testing paling rendah di antara sembilan kombinasi parameter yang diuji. Nilai RMSE dan MAE menunjukkan besarnya kesalahan prediksi, sedangkan R² menunjukkan kemampuan model menjelaskan variasi respons. OOB MSE digunakan sebagai pembanding evaluasi internal model.

Berdasarkan tabel perbandingan, model terbaik menurut kriteria MSE testing adalah model yang menghasilkan nilai MSE terkecil. Nilai RMSE dan MAE digunakan untuk mendukung penilaian besarnya kesalahan prediksi, sedangkan R² digunakan untuk melihat kemampuan model dalam menjelaskan variasi nilai respons. OOB MSE dibandingkan dengan hasil pengujian untuk melihat kesesuaian evaluasi internal dan evaluasi pada data testing. Penentuan model terbaik pada tahap ini didasarkan pada MSE testing, bukan hanya OOB MSE.

4.5 Analisis Residual Plot

Residual plot digunakan untuk melihat pola kesalahan prediksi model terbaik. Residual dihitung dari selisih antara nilai aktual dan nilai prediksi pada data testing.

# Mengambil model terbaik berdasarkan MSE testing
model_id_terbaik <- model_terbaik$model_id
model_rf_terbaik <- models[[model_id_terbaik]]

prediksi_terbaik <- predict(
  model_rf_terbaik,
  data = test
)$predictions

data_residual <- data.frame(
  Aktual = test$y,
  Prediksi = prediksi_terbaik,
  Residual = test$y - prediksi_terbaik
)

# Membuat residual plot
ggplot(data_residual,
       aes(x = Prediksi, y = Residual)) +
  geom_point(alpha = 0.7) +
  geom_hline(yintercept = 0,
             linetype = "dashed") +
  labs(
    title = "Residual Plot Random Forest Regression",
    subtitle = paste(
      "mtry =", model_terbaik$mtry,
      "| num.trees =", model_terbaik$num.trees
    ),
    x = "Nilai Prediksi",
    y = "Residual"
  ) +
  theme_minimal()

Residual plot digunakan untuk mengetahui apakah kesalahan prediksi membentuk pola tertentu. Jika titik residual menyebar secara acak di sekitar garis nol, kondisi tersebut menunjukkan bahwa tidak terlihat pola sistematis yang jelas pada kesalahan prediksi. Sebaliknya, pola melengkung atau penyebaran yang semakin melebar dapat menunjukkan adanya pola kesalahan atau perubahan varians. Interpretasi akhir disesuaikan dengan pola yang benar-benar terlihat pada grafik.

4.6 Analisis Variable Importance

Variable importance digunakan untuk mengetahui tingkat kepentingan relatif setiap variabel prediktor dalam model terbaik. Pada analisis ini, kepentingan variabel dihitung menggunakan metode permutation importance.

# Mengambil nilai variable importance
importance <- model_rf_terbaik$variable.importance

data_importance <- data.frame(
  Variabel = names(importance),
  Importance = as.numeric(importance)
) %>%
  arrange(desc(Importance))

# Menampilkan tabel
knitr::kable(
  data_importance,
  digits = 4,
  caption = "Variable Importance Model Terbaik"
)
Variable Importance Model Terbaik
Variabel Importance
V4 15.5028
V2 9.0343
V1 8.5064
V5 2.4022
V3 1.9164
V9 0.0740
V6 0.0112
V10 0.0062
V7 -0.0009
V8 -0.0213
ggplot(
  data_importance,
  aes(
    x = reorder(Variabel, Importance),
    y = Importance
  )
) +
  geom_col() +
  coord_flip() +
  labs(
    title = "Variable Importance Random Forest Regression",
    x = "Variabel Prediktor",
    y = "Permutation Importance"
  ) +
  theme_minimal()

variabel_terpenting <- data_importance$Variabel[1]
nilai_importance <- data_importance$Importance[1]

cat("Variabel dengan nilai importance tertinggi adalah",
    variabel_terpenting,
    "dengan nilai",
    round(nilai_importance, 4), ".\n\n")

Variabel dengan nilai importance tertinggi adalah V4 dengan nilai 15.5028 .

cat("Variabel tersebut memiliki tingkat kepentingan relatif paling tinggi ",
    "dalam model yang diuji berdasarkan metode permutation importance. ",
    "Semakin besar nilai importance, semakin besar kontribusi relatif ",
    "variabel tersebut terhadap kinerja prediksi menurut ukuran ini. ",
    "Hasil ini tidak secara langsung menunjukkan hubungan sebab-akibat.")

Variabel tersebut memiliki tingkat kepentingan relatif paling tinggi dalam model yang diuji berdasarkan metode permutation importance. Semakin besar nilai importance, semakin besar kontribusi relatif variabel tersebut terhadap kinerja prediksi menurut ukuran ini. Hasil ini tidak secara langsung menunjukkan hubungan sebab-akibat.

Berdasarkan tabel dan grafik variable importance, variabel dengan nilai kepentingan tertinggi merupakan variabel yang paling berkontribusi terhadap kinerja prediksi model menurut metode permutation importance. Hasil tersebut digunakan untuk memahami peran relatif setiap prediktor dalam model terbaik. Interpretasi ini terbatas pada model dan data yang dianalisis, sehingga tidak dapat langsung digunakan untuk menyimpulkan hubungan sebab-akibat.

Secara keseluruhan, analisis dilakukan dengan membandingkan sembilan kombinasi parameter Random Forest Regression pada data Friedman. Perbandingan dilakukan menggunakan MSE, RMSE, MAE, dan R² pada data testing, serta OOB MSE sebagai evaluasi internal model. Residual plot digunakan untuk memeriksa pola kesalahan prediksi, sedangkan variable importance digunakan untuk mengidentifikasi prediktor yang memiliki kepentingan relatif lebih tinggi.

Kombinasi parameter terbaik ditentukan berdasarkan nilai MSE testing terkecil, kemudian hasilnya didukung oleh ukuran evaluasi lainnya. Perbedaan hasil antar-model menunjukkan bahwa pemilihan mtry dan num.trees perlu dipertimbangkan dalam pembentukan Random Forest Regression. Kesimpulan akhir ditetapkan berdasarkan tabel dan grafik yang dihasilkan setelah seluruh sintaks dijalankan.

BAB 5 KESIMPULAN DAN SARAN

5.1 Kesimpulan

Random Forest dan Double Random Forest merupakan metode ensemble learning berbasis decision tree yang menggabungkan hasil prediksi dari sejumlah pohon keputusan. Random Forest membentuk pohon menggunakan sampel bootstrap dan pemilihan prediktor secara acak pada setiap pemisahan simpul. Sementara itu, Double Random Forest menggunakan seluruh data pelatihan pada setiap pohon dan menerapkan bootstrap sampling pada setiap simpul untuk menentukan pemisahan terbaik.

Random Forest dan Double Random Forest dapat diimplementasikan untuk klasifikasi maupun regresi. Pada klasifikasi, hasil prediksi akhir ditentukan melalui suara terbanyak (majority voting), sedangkan pada regresi hasil prediksi diperoleh dari rata-rata prediksi seluruh pohon. Implementasi kedua metode dilakukan melalui tahapan persiapan data, pembentukan model, penentuan parameter, prediksi, dan interpretasi hasil sesuai dengan jenis permasalahan yang dianalisis.

Evaluasi performa model dilakukan menggunakan ukuran yang sesuai dengan jenis analisis. Pada klasifikasi, evaluasi dapat menggunakan accuracy, precision, recall, specificity, F1-score, dan ROC-AUC, sedangkan pada regresi dapat menggunakan MSE, RMSE, MAE, dan R². Selain itu, Out-of-Bag (OOB) error digunakan sebagai evaluasi internal model. Perbandingan Random Forest dan Double Random Forest dilakukan berdasarkan hasil evaluasi tersebut untuk mengetahui metode yang memberikan kinerja prediksi lebih baik pada data yang digunakan.

Berdasarkan hasil praktikum, Random Forest dan Double Random Forest dapat digunakan untuk menyelesaikan permasalahan klasifikasi maupun regresi dengan menggabungkan prediksi dari sejumlah pohon keputusan. Kinerja kedua metode dapat dievaluasi menggunakan metrik yang sesuai dengan jenis analisis, sedangkan OOB error digunakan untuk menilai kesalahan prediksi internal model. Perbandingan nilai evaluasi membantu menentukan metode yang lebih baik berdasarkan data yang digunakan. Namun, metode terbaik harus ditentukan berdasarkan hasil pengujian dan nilai evaluasi yang diperoleh, karena salah satu metode tidak selalu lebih unggul dalam setiap permasalahan.

5.2 Saran

Program R sangatlah bermanfaat bagi semua orang khususnya pada mahasiswa statistika, hal ini sangat memudahkan dalam mengolah suatu data di komputer. Tetapi pengguna harus lebih hati-hati dalam memasukan sintaks dan data karena apabila terjadi kesalahan dalam memasukan maupun mengolah data tersebut hasilnya akan sangat berpengaruh.

DAFTAR PUSTAKA

Akbar, H., & Sanjaya, W. K. (2023). Kajian performa metode class weight Random Forest pada klasifikasi imbalance data kelas curah hujan. Jurnal Sains, Nalar, dan Aplikasi Teknologi Informasi, 3(1), 42–49. https://doi.org/10.20885/snati.v3i1.30

Fitrianto, A., Manaf, S. A. R., & Soleh, A. M. (2024). Perbandingan algoritma pohon dengan beberapa skenario pelabelan untuk analisis sentimen pada aplikasi milik pemerintah/BUMN. JEPIN (Jurnal Edukasi dan Penelitian Informatika), 10(1). https://jurnal.untan.ac.id/index.php/jepin/article/view/73512

Fransiska, H. (2026). Modul Praktikum Machine Learning. Universitas Bengkulu.

Khairunnisa, A., Notodiputro, K. A., & Sartono, B. (2024). A comparative study of Random Forest and Double Random Forest models from view points of their interpretability. Scientific Journal of Informatics, 11(1), 207–218. https://doi.org/10.15294/sji.v11i1.48721

Purwanto, A., Sartono, B., & Notodiputro, K. A. (2025). A comparison of Random Forest and Double Random Forest: Dropout rates of madrasah students in Indonesia. BAREKENG: Jurnal Ilmu Matematika dan Terapan, 19(1), 227–236. https://doi.org/10.30598/barekengvol19iss1pp227-236