R Random Forest Tutorial med eksempel

Hva er Random Forest i R?

Tilfeldige skoger er basert pรฅ en enkel idรฉ: "menighetens visdom". Aggregering av resultatene fra flere prediktorer gir en bedre prediksjon enn den beste individuelle prediktoren. En gruppe prediktorer kalles en ensemble. Derfor kalles denne teknikken Ensemble lรฆring.

I tidligere opplรฆring lรฆrte du hvordan du bruker Beslutningstrรฆr รฅ lage en binรฆr prediksjon. For รฅ forbedre vรฅr teknikk kan vi trene en gruppe pรฅ Decision Tree klassifiserere, hver pรฅ et annet tilfeldig delsett av togsettet. For รฅ lage en spรฅdom innhenter vi bare spรฅdommene til alle individuelle trรฆr, og forutsier deretter klassen som fรฅr flest stemmer. Denne teknikken kalles Tilfeldig skog.

Trinn 1) Importer dataene

For รฅ vรฆre sikker pรฅ at du har samme datasett som i opplรฆringen for avgjรธrelse trรฆr, er togtesten og testsettet lagret pรฅ internett. Du kan importere dem uten รฅ gjรธre noen endringer.

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)

Trinn 2) Tren modellen

En mรฅte รฅ evaluere ytelsen til en modell pรฅ er รฅ trene den pรฅ en rekke forskjellige mindre datasett og evaluere dem over det andre mindre testsettet. Dette kalles F-fold kryssvalidering funksjonen. R har en funksjon for รฅ dele antall datasett av nesten samme stรธrrelse tilfeldig. For eksempel, hvis k=9, blir modellen evaluert over de ni mappene og testet pรฅ det gjenvรฆrende testsettet. Denne prosessen gjentas til alle delsettene er evaluert. Denne teknikken er mye brukt for modellvalg, spesielt nรฅr modellen har parametere som skal justeres.

Nรฅ som vi har en mรฅte รฅ evaluere modellen vรฅr pรฅ, mรฅ vi finne ut hvordan vi velger parametrene som best generaliserte dataene.

Tilfeldig skog velger en tilfeldig undergruppe av funksjoner og bygger mange beslutningstrรฆr. Modellen gjennomsnitt ut alle spรฅdommene til beslutningstrรฆrene.

Tilfeldig skog har noen parametere som kan endres for รฅ forbedre generaliseringen av prediksjonen. Du skal bruke funksjonen RandomForest() for รฅ trene modellen.

Syntaks for Randon Forest er

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

Merknader: Tilfeldig skog kan trenes pรฅ flere parametere. Du kan referere til vignett for รฅ se de forskjellige parameterne.

ร… stille inn en modell er veldig kjedelig arbeid. Det er mange kombinasjoner mulig mellom parameterne. Du har ikke nรธdvendigvis tid til รฅ prรธve dem alle. Et godt alternativ er รฅ la maskinen finne den beste kombinasjonen for deg. Det er to tilgjengelige metoder:

  • Tilfeldig sรธk
  • Rutenett sรธk

Vi vil definere begge metodene, men i lรธpet av opplรฆringen vil vi trene modellen ved รฅ bruke rutenettsรธk

Definisjon av rutenettsรธk

Rutenettsรธkemetoden er enkel, modellen vil bli evaluert over all kombinasjonen du passerer i funksjonen, ved bruk av kryssvalidering.

For eksempel vil du prรธve modellen med 10, 20, 30 antall trรฆr og hvert tre vil bli testet over et antall mtry lik 1, 2, 3, 4, 5. Deretter vil maskinen teste 15 forskjellige modeller:

    .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	

Algoritmen vil evaluere:

RandomForest(formula, ntree=10, mtry=1)
RandomForest(formula, ntree=10, mtry=2)
RandomForest(formula, ntree=10, mtry=3)
RandomForest(formula, ntree=20, mtry=2)
...

Hver gang eksperimenterer den tilfeldige skogen med en kryssvalidering. En mangel ved rutenettsรธket er antall eksperimenter. Det kan bli veldig lett eksplosivt nรฅr antallet kombinasjoner er hรธyt. For รฅ lรธse dette problemet kan du bruke det tilfeldige sรธket

Definisjon av tilfeldig sรธk

Den store forskjellen mellom tilfeldig sรธk og rutenettsรธk er at tilfeldig sรธk ikke vil evaluere all kombinasjonen av hyperparameter i sรธkeomrรฅdet. I stedet vil den tilfeldig velge kombinasjon ved hver iterasjon. Fordelen er at det reduserer beregningskostnadene.

Still inn kontrollparameteren

Du vil fortsette som fรธlger for รฅ konstruere og evaluere modellen:

  • Evaluer modellen med standardinnstillingen
  • Finn det beste antallet mtry
  • Finn det beste antallet maksnoder
  • Finn det beste antallet ntre
  • Evaluer modellen pรฅ testdatasettet

Fรธr du begynner med parameterutforskningen, mรฅ du installere to biblioteker.

  • caret: R maskinlรฆringsbibliotek. Hvis du har installer R med r-essensielt. Den ligger allerede pรฅ biblioteket
  • e1071: R maskinlรฆringsbibliotek.

Du kan importere dem sammen med RandomForest

library(randomForest)
library(caret)
library(e1071)

Standardinnstilling

K-fold kryssvalidering styres av trainControl()-funksjonen

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.

Du kan prรธve รฅ kjรธre modellen med standardparametrene og se nรธyaktighetsscore.

Merknader: Du vil bruke de samme kontrollene under hele opplรฆringen.

# Define the control
trControl <- trainControl(method = "cv",
    number = 10,
    search = "grid")

Du vil bruke caret-biblioteket til รฅ evaluere modellen din. Biblioteket har en funksjon kalt train() for รฅ evaluere nesten alle maskinlรฆring algoritme. Si annerledes, du kan bruke denne funksjonen til รฅ trene andre algoritmer.

Den grunnleggende syntaksen er:

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

La oss prรธve รฅ bygge modellen med standardverdiene.

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)

Kode Forklaring

  • trainControl(method=โ€cvโ€, number=10, search=โ€gridโ€): Evaluer modellen med et rutenettsรธk pรฅ 10 mapper
  • tog(...): Tren en tilfeldig skogmodell. Beste modell er valgt med nรธyaktighetsmรฅlet.

Utgang:

## 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.

Algoritmen bruker 500 trรฆr og testet tre forskjellige verdier av mtry: 2, 6, 10.

Den endelige verdien som ble brukt for modellen var mtry = 2 med en nรธyaktighet pรฅ 0.78. La oss prรธve รฅ fรฅ en hรธyere poengsum.

Trinn 2) Sรธk best mtry

Du kan teste modellen med verdier pรฅ mtry fra 1 til 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)

Kode Forklaring

  • tuneGrid <- expand.grid(.mtry=c(3:10)): Konstruer en vektor med verdi fra 3:10

Den endelige verdien som ble brukt for modellen var mtry = 4.

Utgang:

## 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.

Den beste verdien av mtry er lagret i:

rf_mtry$bestTune$mtry

Du kan lagre den og bruke den nรฅr du trenger รฅ stille inn de andre parameterne.

max(rf_mtry$results$Accuracy)

Utgang:

## [1] 0.8110729
best_mtry <- rf_mtry$bestTune$mtry 
best_mtry

Utgang:

## [1] 4

Trinn 3) Sรธk etter de beste maxnodene

Du mรฅ lage en lรธkke for รฅ evaluere de forskjellige verdiene til maxnodes. I fรธlgende kode vil du:

  • Lag en liste
  • Lag en variabel med den beste verdien av parameteren mtry; Obligatorisk
  • Lag lรธkken
  • Lagre gjeldende verdi for maxnode
  • Oppsummer resultatene
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)

Kodeforklaring:

  • store_maxnode <- list(): Resultatene av modellen vil bli lagret i denne listen
  • expand.grid(.mtry=best_mtry): Bruk den beste verdien av mtry
  • for (maksnoder i c(15:25)) { โ€ฆ }: Beregn modellen med verdier for maksnoder som starter fra 15 til 25.
  • maxnodes=maxnodes: For hver iterasjon er maxnodes lik gjeldende verdi av maxnodes. dvs. 15, 16, 17, โ€ฆ
  • key <- toString(maxnodes): Lagre som en strengvariabel verdien til maxnode.
  • store_maxnode[[key]] <- rf_maxnode: Lagre resultatet av modellen i listen.
  • resamples(store_maxnode): Ordne resultatene av modellen
  • summary(results_mtry): Skriv ut sammendraget av alle kombinasjonene.

Utgang:

## 
## 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

Den siste verdien av maxnode har hรธyest nรธyaktighet. Du kan prรธve med hรธyere verdier for รฅ se om du kan fรฅ en hรธyere poengsum.

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)

Utgang:

## 
## 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

Den hรธyeste nรธyaktighetsscore oppnรฅs med en verdi pรฅ maxnode lik 22.

Trinn 4) Sรธk i de beste treene

Nรฅ som du har den beste verdien av mtry og maxnode, kan du justere antall trรฆr. Metoden er nรธyaktig den samme som 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)

Utgang:

## 
## 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

Du har din endelige modell. Du kan trene den tilfeldige skogen med fรธlgende parametere:

  • ntree =800: 800 trรฆr skal trenes
  • mtry=4: 4 funksjoner er valgt for hver iterasjon
  • maxnodes = 24: Maksimalt 24 noder i terminalnodene (blader)
fit_rf <- train(survived~.,
    data_train,
    method = "rf",
    metric = "Accuracy",
    tuneGrid = tuneGrid,
    trControl = trControl,
    importance = TRUE,
    nodesize = 14,
    ntree = 800,
    maxnodes = 24)

Trinn 5) Vurder modellen

Biblioteket har en funksjon for รฅ forutsi.

predict(model, newdata= df)
argument
- `model`: Define the model evaluated before. 
- `newdata`: Define the dataset to make prediction
prediction <-predict(fit_rf, data_test)

Du kan bruke prediksjonen til รฅ beregne forvirringsmatrisen og se nรธyaktighetsscore

confusionMatrix(prediction, data_test$survived)

Utgang:

## 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             
## 

Du har en nรธyaktighet pรฅ 0.7943 prosent, som er hรธyere enn standardverdien

Trinn 6) Visualiser resultatet

Til slutt kan du se pรฅ funksjonens betydning med funksjonen varImp(). Det ser ut til at de viktigste egenskapene er kjรธnn og alder. Det er ikke overraskende fordi de viktige funksjonene sannsynligvis vises nรฆrmere roten av treet, mens mindre viktige funksjoner ofte vil virke lukket for bladene.

varImpPlot(fit_rf)

Utgang:

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		

Sammendrag

Vi kan oppsummere hvordan man trener og evaluerer en tilfeldig skog med tabellen nedenfor:

Bibliotek Mรฅlet Funksjon Parameter
randomForest Lag en tilfeldig skog RandomForest() formel, ntree=n, mtry=FALSE, maxnodes = NULL
vaktmester Opprett kryssvalidering av K-mappe trainControl() metode = "cv", tall = n, sรธk = "rutenett"
vaktmester Tren en tilfeldig skog tog() formel, df, metode = "rf", metrisk = "Nรธyaktighet", trControl = trainControl(), tuneGrid = NULL
vaktmester Forutsi ut av prรธven forutsi modell, newdata= df
vaktmester Forvirringsmatrise og statistikk confusionMatrix() modell, y test
vaktmester variabel betydning cvarImp() modell

Vedlegg

Liste over modeller brukt i caret

names>(getModelInfo())

Utgang:

##   [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"

Oppsummer dette innlegget med: