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
  • e1071: R-koneoppimiskirjasto.

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"

Tiivistรค tรคmรค viesti seuraavasti: