Perkembangan teknologi informasi telah mendorong pemanfaatan data untuk mendukung proses analisis dan pengambilan keputusan. Salah satu metode yang digunakan dalam pengolahan data adalah machine learning, khususnya ensemble learning, yaitu metode yang menggabungkan sejumlah model untuk menghasilkan prediksi yang lebih baik. Salah satu algoritma dalam pendekatan tersebut adalah Random Forest. Menurut Breiman (2001), Random Forest merupakan metode ensemble yang terdiri atas kumpulan pohon keputusan (decision tree), dengan setiap pohon dibangun menggunakan unsur pengacakan pada data dan pemilihan fitur. Hasil prediksi dari kumpulan pohon tersebut kemudian digabungkan untuk memperoleh prediksi akhir. Metode ini dapat digunakan untuk permasalahan klasifikasi maupun regresi.
Selain Random Forest, terdapat metode pengembangan yang dikenal sebagai Double Random Forest. Menurut Khairunnisa dkk. (2024), Double Random Forest dikembangkan untuk mengatasi permasalahan underfitting yang dapat terjadi pada Random Forest, khususnya ketika pohon keputusan yang dihasilkan memiliki ukuran terlalu kecil. Perbedaan utama kedua metode terletak pada mekanisme pembentukan pohon keputusan dan penggunaan pengambilan sampel data dalam proses pembelajaran. Penelitian Purwanto dkk. (2025) juga membahas perbandingan Random Forest dan Double Random Forest dalam menganalisis angka putus sekolah siswa madrasah di Indonesia. Hal tersebut menunjukkan perlunya mengkaji kinerja kedua algoritma berdasarkan karakteristik data yang digunakan.
Perbedaan mekanisme pembelajaran antara Random Forest dan Double Random Forest dapat memengaruhi kemampuan model dalam menghasilkan prediksi. Oleh karena itu, diperlukan penelitian untuk membandingkan kinerja kedua algoritma tersebut. Pada permasalahan regresi, evaluasi kinerja model dapat dilakukan menggunakan Mean Squared Error (MSE), Root Mean Squared Error (RMSE), Mean Absolute Error (MAE), dan koefisien determinasi (\(R^2\)). Metrik tersebut digunakan untuk mengukur tingkat kesalahan prediksi serta kemampuan model dalam menjelaskan variasi data. Melalui perbandingan hasil evaluasi tersebut, dapat diketahui algoritma yang menghasilkan performa prediksi lebih baik sesuai dengan karakteristik data dan tujuan penelitian.
Random Forest merupakan algoritma machine learning berbasis ensemble learning yang menggabungkan sejumlah pohon keputusan (decision tree) untuk menghasilkan prediksi. Random Forest merupakan salah satu model yang digunakan dalam analisis klasifikasi dengan memanfaatkan proses pengacakan dalam pembentukan pohon-pohon keputusan. Pendekatan ini memungkinkan model mengatasi keterbatasan penggunaan satu pohon keputusan dan menghasilkan prediksi berdasarkan gabungan beberapa pohon (Khairunnisa, Notodiputro, dan Sartono, 2024).
Penggunaan Random Forest menghasilkan model prediksi yang mampu mengenali pola hubungan antara variabel prediktor dan variabel respons. Metode ini dapat digunakan untuk permasalahan klasifikasi maupun regresi. Pada klasifikasi, prediksi akhir ditentukan berdasarkan kelas yang memperoleh suara terbanyak dari seluruh pohon (majority voting), sedangkan pada regresi, prediksi akhir diperoleh dengan menghitung rata-rata hasil prediksi seluruh pohon keputusan (Siregar dkk., 2024).
Secara matematis, prediksi Random Forest untuk regresi dapat dirumuskan sebagai berikut (Fauzi, Soleh, dan Djuraidah, 2020): \[ \hat{f}{RF}(x) = \frac{1}{B}\sum{b=1}^{B}\hat{f}_b(x) \]
Keterangan:
Sementara itu, prediksi Random Forest untuk klasifikasi ditentukan berdasarkan kelas yang paling sering muncul dari seluruh pohon keputusan, yang dapat dirumuskan sebagai berikut (Siregar dkk., 2024): \[ \hat{C}_{RF}(x) = \operatorname{mode}{\hat{C}_1(x), \hat{C}_2(x), \ldots, \hat{C}_B(x)} \]
Keterangan:
Double Random Forest merupakan metode pengembangan Random Forest yang ditujukan untuk mengatasi permasalahan underfitting pada kondisi tertentu. Underfitting merupakan keadaan ketika model belum mampu menangkap pola data secara memadai. Double Random Forest adalah metode yang dapat mengatasi permasalahan underfitting yang dialami Random Forest. Penggunaan Double Random Forest adalah untuk meningkatkan kemampuan model dalam menangkap pola data ketika Random Forest belum menghasilkan kecocokan model yang memadai. Namun, peningkatan kinerja tidak selalu terjadi pada setiap kondisi data sehingga evaluasi model tetap diperlukan (Purwanto, Sartono, dan Notodiputro, 2025).
Secara sederhana, proses Double Random Forest dilakukan sebagai berikut (Fransiska, 2026):
Karena setiap tree menggunakan seluruh data training untuk tumbuh, maka DRF cenderung dapat menghasilkan tree yang lebih besar. Pada saat yang sama, penggunaan bootstrap pada setiap node dan random feature subset tetap menambahkan keragaman pada aturan split. Konsekuensinya, DRF umumnya membutuhkan waktu komputasi lebih besar dibanding RF karena proses bootstrap dilakukan berulang pada banyak node.
Data yang digunakan dalam praktikum ini adalah data Friedman yang
tersedia dalam package gbm pada RStudio. Data yang
digunakan sebanyak 500 observasi yang diperoleh melalui pembangkitan
data simulasi. Data digunakan untuk mempelajari hubungan
nonlinear antara variabel prediktor dan variabel respons. Oleh
karena itu, data dapat digunakan untuk menganalisis kemampuan metode
Random Forest Regression dalam memodelkan hubungan antara variabel
prediktor dan variabel respon.
Variabel penelitian terdiri atas variabel respon dan variabel prediktor. Variabel respons yang digunakan adalah \(Y\), yaitu variabel yang akan diprediksi menggunakan model Random Forest Regression. Sedangkan, variabel prediktor terdiri atas \(X_1\) sampai \(X_{10}\) yang digunakan sebagai variabel input dalam proses pemodelan.
Langkah-langkah analisis Random Forest Regression pada data Friedman adalah sebagai berikut:
Pada batasan masalah diminta untuk melakukan analisis Gradient Boosting pada data Friedman dengan nilai shrinkage sebesar 0,01, 0,05, dan 0,10 dan kemudian menghitung matrik evaluasinya.
Tahap awal dilakukan dengan memuat library mlbench,
caret dan ranger yang diperlukan dalam
analisis dan membangkitkan data Friedman menggunakan fungsi
mlbench.friedman1() dengan jumlah observasi sebanyak
500
Sintaks yang digunakan adalah sebagai berikut:
# Membentuk dataset
# Library
library(mlbench)
library(caret)
library(ranger)
set.seed(43)
reg.data <- as.data.frame(
mlbench.friedman1(500)
)
# Memeriksa data
str(reg.data)## 'data.frame': 500 obs. of 11 variables:
## $ x.1 : num 0.485 0.9108 0.0577 0.7054 0.3135 ...
## $ x.2 : num 0.784 0.783 0.622 0.991 0.821 ...
## $ x.3 : num 0.552 0.482 0.628 0.372 0.692 ...
## $ x.4 : num 0.7418 0.256 0.0205 0.1976 0.4869 ...
## $ x.5 : num 0.529 0.418 0.164 0.381 0.276 ...
## $ x.6 : num 0.335 0.984 0.967 0.434 0.6 ...
## $ x.7 : num 0.318 0.979 0.121 0.491 0.144 ...
## $ x.8 : num 0.0811 0.981 0.3779 0.7815 0.5555 ...
## $ x.9 : num 0.484 0.87 0.755 0.659 0.138 ...
## $ x.10: num 0.371 0.932 0.95 0.861 0.925 ...
## $ y : num 19.56 10.51 2.13 13.49 12.95 ...
## x.1 x.2 x.3 x.4
## Min. :0.00159 Min. :0.0009057 Min. :0.004887 Min. :5.975e-05
## 1st Qu.:0.23906 1st Qu.:0.2415145 1st Qu.:0.262739 1st Qu.:2.341e-01
## Median :0.50556 Median :0.4720259 Median :0.539835 Median :4.710e-01
## Mean :0.50020 Mean :0.4892460 Mean :0.518677 Mean :4.870e-01
## 3rd Qu.:0.75056 3rd Qu.:0.7420183 3rd Qu.:0.775278 3rd Qu.:7.304e-01
## Max. :0.99682 Max. :0.9981246 Max. :0.996720 Max. :9.988e-01
## x.5 x.6 x.7 x.8
## Min. :0.005383 Min. :7.002e-05 Min. :0.0006859 Min. :0.005763
## 1st Qu.:0.250913 1st Qu.:2.424e-01 1st Qu.:0.2566174 1st Qu.:0.215280
## Median :0.481947 Median :5.140e-01 Median :0.5224313 Median :0.507561
## Mean :0.496211 Mean :5.008e-01 Mean :0.5104499 Mean :0.501394
## 3rd Qu.:0.747287 3rd Qu.:7.583e-01 3rd Qu.:0.7565035 3rd Qu.:0.773431
## Max. :0.998196 Max. :9.980e-01 Max. :0.9983174 Max. :0.999434
## x.9 x.10 y
## Min. :0.003499 Min. :0.001607 Min. : 0.3648
## 1st Qu.:0.251473 1st Qu.:0.263305 1st Qu.:10.6206
## Median :0.518338 Median :0.503962 Median :13.9701
## Mean :0.510534 Mean :0.500716 Mean :14.1566
## 3rd Qu.:0.767103 3rd Qu.:0.747404 3rd Qu.:17.6052
## Max. :0.996703 Max. :0.999982 Max. :27.1551
## [1] 500 11
## x.1 x.2 x.3 x.4 x.5 x.6 x.7
## 1 0.48503768 0.7843542 0.55210401 0.74182849 0.5291208 0.3349633 0.3184348
## 2 0.91076604 0.7826194 0.48223042 0.25599970 0.4177946 0.9844605 0.9791091
## 3 0.05767389 0.6221422 0.62819779 0.02046484 0.1639038 0.9666580 0.1210342
## 4 0.70539841 0.9914532 0.37225848 0.19763034 0.3812875 0.4336756 0.4911194
## 5 0.31349510 0.8210087 0.69171620 0.48690436 0.2755178 0.6003613 0.1438703
## 6 0.54303264 0.3900782 0.01639266 0.11404397 0.9354717 0.3373063 0.4343538
## x.8 x.9 x.10 y
## 1 0.08111583 0.4841657 0.3709264 19.556235
## 2 0.98098380 0.8701462 0.9317184 10.506158
## 3 0.37793808 0.7549262 0.9499757 2.134789
## 4 0.78147925 0.6592182 0.8613697 13.494760
## 5 0.55553879 0.1381987 0.9249460 12.946349
## 6 0.87313455 0.3850465 0.8800210 16.621116
Hasil pemeriksaan awal menunjukkan bahwa data yang diguankan sebanyak 500 observasi dengan 1 variabel respon yaitu \(y\) dan 10 variabel prediktor yaitu \(X1\) sampai \(X10\).
Splitting data merupakan proses membagi dataset menjadi data training dan data testing. Data training digunakan untuk membentuk model, sedangkan data testing digunakan untuk mengevaluasi kemampuan model pada data yang tidak digunakan selama proses pelatihan. Pembagian dataset dilakukan dengan proporsi 70% data training dan 30% data testing.
Sintaks yang digunakan adalah sebagai berikut:
# Membagi data training dan testing
set.seed(43)
idx.reg <- createDataPartition(reg.data$y,p = 0.70,list = FALSE)
reg.train <- reg.data[idx.reg, ]
reg.test <- reg.data[-idx.reg, ]
# Memeriksa jumlah data
dim(reg.train)## [1] 352 11
## [1] 148 11
Hasil pembagian menunjukkan bahwa data training terdiri atas 352 observasi, sedangkan data testing terdiri atas 148 observasi. Data training digunakan untuk membangun model Random Forest Regression, sementara data testing digunakan untuk menghitung MSE, RMSE, MAE, dan \(R^2\).
Pembentukan model Random Forest Regression dilakukan menggunakan tiga nilai parameter mtry, yaitu 2, 3, dan 5, serta tiga jumlah pohon (num.trees), yaitu 200, 500, dan 1000. Kombinasi kedua parameter tersebut menghasilkan sembilan model yang dibangun menggunakan parameter lainnya yang sama.
Berikut sintaks yang digunakan untuk membentuk model Random Forest Regression:
# Menentukan kombinasi parameter
kombinasi.rf <- expand.grid(
mtry = c(2, 3, 5),
num.trees = c(200, 500, 1000)
)
# Menyiapkan tempat penyimpanan model
daftar.rf <- list()
# Membentuk sembilan model
for (i in 1:nrow(kombinasi.rf)) {
set.seed(43)
rf.reg <- ranger(
y ~ .,
data = reg.train,
num.trees = kombinasi.rf$num.trees[i],
mtry = kombinasi.rf$mtry[i],
min.node.size = 5,
replace = TRUE,
sample.fraction = 1,
importance = "permutation",
seed = 234
)
# Menyimpan model
nama.model <- paste0("Model_", i)
daftar.rf[[nama.model]] <- rf.reg
}
# Menampilkan kombinasi parameter
print(kombinasi.rf)## mtry num.trees
## 1 2 200
## 2 3 200
## 3 5 200
## 4 2 500
## 5 3 500
## 6 5 500
## 7 2 1000
## 8 3 1000
## 9 5 1000
Berdasarkan hasil pembentukan model Random Forest Regression, diperoleh sembilan model dengan kombinasi parameter mtry dan num.trees yang berbeda. Model 1 hingga Model 3 menggunakan 200 pohon dengan nilai mtry masing-masing 2, 3, dan 5. Model 4 hingga Model 6 menggunakan 500 pohon dengan variasi mtry yang sama dan itu, model 7 hingga Model 9 menggunakan 1.000 pohon dengan nilai mtry masing-masing 2, 3, dan 5.
Evaluasi Out-of-Bag (OOB) dilakukan untuk mengetahui tingkat kesalahan prediksi model Random Forest Regression menggunakan data yang tidak digunakan dalam pembentukan setiap pohon. Hasil evaluasi OOB digunakan untuk membandingkan kinerja model berdasarkan nilai OOB MSE dan OOB \(R^2\)
Sintaks yang digunakan untuk melakukan evaluasi Out-of-Bag (OOB) adalah sebagai berikut:
# Menyiapkan tabel hasil OOB
hasil.oob <- data.frame()
# Mengambil nilai OOB dari setiap model
for (i in 1:length(daftar.rf)) {
rf.reg <- daftar.rf[[i]]
hasil.oob <- rbind(
hasil.oob,
data.frame(
Model = paste0("Model_", i),
mtry = kombinasi.rf$mtry[i],
num.trees = kombinasi.rf$num.trees[i],
OOB_MSE = rf.reg$prediction.error,
OOB_R2 = rf.reg$r.squared
)
)
}
# Menampilkan hasil evaluasi OOB
print(hasil.oob)## Model mtry num.trees OOB_MSE OOB_R2
## 1 Model_1 2 200 6.644348 0.7273726
## 2 Model_2 3 200 5.615644 0.7695818
## 3 Model_3 5 200 4.997003 0.7949656
## 4 Model_4 2 500 6.778203 0.7218803
## 5 Model_5 3 500 5.639571 0.7686001
## 6 Model_6 5 500 4.992775 0.7951391
## 7 Model_7 2 1000 6.707970 0.7247621
## 8 Model_8 3 1000 5.707137 0.7658277
## 9 Model_9 5 1000 4.964332 0.7963061
Berdasarkan hasil evaluasi Out-of-Bag (OOB), diperoleh 9 model Random Forest Regression dengan kombinasi parameter mtry sebesar 2, 3, dan 5 serta num.trees sebesar 200, 500, dan 1000. Hasil menunjukkan bahwa nilai mtry memengaruhi kinerja model, yaitu ketika nilai mtry meningkat dari 2 menjadi 5, nilai OOB MSE cenderung menurun dan nilai OOB \(R^2\) meningkat.
Model dengan nilai OOB MSE terendah adalah Model 9, dengan mtry sebesar 5 dan num.trees sebanyak 1000, yang menghasilkan OOB MSE sebesar 4,964332 dan OOB \(R^2\) sebesar 0,7963061. Hasil menunjukkan bahwa Model 9 memiliki kesalahan prediksi OOB paling rendah dan mampu menjelaskan sekitar 79,63% variasi pada variabel respons berdasarkan evaluasi OOB. Sedangkan, Model 1 dengan mtry sebesar 2 dan num.trees sebanyak 200 menghasilkan OOB MSE tertinggi sebesar 6,644348 dan OOB \(R^2\) sebesar 0,7273726. Hasil menunjukkan bahwa kombinasi mtry sebesar 5 memberikan kinerja OOB yang lebih baik dibandingkan nilai mtry sebesar 2 dan 3 pada ketiga jumlah pohon yang diuji. Tetapi, model 9 tetap menjadi model terbaik berdasarkan evaluasi OOB, sehingga kinerjanya masih perlu dibandingkan dengan hasil evaluasi pada data testing untuk menentukan model akhir.
Pada tahap ini, setiap model Random Forest Regression digunakan untuk memprediksi nilai variabel respons pada data testing. Nilai prediksi kemudian dibandingkan dengan nilai aktual untuk memperoleh residual atau selisih antara nilai aktual dan nilai prediksi.
Sintaks yang digunakan untuk melakukan prediksi pada data testing adalah sebagai berikut:
# Menyiapkan tabel hasil prediksi
hasil.prediksi <- data.frame()
# Melakukan prediksi menggunakan setiap model
for (i in 1:length(daftar.rf)) {
rf.reg <- daftar.rf[[i]]
pred.rf.reg <- predict(
rf.reg,
data = reg.test
)$predictions
actual.reg <- reg.test$y
hasil.prediksi <- rbind(
hasil.prediksi,
data.frame(
Model = paste0("Model_", i),
Aktual = actual.reg,
Prediksi = pred.rf.reg,
Residual = actual.reg - pred.rf.reg
)
)
}
# Menampilkan 10 hasil prediksi pertama
head(hasil.prediksi, 10)## Model Aktual Prediksi Residual
## 1 Model_1 10.506158 15.11032 -4.6041575
## 2 Model_1 13.535856 14.35936 -0.8235064
## 3 Model_1 19.712992 16.19793 3.5150655
## 4 Model_1 9.395308 12.94947 -3.5541633
## 5 Model_1 23.323631 17.54996 5.7736760
## 6 Model_1 11.873848 12.87283 -0.9989858
## 7 Model_1 17.011324 15.47186 1.5394654
## 8 Model_1 9.989311 15.34380 -5.3544904
## 9 Model_1 11.287532 10.97691 0.3106259
## 10 Model_1 9.964898 12.88698 -2.9220852
Berdasarkan hasil prediksi pada data testing, model Random Forest Regression menghasilkan nilai prediksi yang bervariasi dibandingkan dengan nilai aktual. Perbedaan antara nilai aktual dan nilai prediksi ditunjukkan oleh residual, yang dapat bernilai positif maupun negatif. Residual positif menunjukkan bahwa nilai prediksi lebih rendah daripada nilai aktual, sedangkan residual negatif menunjukkan bahwa nilai prediksi lebih tinggi daripada nilai aktual. Hasil ini menunjukkan bahwa model mampu menghasilkan prediksi, tetapi masih terdapat kesalahan pada beberapa observasi.
Evaluasi kinerja model Random Forest Regression dilakukan untuk mengetahui kemampuan setiap model dalam memprediksi nilai variabel respons pada data testing. Evaluasi dilakukan menggunakan empat metrik, yaitu Mean Squared Error (MSE), Root Mean Squared Error (RMSE), Mean Absolute Error (MAE), dan koefisien determinasi (\(R^2\)).
# Menyiapkan tabel evaluasi model
evaluasi.rf <- data.frame()
# Menghitung metrik evaluasi setiap model
for (i in 1:length(daftar.rf)) {
rf.reg <- daftar.rf[[i]]
# Prediksi data testing
pred.rf.reg <- predict(
rf.reg,
data = reg.test
)$predictions
actual.reg <- reg.test$y
# Menghitung MSE
MSE.rf <- mean(
(actual.reg - pred.rf.reg)^2
)
# Menghitung RMSE
RMSE.rf <- sqrt(MSE.rf)
# Menghitung MAE
MAE.rf <- mean(
abs(actual.reg - pred.rf.reg)
)
# Menghitung R-Square
R2.rf <- 1 -
sum((actual.reg - pred.rf.reg)^2) /
sum((actual.reg - mean(actual.reg))^2)
# Menyimpan hasil evaluasi
evaluasi.rf <- rbind(
evaluasi.rf,
data.frame(
Model = paste0("Model_", i),
mtry = kombinasi.rf$mtry[i],
num.trees = kombinasi.rf$num.trees[i],
MSE = MSE.rf,
RMSE = RMSE.rf,
MAE = MAE.rf,
R_Square = R2.rf
)
)
}
# Menampilkan hasil evaluasi
print(evaluasi.rf)## Model mtry num.trees MSE RMSE MAE R_Square
## 1 Model_1 2 200 6.732072 2.594624 2.068280 0.7114043
## 2 Model_2 3 200 5.693536 2.386113 1.889617 0.7559251
## 3 Model_3 5 200 5.090699 2.256258 1.814286 0.7817680
## 4 Model_4 2 500 6.897385 2.626287 2.091493 0.7043175
## 5 Model_5 3 500 5.702196 2.387927 1.897869 0.7555539
## 6 Model_6 5 500 5.132958 2.265603 1.811066 0.7799564
## 7 Model_7 2 1000 6.933342 2.633124 2.088038 0.7027761
## 8 Model_8 3 1000 5.812364 2.410885 1.911443 0.7508311
## 9 Model_9 5 1000 5.146095 2.268501 1.809644 0.7793932
# Mengurutkan model berdasarkan MSE terkecil
evaluasi.urut <- evaluasi.rf[
order(evaluasi.rf$MSE),
]
print(evaluasi.urut)## Model mtry num.trees MSE RMSE MAE R_Square
## 3 Model_3 5 200 5.090699 2.256258 1.814286 0.7817680
## 6 Model_6 5 500 5.132958 2.265603 1.811066 0.7799564
## 9 Model_9 5 1000 5.146095 2.268501 1.809644 0.7793932
## 2 Model_2 3 200 5.693536 2.386113 1.889617 0.7559251
## 5 Model_5 3 500 5.702196 2.387927 1.897869 0.7555539
## 8 Model_8 3 1000 5.812364 2.410885 1.911443 0.7508311
## 1 Model_1 2 200 6.732072 2.594624 2.068280 0.7114043
## 4 Model_4 2 500 6.897385 2.626287 2.091493 0.7043175
## 7 Model_7 2 1000 6.933342 2.633124 2.088038 0.7027761
Berdasarkan hasil evaluasi kinerja sembilan model Random Forest Regression, diperoleh nilai MSE, RMSE, MAE, dan \(R^2\) yang berbeda pada setiap kombinasi parameter mtry dan num.trees. Hasil menunjukkan bahwa pemilihan parameter memengaruhi kinerja model dalam memprediksi data testing.
Model dengan kinerja terbaik berdasarkan nilai MSE, RMSE, dan MAE terendah serta nilai (\(R^2\)) tertinggi adalah Model 3, dengan parameter mtry sebesar 5 dan num.trees sebanyak 200. Model menghasilkan nilai MSE sebesar 5,090699, RMSE sebesar 2,256258, MAE sebesar 1,814286, dan (\(R^2\)) sebesar 0,7817680. Nilai tersebut menunjukkan bahwa model mampu menjelaskan sekitar 78,18% variasi pada variabel respons dalam data testing.
Residual plot dibuat untuk mengevaluasi pola kesalahan prediksi dari model Random Forest Regression terbaik. Grafik menunjukkan hubungan antara nilai prediksi dan residual yang diperoleh dari selisih nilai aktual dengan nilai prediksi pada data testing.
Sintaks yang digunakan untuk membuat residual plot adalah sebagai berikut:
# Residual Plot
# Menentukan model terbaik
model.terbaik <- evaluasi.urut$Model[1]
# Mengambil model terbaik
rf.terbaik <- daftar.rf[[model.terbaik]]
# Melakukan prediksi pada data testing
pred.terbaik <- predict(
rf.terbaik,
data = reg.test
)$predictions
# Menghitung residual
residual.terbaik <- reg.test$y - pred.terbaik
# Membuat residual plot
plot(
pred.terbaik,
residual.terbaik,
main = "Residual Plot Random Forest",
xlab = "Nilai Prediksi",
ylab = "Residual",
pch = 19
)
# Menambahkan garis horizontal pada residual nol
abline(h = 0, lty = 2)Berdasarkan residual plot, titik-titik residual tersebar di atas dan di bawah garis nol tanpa membentuk pola yang jelas.Penyebaran residual terlihat cukup bervariasi pada berbagai nilai prediksi. Hal ini menunjukkan bahwa model Random Forest Regression telah menghasilkan prediksi dengan kesalahan positif dan negatif, meskipun masih terdapat beberapa observasi dengan residual yang cukup besar.
Analisis variable importance dilakukan untuk mengetahui tingkat kepentingan setiap variabel prediktor dalam model Random Forest Regression terbaik. Variabel dengan nilai importance lebih tinggi menunjukkan kontribusi relatif yang lebih besar terhadap kemampuan prediksi model.
Sintaks yang digunakan untuk menganalisis variable importance adalah sebagai berikut:
# Variable Importance
# Mengambil nilai variable importance
nilai.importance <- rf.terbaik$variable.importance
# Membuat tabel variable importance
importance.rf <- data.frame(
Variabel = names(nilai.importance),
Importance = as.numeric(nilai.importance)
)
# Mengurutkan berdasarkan nilai importance tertinggi
importance.rf <- importance.rf[
order(importance.rf$Importance, decreasing = TRUE),
]
# Menampilkan tabel variable importance
print(importance.rf)## Variabel Importance
## 4 x.4 13.868554057
## 1 x.1 9.562238839
## 2 x.2 7.349354004
## 5 x.5 2.309158786
## 3 x.3 0.884041869
## 6 x.6 0.105821187
## 7 x.7 0.045255465
## 10 x.10 0.003148992
## 9 x.9 -0.000546319
## 8 x.8 -0.043702725
# Membuat grafik variable importance
barplot(
height = importance.rf$Importance,
names.arg = importance.rf$Variabel,
main = "Variable Importance Random Forest",
xlab = "Variabel Prediktor",
ylab = "Nilai Importance",
las = 2
)Berdasarkan hasil analisis variable importance pada model Random Forest Regression terbaik, variabel \(X_4\) memiliki tingkat kepentingan tertinggi dengan nilai importance sebesar 13,8686, diikuti oleh \(X_1\) sebesar 9,5622 dan \(X_2\) sebesar 7,3494. Selanjutnya, variabel \(X_3\) dan \(X_4\) memiliki nilai importance masing-masing sebesar 2,3092 dan 0,8840. Sementara itu, variabel \(X_6\), \(X_7\), \(X_10\),\(X_9\), dan \(X_8\) memiliki nilai importance yang mendekati nol.
Hasil menunjukkan bahwa \(X_4\), \(X_1\), dan \(X_2\) merupakan variabel prediktor yang paling penting dalam model, sedangkan variabel lainnya memberikan kontribusi relatif lebih kecil terhadap kemampuan prediksi. Nilai importance negatif pada \(X_9\) dan \(X_8\) menunjukkan bahwa pengacakan variabel tersebut tidak meningkatkan kesalahan prediksi, sehingga kontribusi prediktifnya sangat kecil pada model ini.
Metode Random Forest dan Double Random Forest merupakan metode ensemble learning berbasis decision tree yang menggabungkan beberapa pohon keputusan untuk menghasilkan prediksi. Kedua metode tersebut memiliki mekanisme pembentukan model yang bertujuan meningkatkan kemampuan prediksi dan mengurangi kesalahan. Pemahaman terhadap prinsip kerja kedua metode menjadi dasar dalam penerapannya pada berbagai permasalahan analisis data.
Implementasi metode Random Forest dan Double Random Forest dapat dilakukan menggunakan bahasa pemrograman R, baik untuk permasalahan klasifikasi maupun regresi. Tahapan implementasi meliputi persiapan data, pembagian data menjadi training dan testing, pembentukan model, penentuan parameter, serta proses prediksi. Melalui tahapan tersebut, kedua metode dapat diterapkan untuk menghasilkan model sesuai dengan jenis permasalahan yang dianalisis.
Evaluasi performa model dilakukan menggunakan metrik yang sesuai dengan jenis permasalahan, seperti akurasi, presisi, recall, dan F1-score untuk klasifikasi, serta MSE, RMSE, MAE, dan \(R^2\) untuk regresi. Selain itu, Out-of-Bag (OOB) error digunakan untuk memperkirakan kesalahan prediksi model tanpa memerlukan data validasi tambahan. Hasil evaluasi tersebut dapat digunakan untuk membandingkan kinerja metode Random Forest dan Double Random Forest serta menentukan metode yang memberikan hasil prediksi lebih baik.
Berdasarkan hasil penelitian, metode Random Forest Regression berhasil diterapkan pada data simulasi Friedman sebanyak 500 observasi dengan sembilan kombinasi parameter mtry dan num.trees. Berdasarkan evaluasi pada data testing, diperoleh Model 3 dengan parameter mtry = 5 dan num.trees = 200 sebagai model terbaik, yang menghasilkan MSE sebesar 5,090699, RMSE sebesar 2,256258, MAE sebesar 1,814286, dan \(R^2\) sebesar 0,781768. Sementara itu, evaluasi OOB menunjukkan bahwa Model 9 memiliki nilai OOB MSE terendah sebesar 4,964332 dan OOB \(R^2\) sebesar 0,7963061. Hasil analisis variable importance menunjukkan bahwa x.4, x.1, dan x.2 merupakan variabel prediktor yang paling berpengaruh terhadap kemampuan prediksi model. Dengan demikian, metode Random Forest Regression mampu menghasilkan prediksi yang cukup baik, dengan Model 3 sebagai model terbaik berdasarkan evaluasi data testing.
Breiman, L. (2001). Random forests. Machine Learning, 45, 5–32. https://doi.org/10.1023/A:1010933404324
Fransiska, H. (2026). Modul Praktikum Machine Learning and Modern Prediction. Laboratorium Matematika 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). https://doi.org/10.15294/sji.v11i1.48721
Siregar, D., Wardana, B. M., Baihaqy, A. S., Naimah, L., Putri, A. N., Meidianingsih, Q., & Safitri, D. (2024). Determination of important variables in divorce type classification using the Random Forest method with SMOTE. Jurnal Statistika dan Aplikasinya, 8(2), 231–246. https://journal.unj.ac.id/unj/index.php/statistika/article/view/50579
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