R Random Forest Tutorial esimerkin kanssa
Mikรค on Random Forest R:ssรค?
Satunnaiset metsรคt perustuvat yksinkertaiseen ajatukseen: "joukon viisaudelle". Useiden ennustajien tulosten aggregaatti antaa paremman ennusteen kuin paras yksittรคinen ennustaja. Ennustajien ryhmรครค kutsutaan an kokonaisuus. Siksi tรคtรค tekniikkaa kutsutaan Yhtye-oppiminen.
Aiemmassa opetusohjelmassa opit kรคyttรคmรครคn Pรครคttรคvรคt puut tehdรค binรครคrinen ennustus. Tekniikkamme parantamiseksi voimme kouluttaa ryhmรคn Pรครคtรถspuun luokittimet, jokainen junajoukon eri satunnaisessa osajoukossa. Ennusteen tekemiseksi hankimme vain kaikkien yksilรถpuiden ennusteet ja ennustamme sitten eniten รครคniรค saaneen luokan. Tรคtรค tekniikkaa kutsutaan Satunnainen metsรค.
Vaihe 1) Tuo tiedot
Varmistaaksesi, ettรค sinulla on sama tietojoukko kuin opetusohjelmassa pรครคtรถksentekopuut, junatesti ja testisarja on tallennettu Internetiin. Voit tuoda ne ilman muutoksia.
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)
Vaihe 2) Kouluta malli
Yksi tapa arvioida mallin suorituskykyรค on harjoitella sitรค useilla erilaisilla pienemmillรค tietojoukoilla ja arvioida ne toiseen pienempรครคn testijoukkoon verrattuna. Tรคtรค kutsutaan F-kertainen ristiinvalidointi ominaisuus. R on toiminto, joka jakaa satunnaisesti useita lรคhes samankokoisia tietojoukkoja. Jos esimerkiksi k=9, malli arvioidaan yhdeksรคn kansion yli ja testataan jรคljellรค olevalla testijoukolla. Tรคtรค prosessia toistetaan, kunnes kaikki osajoukot on arvioitu. Tรคtรค tekniikkaa kรคytetรครคn laajalti mallien valinnassa, varsinkin kun mallilla on viritettรคvรคt parametrit.
Nyt kun meillรค on tapa arvioida malliamme, meidรคn on selvitettรคvรค, kuinka valita parametrit, jotka yleistivรคt parhaiten dataa.
Satunnainen metsรค valitsee satunnaisen osajoukon ominaisuuksia ja rakentaa useita pรครคtรถspuita. Malli laskee keskiarvon kaikista pรครคtรถspuiden ennusteista.
Satunnaisessa metsรคssรค on joitain parametreja, joita voidaan muuttaa ennusteen yleistรคmisen parantamiseksi. Kรคytรคt funktiota RandomForest() mallin kouluttamiseen.
Randon Forestin syntaksi on
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
Huomautuksia: Satunnaista metsรครค voidaan kouluttaa useammille parametreille. Voit viitata vinjetti nรคhdรคksesi eri parametrit.
Mallin viritys on erittรคin tyรถlรคstรค tyรถtรค. Parametrien vรคlillรค on monia yhdistelmiรค. Sinulla ei vรคlttรคmรคttรค ole aikaa kokeilla kaikkia. Hyvรค vaihtoehto on antaa koneen lรถytรครค sinulle paras yhdistelmรค. Kรคytettรคvissรค on kaksi tapaa:
- Satunnainen haku
- Ruudukkohaku
Mรครคrittelemme molemmat menetelmรคt, mutta harjoituksen aikana harjoittelemme mallia ruudukkohaun avulla
Ruudukkohaun mรครคritelmรค
Ruudukkohakumenetelmรค on yksinkertainen, mallia arvioidaan ristiinvalidoinnin avulla kaikkien funktiossa vรคlitettyjen yhdistelmรคn osalta.
Haluat esimerkiksi kokeilla mallia, jossa on 10, 20, 30 puuta, ja jokainen puu testataan usealla mtry:llรค, joka on 1, 2, 3, 4, 5. Sitten kone testaa 15 eri mallia:
.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
Algoritmi arvioi:
RandomForest(formula, ntree=10, mtry=1) RandomForest(formula, ntree=10, mtry=2) RandomForest(formula, ntree=10, mtry=3) RandomForest(formula, ntree=20, mtry=2) ...
Joka kerta satunnainen metsรค kokeilee ristiinvalidointia. Yksi ruudukkohaun puute on kokeilujen mรครคrรค. Siitรค voi tulla erittรคin helposti rรคjรคhdysherkkรค, kun yhdistelmien lukumรครคrรค on suuri. Voit ratkaista tรคmรคn ongelman kรคyttรคmรคllรค satunnaista hakua
Satunnaishaun mรครคritelmรค
Suuri ero satunnaishaun ja ruudukkohaun vรคlillรค on, ettรค satunnaishaku ei arvioi kaikkia hyperparametrien yhdistelmรครค hakutilassa. Sen sijaan se valitsee satunnaisesti yhdistelmรคn joka iteraatiossa. Sen etuna on alhaisemmat laskentakustannukset.
Aseta ohjausparametri
Rakennat ja arvioit mallin seuraavasti:
- Arvioi malli oletusasetuksilla
- Etsi paras mรครคrรค mtry
- Etsi paras mรครคrรค maxnodeja
- Etsi paras mรครคrรค puita
- Arvioi malli testitietojoukosta
Ennen kuin aloitat parametrien tutkimisen, sinun on asennettava kaksi kirjastoa.
- caret: R koneoppimiskirjasto. Jos sinulla on asenna R r-essentialin kanssa. Se on jo kirjastossa
- Anaconda: conda install -cr r-caret
- e1071: R-koneoppimiskirjasto.
- Anaconda: conda install -cr r-e1071
Voit tuoda ne yhdessรค RandomForestin kanssa
library(randomForest) library(caret) library(e1071)
Oletusasetus
K-kertaista ristiinvalidointia ohjaa trainControl()-funktio
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.
Voit yrittรครค ajaa mallia oletusparametreilla ja nรคhdรค tarkkuuspisteet.
Huomautuksia: Kรคytรคt samoja sรครคtimiรค koko opetusohjelman ajan.
# Define the control
trControl <- trainControl(method = "cv",
number = 10,
search = "grid")
Arvioi mallisi Caret-kirjaston avulla. Kirjastossa on yksi funktio nimeltรค train() arvioimaan lรคhes kaikki koneoppiminen algoritmi. Sano toisin, voit kรคyttรครค tรคtรค toimintoa muiden algoritmien opettamiseen.
Perussyntaksi on:
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
Kokeillaan rakentaa malli oletusarvoilla.
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)
Koodin selitys
- trainControl(method=โcvโ, numero=10, search=โgridโ): Arvioi malli 10 kansion ruudukkohaulla
- juna(โฆ): Harjoittele satunnainen metsรคmalli. Paras malli valitaan tarkkuusmittauksella.
lรคhtรถ:
## 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.
Algoritmi kรคyttรครค 500 puuta ja testasi kolmea erilaista mtry-arvoa: 2, 6, 10.
Mallissa kรคytetty lopullinen arvo oli mtry = 2, jonka tarkkuus oli 0.78. Yritetรครคn saada korkeampi pistemรครคrรค.
Vaihe 2) Etsi paras mtry
Voit testata mallia mtry-arvoilla 1-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)
Koodin selitys
- tuneGrid <- expand.grid(.mtry=c(3:10)): Rakenna vektori, jonka arvo on 3:10
Mallissa kรคytetty lopullinen arvo oli mtry = 4.
lรคhtรถ:
## 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.
Mtry:n paras arvo on tallennettu:
rf_mtry$bestTune$mtry
Voit tallentaa sen ja kรคyttรครค sitรค, kun haluat virittรครค muita parametreja.
max(rf_mtry$results$Accuracy)
lรคhtรถ:
## [1] 0.8110729
best_mtry <- rf_mtry$bestTune$mtry best_mtry
lรคhtรถ:
## [1] 4
Vaihe 3) Etsi parhaat maxsolmut
Sinun on luotava silmukka arvioidaksesi maxnode-arvoja. Seuraavassa koodissa saat:
- Luo luettelo
- Luo muuttuja, jolla on paras parametrin arvo mtry; Pakollinen
- Luo silmukka
- Tallenna maxnoden nykyinen arvo
- Tee yhteenveto tuloksista
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)
Koodin selitys:
- store_maxnode <- list(): Mallin tulokset tallennetaan tรคhรคn luetteloon
- expand.grid(.mtry=best_mtry): Kรคytรค mtry:n parasta arvoa
- for (maxnodes in c(15:25)) { โฆ }: Laske malli maksimisolmujen arvoilla alkaen 15-25.
- maxnodes=maxnodes: Jokaisessa iteraatiossa maxnodes on yhtรค suuri kuin maxnodesin nykyinen arvo. eli 15, 16, 17...
- avain <- toString(maxnodes): Tallenna merkkijonomuuttujaksi maxnode-arvo.
- store_maxnode[[avain]] <- rf_maxnode: Tallenna mallin tulos luetteloon.
- resamples(store_maxnode): Jรคrjestรค mallin tulokset
- summary(results_mtry): Tulosta yhteenveto kaikesta yhdistelmรคstรค.
lรคhtรถ:
## ## 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
Maxnoden viimeisellรค arvolla on suurin tarkkuus. Voit kokeilla suurempia arvoja nรคhdรคksesi, voitko saada korkeamman pistemรครคrรคn.
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)
lรคhtรถ:
## ## 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
Korkein tarkkuuspistemรครคrรค saadaan, kun maxnode-arvo on 22.
Vaihe 4) Etsi parhaat puut
Nyt kun sinulla on paras arvo mtry:lle ja maxnodelle, voit sรครคtรครค puiden mรครคrรครค. Menetelmรค on tรคsmรคlleen sama kuin 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)
lรคhtรถ:
## ## 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
Sinulla on lopullinen mallisi. Voit harjoitella satunnaista metsรครค seuraavilla parametreilla:
- ntree = 800: 800 puuta koulutetaan
- mtry=4: Jokaiselle iteraatiolle valitaan 4 ominaisuutta
- maxnodes = 24: enintรครคn 24 solmua pรครคtesolmuissa (lehdet)
fit_rf <- train(survived~.,
data_train,
method = "rf",
metric = "Accuracy",
tuneGrid = tuneGrid,
trControl = trControl,
importance = TRUE,
nodesize = 14,
ntree = 800,
maxnodes = 24)
Vaihe 5) Arvioi malli
Kirjastokartalla on ennustetoiminto.
predict(model, newdata= df) argument - `model`: Define the model evaluated before. - `newdata`: Define the dataset to make prediction
prediction <-predict(fit_rf, data_test)
Voit kรคyttรครค ennustetta laskeaksesi sekavuusmatriisin ja nรคhdรคksesi tarkkuuspisteet
confusionMatrix(prediction, data_test$survived)
lรคhtรถ:
## 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 ##
Tarkkuus on 0.7943 prosenttia, mikรค on suurempi kuin oletusarvo
Vaihe 6) Visualisoi tulos
Lopuksi voit tarkastella ominaisuuden tรคrkeyttรค funktiolla varImp(). Nรคyttรครค siltรค, โโโโettรค tรคrkeimmรคt ominaisuudet ovat sukupuoli ja ikรค. Tรคmรค ei ole yllรคttรคvรครค, koska tรคrkeรคt ominaisuudet nรคkyvรคt todennรคkรถisesti lรคhempรคnรค puun juuria, kun taas vรคhemmรคn tรคrkeรคt ominaisuudet nรคkyvรคt usein suljettuina lehdissรค.
varImpPlot(fit_rf)
lรคhtรถ:
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
Yhteenveto
Voimme tiivistรครค satunnaisen metsรคn kouluttamisesta ja arvioinnista alla olevan taulukon avulla:
| Kirjasto | Tavoite | Toiminto | Parametri |
|---|---|---|---|
| satunnainen metsรค | Luo satunnainen metsรค | RandomForest() | kaava, ntree=n, mtry=FALSE, maxnodes = NULL |
| caret | Luo K-kansion ristiintarkistus | trainControl() | menetelmรค = "cv", numero = n, haku = "ruudukko" |
| caret | Harjoittele satunnaista metsรครค | kouluttaa() | kaava, df, metodi = "rf", metriikka = "Tarkkuus", trControl = trainControl(), tuneGrid = NULL |
| caret | Ennusta pois nรคytteestรค | ennustaa | malli, newdata= df |
| caret | Sekaannusmatriisi ja tilastot | confusionMatrix() | malli, y testi |
| caret | vaihteleva merkitys | cvarImp() | malli |
Liite
Luettelo caretissa kรคytetyistรค malleista
names>(getModelInfo())
lรคhtรถ:
## [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"
