Perkembangan teknologi informasi mendorong pemanfaatan machine learning untuk menganalisis data dan menghasilkan prediksi. Salah satu metode yang dapat digunakan adalah Random Forest. Metode ini termasuk ensemble learning yang menggabungkan banyak pohon keputusan (decision trees) untuk menghasilkan prediksi yang lebih stabil. Pada permasalahan regresi, hasil prediksi akhir diperoleh dari rata-rata prediksi seluruh pohon yang dibentuk.
Kinerja Random Forest Regression dipengaruhi oleh beberapa parameter, di antaranya mtry dan num.trees. Parameter mtry menunjukkan jumlah variabel prediktor yang dipertimbangkan secara acak pada setiap pemisahan simpul, sedangkan num.trees menunjukkan jumlah pohon yang dibangun. Perbedaan nilai parameter dapat menghasilkan kemampuan prediksi yang berbeda. Oleh karena itu, pengujian beberapa kombinasi parameter diperlukan untuk mengetahui konfigurasi model yang memberikan hasil terbaik.
Pada praktikum ini dilakukan penerapan Random Forest Regression menggunakan dataset Friedman. Model dibentuk dengan membandingkan nilai mtry sebesar 2, 3, dan 5 serta num.trees sebesar 200, 500, dan 1000. Evaluasi dilakukan pada data testing menggunakan MSE, RMSE, MAE, dan R². Selain itu, dilakukan pemeriksaan residual plot, analisis variable importance, serta pengamatan nilai Out-of-Bag (OOB) MSE sebagai evaluasi internal model.
Random Forest Regression merupakan metode ensemble learning yang menggabungkan sejumlah pohon keputusan untuk memprediksi nilai numerik. Setiap pohon dibangun menggunakan sampel bootstrap dari data pelatihan dan mempertimbangkan sebagian variabel prediktor secara acak pada setiap pemisahan. Hasil prediksi regresi diperoleh dengan menghitung rata-rata prediksi dari seluruh pohon yang terbentuk. Penggabungan banyak pohon tersebut dapat membantu menghasilkan prediksi yang lebih stabil dibandingkan penggunaan satu pohon keputusan.
Parameter mtry merupakan jumlah variabel prediktor yang dipilih secara acak sebagai kandidat pada setiap pemisahan simpul. Sementara itu, num.trees merupakan jumlah pohon keputusan yang dibangun dalam model. Perubahan nilai kedua parameter tersebut dapat memengaruhi pola pembelajaran dan hasil prediksi. Pada praktikum ini digunakan tiga nilai mtry, yaitu 2, 3, dan 5, serta tiga nilai num.trees, yaitu 200, 500, dan 1000, sehingga diperoleh sembilan kombinasi model.
Evaluasi model regresi dilakukan dengan membandingkan nilai aktual dan nilai prediksi. Ukuran evaluasi yang digunakan meliputi:
Out-of-Bag (OOB) merupakan evaluasi internal pada Random Forest yang memanfaatkan observasi data pelatihan yang tidak terambil dalam sampel bootstrap untuk membangun pohon tertentu. Pada model regresi, nilai OOB MSE menunjukkan rata-rata kuadrat kesalahan prediksi OOB. Nilai OOB MSE yang lebih kecil menunjukkan kesalahan estimasi internal yang lebih rendah.
Residual plot merupakan grafik yang menampilkan hubungan antara nilai prediksi dan residual, yaitu selisih antara nilai aktual dengan nilai prediksi. Residual yang tersebar secara acak di sekitar garis nol mengindikasikan bahwa tidak terdapat pola kesalahan yang kuat. Sebaliknya, pola tertentu atau penyebaran yang semakin lebar dapat menunjukkan adanya ketidaksesuaian model.
Variable importance digunakan untuk mengetahui kontribusi relatif setiap variabel prediktor dalam model. Pada praktikum ini digunakan metode permutation importance. Variabel dengan nilai kepentingan yang lebih tinggi menunjukkan bahwa pengacakan variabel tersebut menyebabkan penurunan kinerja model yang lebih besar. Ukuran ini menggambarkan kontribusi prediktif dan tidak menunjukkan hubungan sebab-akibat.
Data yang digunakan adalah dataset Friedman yang
dibangkitkan menggunakan fungsi mlbench.friedman1() dari
package mlbench pada perangkat lunak R. Dataset
ini merupakan data simulasi untuk permasalahan regresi yang memiliki
sepuluh variabel prediktor, yaitu X1 sampai X10, dan satu variabel
respons numerik, yaitu Y. Data dibangkitkan sebanyak 1.000 observasi
dengan random seed 234 agar hasil analisis dapat
direproduksi.
Data dibagi menjadi 80% data training dan 20% data testing. Pembagian dilakukan satu kali menggunakan random seed 234 dan digunakan secara konsisten pada seluruh model.
| Parameter | Nilai yang diuji |
|---|---|
| mtry | 2, 3, dan 5 |
| num.trees | 200, 500, dan 1000 |
| Proporsi training | 80% |
| Proporsi testing | 20% |
| Jumlah observasi | 1000 |
| Metode variable importance | Permutation |
Dengan tiga variasi mtry dan tiga variasi num.trees, terdapat sembilan kombinasi model yang akan dibandingkan.
| Keterangan | Nilai |
|---|---|
| Jumlah observasi | 1000 |
| Jumlah variabel prediktor | 10 |
| Jumlah variabel respons | 1 |
| Jumlah nilai hilang | 0 |
| x.1 | x.2 | x.3 | x.4 | x.5 | x.6 | x.7 | x.8 | x.9 | x.10 | Y |
|---|---|---|---|---|---|---|---|---|---|---|
| 0.7456 | 0.2762 | 0.0780 | 0.1721 | 0.1863 | 0.0668 | 0.3464 | 0.0716 | 0.4753 | 0.1387 | 11.4657 |
| 0.7817 | 0.6427 | 0.3202 | 0.6317 | 0.0835 | 0.7718 | 0.3081 | 0.7148 | 0.5966 | 0.8069 | 14.9072 |
| 0.0200 | 0.9874 | 0.9678 | 0.8044 | 0.2233 | 0.6479 | 0.6503 | 0.4688 | 0.7350 | 0.4167 | 14.8539 |
| 0.7761 | 0.8425 | 0.1673 | 0.0090 | 0.2603 | 0.2349 | 0.6340 | 0.7357 | 0.1352 | 0.0394 | 13.0220 |
| 0.0669 | 0.7328 | 0.3698 | 0.2611 | 0.2012 | 0.1716 | 0.3942 | 0.4600 | 0.9951 | 0.7892 | 6.6383 |
| 0.6448 | 0.4302 | 0.0066 | 0.7737 | 0.6398 | 0.9646 | 0.9708 | 0.6261 | 0.5692 | 0.5286 | 25.1894 |
| 0.9294 | 0.0194 | 0.0460 | 0.9393 | 0.3929 | 0.3576 | 0.1348 | 0.9098 | 0.3642 | 0.6638 | 17.3630 |
| 0.7176 | 0.6980 | 0.2155 | 0.7133 | 0.3806 | 0.1503 | 0.1595 | 0.9133 | 0.7160 | 0.5107 | 19.5181 |
| 0.9277 | 0.1854 | 0.1969 | 0.0932 | 0.2158 | 0.4071 | 0.5644 | 0.3006 | 0.9680 | 0.2566 | 7.1032 |
| 0.2842 | 0.4164 | 0.5026 | 0.1941 | 0.8520 | 0.0460 | 0.2271 | 0.8399 | 0.9371 | 0.8312 | 10.4566 |
## x.1 x.2 x.3 x.4
## Min. :0.001198 Min. :0.001884 Min. :1.477e-05 Min. :0.000531
## 1st Qu.:0.252244 1st Qu.:0.229962 1st Qu.:2.536e-01 1st Qu.:0.249890
## Median :0.502501 Median :0.493678 Median :5.008e-01 Median :0.500833
## Mean :0.490455 Mean :0.493386 Mean :5.001e-01 Mean :0.501039
## 3rd Qu.:0.724930 3rd Qu.:0.750807 3rd Qu.:7.444e-01 3rd Qu.:0.738471
## Max. :0.999850 Max. :0.999021 Max. :9.992e-01 Max. :0.998386
## x.5 x.6 x.7 x.8
## Min. :0.001774 Min. :0.0001198 Min. :0.0009038 Min. :0.0005495
## 1st Qu.:0.248165 1st Qu.:0.2485552 1st Qu.:0.2435999 1st Qu.:0.2685956
## Median :0.513857 Median :0.5008499 Median :0.4886027 Median :0.5252676
## Mean :0.504918 Mean :0.5015384 Mean :0.4973700 Mean :0.5123303
## 3rd Qu.:0.761429 3rd Qu.:0.7458245 3rd Qu.:0.7520365 3rd Qu.:0.7569608
## Max. :0.998546 Max. :0.9993431 Max. :0.9968358 Max. :0.9999746
## x.9 x.10 Y
## Min. :0.0006859 Min. :0.0006466 Min. :-0.1529
## 1st Qu.:0.2620676 1st Qu.:0.2527644 1st Qu.:10.7287
## Median :0.5036696 Median :0.4925590 Median :14.2324
## Mean :0.5044159 Mean :0.4960867 Mean :14.2698
## 3rd Qu.:0.7498544 3rd Qu.:0.7418533 3rd Qu.:17.7313
## Max. :0.9996305 Max. :0.9931607 Max. :28.8621
Dataset Friedman yang digunakan pada praktikum ini terdiri
atas 1.000 observasi, sepuluh variabel prediktor, dan satu variabel
respons numerik. Data merupakan data simulasi yang dibangkitkan
menggunakan fungsi mlbench.friedman1() sehingga dapat
digunakan untuk menguji kemampuan model dalam mempelajari hubungan
antara variabel prediktor dan respons. Seluruh variabel digunakan dalam
proses pemodelan karena tidak terdapat kolom identitas yang perlu
dihapus.
| Data | Jumlah_Observasi | Persentase |
|---|---|---|
| Training | 800 | 80 |
| Testing | 200 | 20 |
| Total | 1000 | 100 |
Data dibagi menjadi 80% data training dan 20% data testing. Dari 1.000 observasi, sebanyak 800 observasi digunakan untuk membangun model, sedangkan 200 observasi digunakan untuk menguji kemampuan prediksi. Seluruh kombinasi parameter menggunakan pembagian data yang sama agar perbandingan kinerja model dapat dilakukan secara konsisten.
| Model | mtry | Num_Trees | OOB_MSE | |
|---|---|---|---|---|
| mtry2_trees200 | mtry2_trees200 | 2 | 200 | 5.4169 |
| mtry3_trees200 | mtry3_trees200 | 3 | 200 | 4.5715 |
| mtry5_trees200 | mtry5_trees200 | 5 | 200 | 4.1066 |
| mtry2_trees500 | mtry2_trees500 | 2 | 500 | 5.2784 |
| mtry3_trees500 | mtry3_trees500 | 3 | 500 | 4.4965 |
| mtry5_trees500 | mtry5_trees500 | 5 | 500 | 4.0387 |
| mtry2_trees1000 | mtry2_trees1000 | 2 | 1000 | 5.3141 |
| mtry3_trees1000 | mtry3_trees1000 | 3 | 1000 | 4.4599 |
| mtry5_trees1000 | mtry5_trees1000 | 5 | 1000 | 4.0102 |
Model dibentuk menggunakan sembilan kombinasi parameter yang berasal dari variasi mtry sebesar 2, 3, dan 5 serta num.trees sebesar 200, 500, dan 1000. Setiap model dilatih menggunakan data training yang sama. Nilai OOB MSE diperoleh dari proses evaluasi internal Random Forest dan digunakan sebagai gambaran kesalahan prediksi selama proses pembentukan model. Nilai OOB MSE yang lebih kecil menunjukkan estimasi kesalahan internal yang lebih rendah.
| Model | mtry | Num_Trees | MSE | RMSE | MAE | R2 |
|---|---|---|---|---|---|---|
| mtry2_trees200 | 2 | 200 | 5.4468 | 2.3338 | 1.8344 | 0.7735 |
| mtry3_trees200 | 3 | 200 | 4.5913 | 2.1427 | 1.6891 | 0.8091 |
| mtry5_trees200 | 5 | 200 | 4.2566 | 2.0632 | 1.6312 | 0.8230 |
| mtry2_trees500 | 2 | 500 | 5.3822 | 2.3199 | 1.8344 | 0.7762 |
| mtry3_trees500 | 3 | 500 | 4.5164 | 2.1252 | 1.6771 | 0.8122 |
| mtry5_trees500 | 5 | 500 | 4.1796 | 2.0444 | 1.6152 | 0.8262 |
| mtry2_trees1000 | 2 | 1000 | 5.3636 | 2.3159 | 1.8326 | 0.7770 |
| mtry3_trees1000 | 3 | 1000 | 4.5041 | 2.1223 | 1.6677 | 0.8127 |
| mtry5_trees1000 | 5 | 1000 | 4.1630 | 2.0404 | 1.6046 | 0.8269 |
Evaluasi dilakukan dengan membandingkan nilai aktual dan hasil prediksi pada data testing. MSE, RMSE, dan MAE digunakan untuk mengukur besarnya kesalahan prediksi, sehingga nilai yang lebih kecil menunjukkan hasil yang lebih baik. Sementara itu, R² digunakan untuk melihat proporsi variasi variabel respons yang dapat dijelaskan oleh model. Nilai R² yang semakin mendekati 1 menunjukkan kemampuan model yang semakin baik dalam menjelaskan variasi data.
Grafik memperlihatkan perbandingan nilai MSE, RMSE, MAE, dan R² dari sembilan konfigurasi model. Model dengan MSE, RMSE, dan MAE lebih rendah serta R² lebih tinggi menunjukkan kinerja prediksi yang lebih baik pada data testing. Perbandingan ini digunakan untuk mengetahui pengaruh variasi mtry dan num.trees terhadap kemampuan model dalam memprediksi variabel respons.
Residual plot digunakan untuk melihat pola selisih antara nilai aktual dan prediksi pada setiap model. Residual yang tersebar secara acak di sekitar garis nol menunjukkan bahwa kesalahan prediksi tidak membentuk pola tertentu. Apabila residual membentuk pola atau memiliki penyebaran yang semakin lebar, hal tersebut dapat menjadi indikasi bahwa model belum sepenuhnya menangkap pola hubungan pada data. Grafik ini melengkapi penilaian numerik melalui MSE, RMSE, MAE, dan R².
| Model | Variabel | Importance |
|---|---|---|
| mtry2_trees1000 | x.4 | 12.3047 |
| mtry2_trees1000 | x.2 | 8.4613 |
| mtry2_trees1000 | x.1 | 6.7712 |
| mtry2_trees1000 | x.5 | 2.4780 |
| mtry2_trees1000 | x.3 | 1.5970 |
| mtry2_trees1000 | x.8 | 0.1786 |
| mtry2_trees1000 | x.9 | 0.0899 |
| mtry2_trees1000 | x.7 | 0.0887 |
| mtry2_trees1000 | x.10 | -0.0142 |
| mtry2_trees1000 | x.6 | -0.0395 |
| mtry2_trees200 | x.4 | 12.2219 |
| mtry2_trees200 | x.2 | 8.6444 |
| mtry2_trees200 | x.1 | 7.0534 |
| mtry2_trees200 | x.5 | 2.6970 |
| mtry2_trees200 | x.3 | 1.4923 |
| mtry2_trees200 | x.8 | 0.2050 |
| mtry2_trees200 | x.7 | 0.0590 |
| mtry2_trees200 | x.9 | 0.0479 |
| mtry2_trees200 | x.10 | -0.0511 |
| mtry2_trees200 | x.6 | -0.1208 |
| mtry2_trees500 | x.4 | 12.2798 |
| mtry2_trees500 | x.2 | 8.6549 |
| mtry2_trees500 | x.1 | 6.8527 |
| mtry2_trees500 | x.5 | 2.5749 |
| mtry2_trees500 | x.3 | 1.5199 |
| mtry2_trees500 | x.8 | 0.2678 |
| mtry2_trees500 | x.7 | 0.1001 |
| mtry2_trees500 | x.9 | 0.0623 |
| mtry2_trees500 | x.10 | -0.0015 |
| mtry2_trees500 | x.6 | -0.0541 |
| mtry3_trees1000 | x.4 | 14.0639 |
| mtry3_trees1000 | x.2 | 9.6078 |
| mtry3_trees1000 | x.1 | 7.6674 |
| mtry3_trees1000 | x.5 | 2.4412 |
| mtry3_trees1000 | x.3 | 1.6863 |
| mtry3_trees1000 | x.8 | 0.0448 |
| mtry3_trees1000 | x.6 | 0.0322 |
| mtry3_trees1000 | x.7 | 0.0228 |
| mtry3_trees1000 | x.9 | -0.0070 |
| mtry3_trees1000 | x.10 | -0.0245 |
| mtry3_trees200 | x.4 | 14.2082 |
| mtry3_trees200 | x.2 | 9.7453 |
| mtry3_trees200 | x.1 | 7.9407 |
| mtry3_trees200 | x.5 | 2.3743 |
| mtry3_trees200 | x.3 | 1.6000 |
| mtry3_trees200 | x.8 | 0.0582 |
| mtry3_trees200 | x.7 | 0.0383 |
| mtry3_trees200 | x.6 | -0.0135 |
| mtry3_trees200 | x.9 | -0.0232 |
| mtry3_trees200 | x.10 | -0.1066 |
| mtry3_trees500 | x.4 | 13.9527 |
| mtry3_trees500 | x.2 | 9.6318 |
| mtry3_trees500 | x.1 | 7.7777 |
| mtry3_trees500 | x.5 | 2.4311 |
| mtry3_trees500 | x.3 | 1.6986 |
| mtry3_trees500 | x.8 | 0.0733 |
| mtry3_trees500 | x.7 | 0.0472 |
| mtry3_trees500 | x.6 | -0.0027 |
| mtry3_trees500 | x.9 | -0.0202 |
| mtry3_trees500 | x.10 | -0.0355 |
| mtry5_trees1000 | x.4 | 15.6391 |
| mtry5_trees1000 | x.2 | 10.7743 |
| mtry5_trees1000 | x.1 | 8.8124 |
| mtry5_trees1000 | x.5 | 2.5317 |
| mtry5_trees1000 | x.3 | 1.4326 |
| mtry5_trees1000 | x.6 | 0.0735 |
| mtry5_trees1000 | x.7 | 0.0550 |
| mtry5_trees1000 | x.9 | 0.0079 |
| mtry5_trees1000 | x.8 | 0.0054 |
| mtry5_trees1000 | x.10 | -0.0093 |
| mtry5_trees200 | x.4 | 15.6077 |
| mtry5_trees200 | x.2 | 10.6824 |
| mtry5_trees200 | x.1 | 8.6498 |
| mtry5_trees200 | x.5 | 2.6723 |
| mtry5_trees200 | x.3 | 1.4166 |
| mtry5_trees200 | x.6 | 0.1026 |
| mtry5_trees200 | x.7 | 0.0533 |
| mtry5_trees200 | x.8 | 0.0164 |
| mtry5_trees200 | x.9 | -0.0095 |
| mtry5_trees200 | x.10 | -0.0236 |
| mtry5_trees500 | x.4 | 15.4741 |
| mtry5_trees500 | x.2 | 10.7474 |
| mtry5_trees500 | x.1 | 8.7298 |
| mtry5_trees500 | x.5 | 2.5900 |
| mtry5_trees500 | x.3 | 1.4091 |
| mtry5_trees500 | x.6 | 0.0904 |
| mtry5_trees500 | x.7 | 0.0309 |
| mtry5_trees500 | x.9 | 0.0079 |
| mtry5_trees500 | x.8 | -0.0048 |
| mtry5_trees500 | x.10 | -0.0157 |
Analisis variable importance dilakukan untuk mengetahui variabel prediktor yang memberikan kontribusi relatif besar terhadap kemampuan prediksi model. Nilai permutation importance yang lebih tinggi menunjukkan bahwa pengacakan variabel tersebut menyebabkan penurunan kinerja model yang lebih besar. Hasil ini dapat digunakan untuk mengidentifikasi prediktor yang paling berperan dalam memprediksi variabel respons pada dataset Friedman.
| Model | mtry | Num_Trees | MSE | RMSE | MAE | R2 | Konfigurasi | OOB_MSE |
|---|---|---|---|---|---|---|---|---|
| mtry5_trees1000 | 5 | 1000 | 4.1630 | 2.0404 | 1.6046 | 0.8269 | mtry=5, trees=1000 | 4.0102 |
| mtry5_trees500 | 5 | 500 | 4.1796 | 2.0444 | 1.6152 | 0.8262 | mtry=5, trees=500 | 4.0387 |
| mtry5_trees200 | 5 | 200 | 4.2566 | 2.0632 | 1.6312 | 0.8230 | mtry=5, trees=200 | 4.1066 |
| mtry3_trees1000 | 3 | 1000 | 4.5041 | 2.1223 | 1.6677 | 0.8127 | mtry=3, trees=1000 | 4.4599 |
| mtry3_trees500 | 3 | 500 | 4.5164 | 2.1252 | 1.6771 | 0.8122 | mtry=3, trees=500 | 4.4965 |
| mtry3_trees200 | 3 | 200 | 4.5913 | 2.1427 | 1.6891 | 0.8091 | mtry=3, trees=200 | 4.5715 |
| mtry2_trees1000 | 2 | 1000 | 5.3636 | 2.3159 | 1.8326 | 0.7770 | mtry=2, trees=1000 | 5.3141 |
| mtry2_trees500 | 2 | 500 | 5.3822 | 2.3199 | 1.8344 | 0.7762 | mtry=2, trees=500 | 5.2784 |
| mtry2_trees200 | 2 | 200 | 5.4468 | 2.3338 | 1.8344 | 0.7735 | mtry=2, trees=200 | 5.4169 |
## Model terbaik berdasarkan MSE terkecil adalah mtry5_trees1000 dengan mtry = 5 dan num.trees = 1000. Model tersebut memiliki MSE = 4.163, RMSE = 2.0404, MAE = 1.6046, R2 = 0.8269, dan OOB MSE = 4.0102.
| Model | Variabel | Importance |
|---|---|---|
| mtry5_trees1000 | x.4 | 15.6391 |
| mtry5_trees1000 | x.2 | 10.7743 |
| mtry5_trees1000 | x.1 | 8.8124 |
| mtry5_trees1000 | x.5 | 2.5317 |
| mtry5_trees1000 | x.3 | 1.4326 |
Model terbaik ditentukan berdasarkan nilai MSE terkecil pada data testing. Nilai RMSE dan MAE digunakan sebagai ukuran pendukung untuk melihat besarnya kesalahan prediksi, sedangkan R² digunakan untuk menilai kemampuan model dalam menjelaskan variasi variabel respons. Nilai OOB MSE juga diperhatikan sebagai evaluasi internal. Dengan demikian, konfigurasi terpilih merupakan model yang memberikan kesalahan prediksi paling rendah pada data testing, dengan tetap mempertimbangkan hasil evaluasi lainnya.
Metode Random Forest Regression dapat diterapkan pada dataset Friedman untuk memprediksi variabel respons numerik berdasarkan sepuluh variabel prediktor. Proses pemodelan dilakukan dengan membagi data menjadi 80% data training dan 20% data testing, kemudian membangun sembilan kombinasi model berdasarkan variasi nilai mtry dan num.trees.
Perbandingan kinerja model dilakukan menggunakan MSE, RMSE, MAE, dan R² pada data testing. Selain itu, residual plot digunakan untuk mengamati pola kesalahan prediksi, variable importance digunakan untuk mengetahui kontribusi relatif setiap prediktor, sedangkan OOB MSE digunakan sebagai evaluasi internal model. Model dengan MSE, RMSE, dan MAE lebih rendah serta R² lebih tinggi menunjukkan kinerja prediksi yang lebih baik.
Berdasarkan hasil pengujian, konfigurasi model terbaik ditentukan dari nilai MSE terkecil pada data testing. Nilai parameter, hasil metrik evaluasi, OOB MSE, pola residual, dan variabel terpenting dapat dilihat pada tabel serta grafik yang dihasilkan pada Bab IV. Dengan demikian, pemilihan model terbaik didasarkan pada hasil pengujian sembilan kombinasi parameter yang digunakan dalam praktikum.
Praktikum selanjutnya dapat mencoba variasi parameter yang lebih luas serta menggunakan validasi silang untuk mengetahui kestabilan kinerja model. Selain itu, analisis residual dapat diperiksa lebih lanjut untuk mengetahui pola kesalahan yang mungkin belum ditangkap oleh model. Penggunaan beberapa ukuran evaluasi secara bersamaan juga disarankan agar penilaian kinerja model tidak hanya bergantung pada satu metrik.
Breiman, L. (2001). Random forests. Machine Learning, 45, 5–32. https://doi.org/10.1023/A:1010933404324
Liaw, A., & Wiener, M. (2002). Classification and regression by randomForest. R News, 2(3), 18–22.
Wright, M. N., & Ziegler, A. (2017). ranger: A fast implementation of random forests for high dimensional data in C++ and R. Journal of Statistical Software, 77(1), 1–17. https://doi.org/10.18637/jss.v077.i01