Tutorial R Random Forest dengan Contoh
Apa itu Hutan Acak di R?
Hutan acak didasarkan pada gagasan sederhana: 'kebijaksanaan orang banyak'. Hasil agregat dari beberapa prediktor memberikan prediksi yang lebih baik dibandingkan dengan prediktor individu terbaik. Sekelompok prediktor disebut ansambel. Oleh karena itu, teknik ini disebut Pembelajaran Ensemble.
Di tutorial sebelumnya, Anda telah mempelajari cara menggunakan Pohon keputusan untuk membuat prediksi biner. Untuk meningkatkan teknik kami, kami dapat melatih sekelompok Pengklasifikasi Pohon Keputusan, masing-masing pada subset acak yang berbeda dari rangkaian kereta. Untuk membuat prediksi, kita tinggal memperoleh prediksi seluruh pohon individu, lalu memprediksi kelas yang memperoleh suara terbanyak. Teknik ini disebut Hutan Acak.
Langkah 1) Impor data
Untuk memastikan Anda memiliki dataset yang sama seperti di tutorial pohon keputusan, tes kereta dan set tes disimpan di internet. Anda dapat mengimpornya tanpa melakukan perubahan apa pun.
library(dplyr) data_train <- read.csv("https://raw.githubusercontent.com/guru99-edu/R-Programming/master/train.csv") glimpse(data_train) data_test <- read.csv("https://raw.githubusercontent.com/guru99-edu/R-Programming/master/test.csv") glimpse(data_test)
Langkah 2) Latih modelnya
Salah satu cara untuk mengevaluasi performa suatu model adalah dengan melatihnya pada sejumlah kumpulan data berbeda yang lebih kecil dan mengevaluasinya melalui kumpulan pengujian lain yang lebih kecil. Ini disebut Validasi silang F-fold fitur. R memiliki fungsi untuk membagi secara acak sejumlah dataset dengan ukuran yang hampir sama. Misalnya, jika k=9, model dievaluasi pada sembilan folder dan diuji pada set pengujian yang tersisa. Proses ini diulang sampai semua subset telah dievaluasi. Teknik ini banyak digunakan untuk pemilihan model, terutama bila model tersebut memiliki parameter yang perlu disesuaikan.
Sekarang kita memiliki cara untuk mengevaluasi model kita, kita perlu mencari cara untuk memilih parameter yang dapat menggeneralisasi data dengan baik.
Hutan acak memilih subset fitur secara acak dan membangun banyak Pohon Keputusan. Model ini menghitung rata-rata semua prediksi pohon Keputusan.
Hutan acak memiliki beberapa parameter yang dapat diubah untuk meningkatkan generalisasi prediksi. Anda akan menggunakan fungsi RandomForest() untuk melatih model.
Sintaks untuk Randon Forest adalah
RandomForest(formula, ntree=n, mtry=FALSE, maxnodes = NULL) Arguments: - Formula: Formula of the fitted model - ntree: number of trees in the forest - mtry: Number of candidates draw to feed the algorithm. By default, it is the square of the number of columns. - maxnodes: Set the maximum amount of terminal nodes in the forest - importance=TRUE: Whether independent variables importance in the random forest be assessed
Note: Hutan acak dapat dilatih pada lebih banyak parameter. Anda dapat merujuk ke skema untuk melihat parameter yang berbeda.
Menyetel model adalah pekerjaan yang sangat membosankan. Ada banyak kemungkinan kombinasi antar parameter. Anda belum tentu punya waktu untuk mencoba semuanya. Alternatif yang baik adalah membiarkan mesin menemukan kombinasi terbaik untuk Anda. Ada dua metode yang tersedia:
- Pencarian Acak
- Pencarian Grid
Kami akan mendefinisikan kedua metode tersebut tetapi selama tutorial, kami akan melatih model menggunakan pencarian grid
Definisi Pencarian Grid
Metode pencarian grid sederhana, model akan dievaluasi atas semua kombinasi yang Anda lewati dalam fungsi, menggunakan validasi silang.
Misalnya, Anda ingin mencoba model dengan jumlah pohon 10, 20, 30 dan setiap pohon akan diuji dalam jumlah mtry yang sama dengan 1, 2, 3, 4, 5. Kemudian mesin akan menguji 15 model berbeda:
.mtry ntrees 1 1 10 2 2 10 3 3 10 4 4 10 5 5 10 6 1 20 7 2 20 8 3 20 9 4 20 10 5 20 11 1 30 12 2 30 13 3 30 14 4 30 15 5 30
Algoritme akan mengevaluasi:
RandomForest(formula, ntree=10, mtry=1) RandomForest(formula, ntree=10, mtry=2) RandomForest(formula, ntree=10, mtry=3) RandomForest(formula, ntree=20, mtry=2) ...
Setiap kali, hutan acak melakukan percobaan dengan validasi silang. Salah satu kelemahan pencarian grid adalah jumlah eksperimen. Ini bisa menjadi sangat mudah meledak ketika jumlah kombinasinya banyak. Untuk mengatasi masalah ini, Anda dapat menggunakan pencarian acak
Definisi Pencarian Acak
Perbedaan besar antara pencarian acak dan pencarian grid adalah, pencarian acak tidak akan mengevaluasi semua kombinasi hiperparameter dalam ruang pencarian. Sebaliknya, pencarian acak akan memilih kombinasi secara acak pada setiap iterasi. Keuntungannya adalah biaya komputasi yang lebih rendah.
Atur parameter kontrol
Anda akan melanjutkan sebagai berikut untuk membangun dan mengevaluasi model:
- Evaluasi model dengan pengaturan default
- Temukan jumlah mtry terbaik
- Temukan jumlah maxnode terbaik
- Temukan jumlah pohon terbaik
- Evaluasi model pada kumpulan data pengujian
Sebelum memulai eksplorasi parameter, Anda perlu menginstal dua perpustakaan.
- tanda sisipan: perpustakaan pembelajaran mesin R. kalau sudah pasang R dengan r-penting. Itu sudah ada di perpustakaan
- Anaconda: conda install -cr r-caret
- e1071: Perpustakaan pembelajaran mesin R.
- Anaconda: conda instal -cr r-e1071
Anda dapat mengimpornya bersama dengan RandomForest
library(randomForest) library(caret) library(e1071)
Setingan awal
Validasi silang K-fold dikontrol oleh fungsi trainControl()
trainControl(method = "cv", number = n, search ="grid") arguments - method = "cv": The method used to resample the dataset. - number = n: Number of folders to create - search = "grid": Use the search grid method. For randomized method, use "grid" Note: You can refer to the vignette to see the other arguments of the function.
Anda dapat mencoba menjalankan model dengan parameter default dan melihat skor akurasinya.
Note: Anda akan menggunakan kontrol yang sama selama seluruh tutorial.
# Define the control trControl <- trainControl(method = "cv", number = 10, search = "grid")
Anda akan menggunakan perpustakaan sisipan untuk mengevaluasi model Anda. Perpustakaan memiliki satu fungsi yang disebut train() untuk mengevaluasi hampir semuanya Mesin belajar algoritma. Dengan kata lain, Anda dapat menggunakan fungsi ini untuk melatih algoritma lain.
Sintaks dasarnya adalah:
train(formula, df, method = "rf", metric= "Accuracy", trControl = trainControl(), tuneGrid = NULL) argument - `formula`: Define the formula of the algorithm - `method`: Define which model to train. Note, at the end of the tutorial, there is a list of all the models that can be trained - `metric` = "Accuracy": Define how to select the optimal model - `trControl = trainControl()`: Define the control parameters - `tuneGrid = NULL`: Return a data frame with all the possible combination
Mari kita coba membangun model dengan nilai default.
set.seed(1234) # Run the model rf_default <- train(survived~., data = data_train, method = "rf", metric = "Accuracy", trControl = trControl) # Print the results print(rf_default)
Penjelasan Kode
- trainControl(method=”cv”, number=10, search=”grid”): Evaluasi model dengan pencarian grid 10 folder
- train(…): Melatih model hutan acak. Model terbaik dipilih dengan ukuran akurasi.
Keluaran:
## Random Forest ## ## 836 samples ## 7 predictor ## 2 classes: 'No', 'Yes' ## ## No pre-processing ## Resampling: Cross-Validated (10 fold) ## Summary of sample sizes: 753, 752, 753, 752, 752, 752, ... ## Resampling results across tuning parameters: ## ## mtry Accuracy Kappa ## 2 0.7919248 0.5536486 ## 6 0.7811245 0.5391611 ## 10 0.7572002 0.4939620 ## ## Accuracy was used to select the optimal model using the largest value. ## The final value used for the model was mtry = 2.
Algoritme ini menggunakan 500 pohon dan menguji tiga nilai mtry yang berbeda: 2, 6, 10.
Nilai akhir yang digunakan untuk model adalah mtry = 2 dengan akurasi 0.78. Mari kita mencoba untuk mendapatkan skor yang lebih tinggi.
Langkah 2) Cari mtry terbaik
Anda dapat menguji model dengan nilai mtry dari 1 hingga 10
set.seed(1234) tuneGrid <- expand.grid(.mtry = c(1: 10)) rf_mtry <- train(survived~., data = data_train, method = "rf", metric = "Accuracy", tuneGrid = tuneGrid, trControl = trControl, importance = TRUE, nodesize = 14, ntree = 300) print(rf_mtry)
Penjelasan Kode
- tuneGrid <- expand.grid(.mtry=c(3:10)): Buatlah vektor dengan nilai dari 3:10
Nilai akhir yang digunakan untuk model adalah mtry = 4.
Keluaran:
## Random Forest ## ## 836 samples ## 7 predictor ## 2 classes: 'No', 'Yes' ## ## No pre-processing ## Resampling: Cross-Validated (10 fold) ## Summary of sample sizes: 753, 752, 753, 752, 752, 752, ... ## Resampling results across tuning parameters: ## ## mtry Accuracy Kappa ## 1 0.7572576 0.4647368 ## 2 0.7979346 0.5662364 ## 3 0.8075158 0.5884815 ## 4 0.8110729 0.5970664 ## 5 0.8074727 0.5900030 ## 6 0.8099111 0.5949342 ## 7 0.8050918 0.5866415 ## 8 0.8050918 0.5855399 ## 9 0.8050631 0.5855035 ## 10 0.7978916 0.5707336 ## ## Accuracy was used to select the optimal model using the largest value. ## The final value used for the model was mtry = 4.
Nilai mtry terbaik disimpan di:
rf_mtry$bestTune$mtry
Anda dapat menyimpannya dan menggunakannya saat Anda perlu menyetel parameter lainnya.
max(rf_mtry$results$Accuracy)
Keluaran:
## [1] 0.8110729
best_mtry <- rf_mtry$bestTune$mtry best_mtry
Keluaran:
## [1] 4
Langkah 3) Cari maxnode terbaik
Anda perlu membuat loop untuk mengevaluasi nilai-nilai maxnodes yang berbeda. Dalam kode berikut, Anda akan:
- Buat daftar
- Buat variabel dengan nilai parameter mtry terbaik; Wajib
- Buat lingkarannya
- Simpan nilai maxnode saat ini
- Ringkas hasilnya
store_maxnode <- list() tuneGrid <- expand.grid(.mtry = best_mtry) for (maxnodes in c(5: 15)) { set.seed(1234) rf_maxnode <- train(survived~., data = data_train, method = "rf", metric = "Accuracy", tuneGrid = tuneGrid, trControl = trControl, importance = TRUE, nodesize = 14, maxnodes = maxnodes, ntree = 300) current_iteration <- toString(maxnodes) store_maxnode[[current_iteration]] <- rf_maxnode } results_mtry <- resamples(store_maxnode) summary(results_mtry)
Penjelasan kode:
- store_maxnode <- list(): Hasil model akan disimpan dalam daftar ini
- expand.grid(.mtry=best_mtry): Gunakan nilai mtry terbaik
- for (maxnodes in c(15:25)) { … }: Hitung model dengan nilai maxnodes mulai dari 15 hingga 25.
- maxnodes=maxnodes: Untuk setiap iterasi, maxnodes sama dengan nilai maxnodes saat ini. yaitu 15, 16, 17, …
- key <- toString(maxnodes): Simpan sebagai variabel string nilai maxnode.
- store_maxnode[[key]] <- rf_maxnode: Simpan hasil model dalam daftar.
- resamples(store_maxnode): Menyusun hasil model
- ringkasan(results_mtry): Cetak ringkasan semua kombinasi.
Keluaran:
## ## Call: ## summary.resamples(object = results_mtry) ## ## Models: 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 ## Number of resamples: 10 ## ## Accuracy ## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's ## 5 0.6785714 0.7529762 0.7903758 0.7799771 0.8168388 0.8433735 0 ## 6 0.6904762 0.7648810 0.7784710 0.7811962 0.8125000 0.8313253 0 ## 7 0.6904762 0.7619048 0.7738095 0.7788009 0.8102410 0.8333333 0 ## 8 0.6904762 0.7627295 0.7844234 0.7847820 0.8184524 0.8433735 0 ## 9 0.7261905 0.7747418 0.8083764 0.7955250 0.8258749 0.8333333 0 ## 10 0.6904762 0.7837780 0.7904475 0.7895869 0.8214286 0.8433735 0 ## 11 0.7023810 0.7791523 0.8024240 0.7943775 0.8184524 0.8433735 0 ## 12 0.7380952 0.7910929 0.8144005 0.8051205 0.8288511 0.8452381 0 ## 13 0.7142857 0.8005952 0.8192771 0.8075158 0.8403614 0.8452381 0 ## 14 0.7380952 0.7941050 0.8203528 0.8098967 0.8403614 0.8452381 0 ## 15 0.7142857 0.8000215 0.8203528 0.8075301 0.8378873 0.8554217 0 ## ## Kappa ## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's ## 5 0.3297872 0.4640436 0.5459706 0.5270773 0.6068751 0.6717371 0 ## 6 0.3576471 0.4981484 0.5248805 0.5366310 0.6031287 0.6480921 0 ## 7 0.3576471 0.4927448 0.5192771 0.5297159 0.5996437 0.6508314 0 ## 8 0.3576471 0.4848320 0.5408159 0.5427127 0.6200253 0.6717371 0 ## 9 0.4236277 0.5074421 0.5859472 0.5601687 0.6228626 0.6480921 0 ## 10 0.3576471 0.5255698 0.5527057 0.5497490 0.6204819 0.6717371 0 ## 11 0.3794326 0.5235007 0.5783191 0.5600467 0.6126720 0.6717371 0 ## 12 0.4460432 0.5480930 0.5999072 0.5808134 0.6296780 0.6717371 0 ## 13 0.4014252 0.5725752 0.6087279 0.5875305 0.6576219 0.6678832 0 ## 14 0.4460432 0.5585005 0.6117973 0.5911995 0.6590982 0.6717371 0 ## 15 0.4014252 0.5689401 0.6117973 0.5867010 0.6507194 0.6955990 0
Nilai terakhir dari maxnode memiliki akurasi tertinggi. Anda dapat mencoba dengan nilai yang lebih tinggi untuk melihat apakah Anda bisa mendapatkan skor yang lebih tinggi.
store_maxnode <- list() tuneGrid <- expand.grid(.mtry = best_mtry) for (maxnodes in c(20: 30)) { set.seed(1234) rf_maxnode <- train(survived~., data = data_train, method = "rf", metric = "Accuracy", tuneGrid = tuneGrid, trControl = trControl, importance = TRUE, nodesize = 14, maxnodes = maxnodes, ntree = 300) key <- toString(maxnodes) store_maxnode[[key]] <- rf_maxnode } results_node <- resamples(store_maxnode) summary(results_node)
Keluaran:
## ## Call: ## summary.resamples(object = results_node) ## ## Models: 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 ## Number of resamples: 10 ## ## Accuracy ## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's ## 20 0.7142857 0.7821644 0.8144005 0.8075301 0.8447719 0.8571429 0 ## 21 0.7142857 0.8000215 0.8144005 0.8075014 0.8403614 0.8571429 0 ## 22 0.7023810 0.7941050 0.8263769 0.8099254 0.8328313 0.8690476 0 ## 23 0.7023810 0.7941050 0.8263769 0.8111302 0.8447719 0.8571429 0 ## 24 0.7142857 0.7946429 0.8313253 0.8135112 0.8417599 0.8690476 0 ## 25 0.7142857 0.7916667 0.8313253 0.8099398 0.8408635 0.8690476 0 ## 26 0.7142857 0.7941050 0.8203528 0.8123207 0.8528758 0.8571429 0 ## 27 0.7023810 0.8060456 0.8313253 0.8135112 0.8333333 0.8690476 0 ## 28 0.7261905 0.7941050 0.8203528 0.8111015 0.8328313 0.8690476 0 ## 29 0.7142857 0.7910929 0.8313253 0.8087063 0.8333333 0.8571429 0 ## 30 0.6785714 0.7910929 0.8263769 0.8063253 0.8403614 0.8690476 0 ## ## Kappa ## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's ## 20 0.3956835 0.5316120 0.5961830 0.5854366 0.6661120 0.6955990 0 ## 21 0.3956835 0.5699332 0.5960343 0.5853247 0.6590982 0.6919315 0 ## 22 0.3735084 0.5560661 0.6221836 0.5914492 0.6422128 0.7189781 0 ## 23 0.3735084 0.5594228 0.6228827 0.5939786 0.6657372 0.6955990 0 ## 24 0.3956835 0.5600352 0.6337821 0.5992188 0.6604703 0.7189781 0 ## 25 0.3956835 0.5530760 0.6354875 0.5912239 0.6554912 0.7189781 0 ## 26 0.3956835 0.5589331 0.6136074 0.5969142 0.6822128 0.6955990 0 ## 27 0.3735084 0.5852459 0.6368425 0.5998148 0.6426088 0.7189781 0 ## 28 0.4290780 0.5589331 0.6154905 0.5946859 0.6356141 0.7189781 0 ## 29 0.4070588 0.5534173 0.6337821 0.5901173 0.6423101 0.6919315 0 ## 30 0.3297872 0.5534173 0.6202632 0.5843432 0.6590982 0.7189781 0
Skor akurasi tertinggi diperoleh dengan nilai maxnode sebesar 22.
Langkah 4) Cari pohon terbaik
Sekarang setelah Anda memiliki nilai mtry dan maxnode terbaik, Anda dapat menyesuaikan jumlah pohon. Caranya sama persis dengan maxnode.
store_maxtrees <- list() for (ntree in c(250, 300, 350, 400, 450, 500, 550, 600, 800, 1000, 2000)) { set.seed(5678) rf_maxtrees <- train(survived~., data = data_train, method = "rf", metric = "Accuracy", tuneGrid = tuneGrid, trControl = trControl, importance = TRUE, nodesize = 14, maxnodes = 24, ntree = ntree) key <- toString(ntree) store_maxtrees[[key]] <- rf_maxtrees } results_tree <- resamples(store_maxtrees) summary(results_tree)
Keluaran:
## ## Call: ## summary.resamples(object = results_tree) ## ## Models: 250, 300, 350, 400, 450, 500, 550, 600, 800, 1000, 2000 ## Number of resamples: 10 ## ## Accuracy ## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's ## 250 0.7380952 0.7976190 0.8083764 0.8087010 0.8292683 0.8674699 0 ## 300 0.7500000 0.7886905 0.8024240 0.8027199 0.8203397 0.8452381 0 ## 350 0.7500000 0.7886905 0.8024240 0.8027056 0.8277623 0.8452381 0 ## 400 0.7500000 0.7886905 0.8083764 0.8051009 0.8292683 0.8452381 0 ## 450 0.7500000 0.7886905 0.8024240 0.8039104 0.8292683 0.8452381 0 ## 500 0.7619048 0.7886905 0.8024240 0.8062914 0.8292683 0.8571429 0 ## 550 0.7619048 0.7886905 0.8083764 0.8099062 0.8323171 0.8571429 0 ## 600 0.7619048 0.7886905 0.8083764 0.8099205 0.8323171 0.8674699 0 ## 800 0.7619048 0.7976190 0.8083764 0.8110820 0.8292683 0.8674699 0 ## 1000 0.7619048 0.7976190 0.8121510 0.8086723 0.8303571 0.8452381 0 ## 2000 0.7619048 0.7886905 0.8121510 0.8086723 0.8333333 0.8452381 0 ## ## Kappa ## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's ## 250 0.4061697 0.5667400 0.5836013 0.5856103 0.6335363 0.7196807 0 ## 300 0.4302326 0.5449376 0.5780349 0.5723307 0.6130767 0.6710843 0 ## 350 0.4302326 0.5449376 0.5780349 0.5723185 0.6291592 0.6710843 0 ## 400 0.4302326 0.5482030 0.5836013 0.5774782 0.6335363 0.6710843 0 ## 450 0.4302326 0.5449376 0.5780349 0.5750587 0.6335363 0.6710843 0 ## 500 0.4601542 0.5449376 0.5780349 0.5804340 0.6335363 0.6949153 0 ## 550 0.4601542 0.5482030 0.5857118 0.5884507 0.6396872 0.6949153 0 ## 600 0.4601542 0.5482030 0.5857118 0.5884374 0.6396872 0.7196807 0 ## 800 0.4601542 0.5667400 0.5836013 0.5910088 0.6335363 0.7196807 0 ## 1000 0.4601542 0.5667400 0.5961590 0.5857446 0.6343666 0.6678832 0 ## 2000 0.4601542 0.5482030 0.5961590 0.5862151 0.6440678 0.6656337 0
Anda telah memiliki model akhir. Anda dapat melatih hutan acak dengan parameter berikut:
- ntree =800: 800 pohon akan dilatih
- mtry=4: 4 fitur dipilih untuk setiap iterasi
- maxnodes = 24: Maksimum 24 node di node terminal (keluar)
fit_rf <- train(survived~., data_train, method = "rf", metric = "Accuracy", tuneGrid = tuneGrid, trControl = trControl, importance = TRUE, nodesize = 14, ntree = 800, maxnodes = 24)
Langkah 5) Evaluasi modelnya
Library caret berfungsi untuk melakukan prediksi.
predict(model, newdata= df) argument - `model`: Define the model evaluated before. - `newdata`: Define the dataset to make prediction
prediction <-predict(fit_rf, data_test)
Anda dapat menggunakan prediksi untuk menghitung matriks konfusi dan melihat skor akurasi
confusionMatrix(prediction, data_test$survived)
Keluaran:
## Confusion Matrix and Statistics ## ## Reference ## Prediction No Yes ## No 110 32 ## Yes 11 56 ## ## Accuracy : 0.7943 ## 95% CI : (0.733, 0.8469) ## No Information Rate : 0.5789 ## P-Value [Acc > NIR] : 3.959e-11 ## ## Kappa : 0.5638 ## Mcnemar's Test P-Value : 0.002289 ## ## Sensitivity : 0.9091 ## Specificity : 0.6364 ## Pos Pred Value : 0.7746 ## Neg Pred Value : 0.8358 ## Prevalence : 0.5789 ## Detection Rate : 0.5263 ## Detection Prevalence : 0.6794 ## Balanced Accuracy : 0.7727 ## ## 'Positive' Class : No ##
Anda memiliki akurasi 0.7943 persen, lebih tinggi dari nilai default
Langkah 6) Visualisasikan Hasil
Terakhir, Anda dapat melihat pentingnya fitur dengan fungsi varImp(). Tampaknya ciri yang paling penting adalah jenis kelamin dan usia. Hal ini tidak mengherankan karena ciri-ciri yang penting cenderung tampak dekat dengan akar pohon, sedangkan ciri-ciri yang kurang penting sering kali tampak dekat dengan daun.
varImpPlot(fit_rf)
Keluaran:
varImp(fit_rf) ## rf variable importance ## ## Importance ## sexmale 100.000 ## age 28.014 ## pclassMiddle 27.016 ## fare 21.557 ## pclassUpper 16.324 ## sibsp 11.246 ## parch 5.522 ## embarkedC 4.908 ## embarkedQ 1.420 ## embarkedS 0.000
Ringkasan
Cara melatih dan mengevaluasi hutan acak dapat kita rangkum dengan tabel di bawah ini:
Perpustakaan | Tujuan | fungsi | Parameter |
---|---|---|---|
hutan acak | Buat hutan Acak | Hutan Acak() | rumus, ntree=n, mtry=FALSE, maxnodes = NULL |
tanda sisipan | Buat validasi silang folder K | kontrol kereta() | metode = “cv”, angka = n, pencarian =”grid” |
tanda sisipan | Latih Hutan Acak | melatih() | rumus, df, metode = “rf”, metrik= “Akurasi”, trControl = trainControl(), tuneGrid = NULL |
tanda sisipan | Prediksi keluar dari sampel | meramalkan | model, data baru= df |
tanda sisipan | Matriks dan Statistik Kebingungan | matriks kebingungan() | model, tes y |
tanda sisipan | kepentingan variabel | cvarImp() | model |
Lampiran
Daftar model yang digunakan dalam tanda sisipan
names>(getModelInfo())
Keluaran:
## [1] "ada" "AdaBag" "AdaBoost.M1" ## [4] "adaboost" "amdai" "ANFIS" ## [7] "avNNet" "awnb" "awtan" ## [10] "bag" "bagEarth" "bagEarthGCV" ## [13] "bagFDA" "bagFDAGCV" "bam" ## [16] "bartMachine" "bayesglm" "binda" ## [19] "blackboost" "blasso" "blassoAveraged" ## [22] "bridge" "brnn" "BstLm" ## [25] "bstSm" "bstTree" "C5.0" ## [28] "C5.0Cost" "C5.0Rules" "C5.0Tree" ## [31] "cforest" "chaid" "CSimca" ## [34] "ctree" "ctree2" "cubist" ## [37] "dda" "deepboost" "DENFIS" ## [40] "dnn" "dwdLinear" "dwdPoly" ## [43] "dwdRadial" "earth" "elm" ## [46] "enet" "evtree" "extraTrees" ## [49] "fda" "FH.GBML" "FIR.DM" ## [52] "foba" "FRBCS.CHI" "FRBCS.W" ## [55] "FS.HGD" "gam" "gamboost" ## [58] "gamLoess" "gamSpline" "gaussprLinear" ## [61] "gaussprPoly" "gaussprRadial" "gbm_h3o" ## [64] "gbm" "gcvEarth" "GFS.FR.MOGUL" ## [67] "GFS.GCCL" "GFS.LT.RS" "GFS.THRIFT" ## [70] "glm.nb" "glm" "glmboost" ## [73] "glmnet_h3o" "glmnet" "glmStepAIC" ## [76] "gpls" "hda" "hdda" ## [79] "hdrda" "HYFIS" "icr" ## [82] "J48" "JRip" "kernelpls" ## [85] "kknn" "knn" "krlsPoly" ## [88] "krlsRadial" "lars" "lars2" ## [91] "lasso" "lda" "lda2" ## [94] "leapBackward" "leapForward" "leapSeq" ## [97] "Linda" "lm" "lmStepAIC" ## [100] "LMT" "loclda" "logicBag" ## [103] "LogitBoost" "logreg" "lssvmLinear" ## [106] "lssvmPoly" "lssvmRadial" "lvq" ## [109] "M5" "M5Rules" "manb" ## [112] "mda" "Mlda" "mlp" ## [115] "mlpKerasDecay" "mlpKerasDecayCost" "mlpKerasDropout" ## [118] "mlpKerasDropoutCost" "mlpML" "mlpSGD" ## [121] "mlpWeightDecay" "mlpWeightDecayML" "monmlp" ## [124] "msaenet" "multinom" "mxnet" ## [127] "mxnetAdam" "naive_bayes" "nb" ## [130] "nbDiscrete" "nbSearch" "neuralnet" ## [133] "nnet" "nnls" "nodeHarvest" ## [136] "null" "OneR" "ordinalNet" ## [139] "ORFlog" "ORFpls" "ORFridge" ## [142] "ORFsvm" "ownn" "pam" ## [145] "parRF" "PART" "partDSA" ## [148] "pcaNNet" "pcr" "pda" ## [151] "pda2" "penalized" "PenalizedLDA" ## [154] "plr" "pls" "plsRglm" ## [157] "polr" "ppr" "PRIM" ## [160] "protoclass" "pythonKnnReg" "qda" ## [163] "QdaCov" "qrf" "qrnn" ## [166] "randomGLM" "ranger" "rbf" ## [169] "rbfDDA" "Rborist" "rda" ## [172] "regLogistic" "relaxo" "rf" ## [175] "rFerns" "RFlda" "rfRules" ## [178] "ridge" "rlda" "rlm" ## [181] "rmda" "rocc" "rotationForest" ## [184] "rotationForestCp" "rpart" "rpart1SE" ## [187] "rpart2" "rpartCost" "rpartScore" ## [190] "rqlasso" "rqnc" "RRF" ## [193] "RRFglobal" "rrlda" "RSimca" ## [196] "rvmLinear" "rvmPoly" "rvmRadial" ## [199] "SBC" "sda" "sdwd" ## [202] "simpls" "SLAVE" "slda" ## [205] "smda" "snn" "sparseLDA" ## [208] "spikeslab" "spls" "stepLDA" ## [211] "stepQDA" "superpc" "svmBoundrangeString"## [214] "svmExpoString" "svmLinear" "svmLinear2" ## [217] "svmLinear3" "svmLinearWeights" "svmLinearWeights2" ## [220] "svmPoly" "svmRadial" "svmRadialCost" ## [223] "svmRadialSigma" "svmRadialWeights" "svmSpectrumString" ## [226] "tan" "tanSearch" "treebag" ## [229] "vbmpRadial" "vglmAdjCat" "vglmContRatio" ## [232] "vglmCumulative" "widekernelpls" "WM" ## [235] "wsrf" "xgbLinear" "xgbTree" ## [238] "xyf"