R Random Forest Tutorial med eksempel

Hvad er Random Forest i R?

Tilfรฆldige skove er baseret pรฅ en simpel idรฉ: 'mรฆngdens visdom'. Aggregering af resultaterne af flere prรฆdiktorer giver en bedre forudsigelse end den bedste individuelle prรฆdiktor. En gruppe af prรฆdiktorer kaldes en ensemble. Sรฅledes kaldes denne teknik Ensemble lรฆring.

I tidligere selvstudie lรฆrte du, hvordan du bruger Beslutning trรฆer at lave en binรฆr forudsigelse. For at forbedre vores teknik kan vi trรฆne en gruppe af Decision Tree klassifikatorer, hver pรฅ en forskellig tilfรฆldig delmรฆngde af togsรฆttet. For at lave en forudsigelse indhenter vi blot forudsigelserne fra alle individuelle trรฆer og forudsiger derefter den klasse, der fรฅr flest stemmer. Denne teknik kaldes Tilfรฆldig Skov.

Trin 1) Importer dataene

For at sikre dig, at du har det samme datasรฆt som i vejledningen til beslutning trรฆer, er togtesten og testsรฆttet gemt pรฅ internettet. Du kan importere dem uden at foretage nogen รฆndringer.

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)

Trin 2) Trรฆn modellen

En mรฅde at evaluere en models ydeevne pรฅ er at trรฆne den pรฅ en rรฆkke forskellige mindre datasรฆt og evaluere dem i forhold til de andre mindre testsรฆt. Dette kaldes F-fold krydsvalidering funktion. R har en funktion til tilfรฆldigt at opdele antallet af datasรฆt af nรฆsten samme stรธrrelse. For eksempel, hvis k=9, evalueres modellen over de ni mapper og testes pรฅ det resterende testsรฆt. Denne proces gentages, indtil alle delmรฆngderne er blevet evalueret. Denne teknik er meget udbredt til modelvalg, isรฆr nรฅr modellen har parametre, der skal indstilles.

Nu hvor vi har en mรฅde at evaluere vores model pรฅ, skal vi finde ud af, hvordan vi vรฆlger de parametre, der bedst generaliserede dataene.

Tilfรฆldig skov vรฆlger en tilfรฆldig delmรฆngde af funktioner og bygger mange beslutningstrรฆer. Modellen udligner alle forudsigelserne fra beslutningstrรฆerne.

Tilfรฆldig skov har nogle parametre, der kan รฆndres for at forbedre generaliseringen af โ€‹โ€‹forudsigelsen. Du skal bruge funktionen RandomForest() til at trรฆne 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

Bemรฆrk: Tilfรฆldig skov kan trรฆnes pรฅ flere parametre. Du kan henvise til tegnefilm for at se de forskellige parametre.

At tune en model er meget kedeligt arbejde. Der er mange kombinationer mulige mellem parametrene. Du har ikke nรธdvendigvis tid til at prรธve dem alle. Et godt alternativ er at lade maskinen finde den bedste kombination for dig. Der er to tilgรฆngelige metoder:

  • Tilfรฆldig sรธgning
  • Netsรธgning

Vi vil definere begge metoder, men i lรธbet af selvstudiet vil vi trรฆne modellen ved hjรฆlp af gittersรธgning

Grid Search definition

Gittersรธgningsmetoden er enkel, modellen vil blive evalueret over al den kombination, du passerer i funktionen, ved hjรฆlp af krydsvalidering.

For eksempel vil du prรธve modellen med 10, 20, 30 antal trรฆer, og hvert trรฆ vil blive testet over et antal mtry svarende til 1, 2, 3, 4, 5. Derefter vil maskinen teste 15 forskellige 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 tilfรฆldige skov med en krydsvalidering. En mangel ved gittersรธgningen er antallet af eksperimenter. Det kan meget let blive eksplosivt, nรฅr antallet af kombinationer er hรธjt. For at lรธse dette problem kan du bruge den tilfรฆldige sรธgning

Definition af tilfรฆldig sรธgning

Den store forskel mellem tilfรฆldig sรธgning og gittersรธgning er, at tilfรฆldig sรธgning ikke evaluerer al kombinationen af โ€‹โ€‹hyperparametre i sรธgerummet. I stedet vil den tilfรฆldigt vรฆlge kombination ved hver iteration. Fordelen er, at det sรฆnker beregningsomkostningerne.

Indstil kontrolparameteren

Du vil fortsรฆtte som fรธlger for at konstruere og evaluere modellen:

  • Evaluer modellen med standardindstillingen
  • Find det bedste antal mtry
  • Find det bedste antal maxnodes
  • Find det bedste antal ntrรฆer
  • Evaluer modellen pรฅ testdatasรฆttet

Fรธr du begynder med udforskningen af โ€‹โ€‹parametrene, skal du installere to biblioteker.

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

Du kan importere dem sammen med RandomForest

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

Standardindstilling

K-fold krydsvalidering styres af trainControl()-funktionen

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 at kรธre modellen med standardparametrene og se nรธjagtighedsscore.

Bemรฆrk: Du vil bruge de samme kontroller under hele selvstudiet.

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

Du vil bruge caret-biblioteket til at evaluere din model. Biblioteket har en funktion kaldet train() til at evaluere nรฆsten alle machine learning algoritme. Sig anderledes, du kan bruge denne funktion til at trรฆne andre algoritmer.

Den grundlรฆggende syntaks 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

Lad os prรธve at bygge modellen med standardvรฆrdierne.

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(metode=โ€cvโ€, nummer=10, search=โ€gridโ€): Evaluer modellen med en gittersรธgning pรฅ 10 mappe
  • tog(...): Trรฆn en tilfรฆldig skovmodel. Bedste model vรฆlges med nรธjagtighedsmรฅlet.

Output:

## 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 bruger 500 trรฆer og testede tre forskellige vรฆrdier af mtry: 2, 6, 10.

Den endelige vรฆrdi, der blev brugt til modellen, var mtry = 2 med en nรธjagtighed pรฅ 0.78. Lad os prรธve at fรฅ en hรธjere score.

Trin 2) Sรธg efter bedste mtry

Du kan teste modellen med vรฆrdier 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 vรฆrdi fra 3:10

Den endelige vรฆrdi, der blev brugt til modellen, var mtry = 4.

Output:

## 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 bedste vรฆrdi af mtry er gemt i:

rf_mtry$bestTune$mtry

Du kan gemme det og bruge det, nรฅr du skal indstille de andre parametre.

max(rf_mtry$results$Accuracy)

Output:

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

Output:

## [1] 4

Trin 3) Sรธg efter de bedste maxnodes

Du skal oprette en lรธkke for at evaluere de forskellige vรฆrdier af maxnodes. I fรธlgende kode vil du:

  • Opret en liste
  • Opret en variabel med den bedste vรฆrdi af parameteren mtry; Obligatorisk
  • Opret lรธkken
  • Gem den aktuelle vรฆrdi af maxnode
  • Opsummer resultaterne
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(): Resultaterne af modellen vil blive gemt pรฅ denne liste
  • expand.grid(.mtry=best_mtry): Brug den bedste vรฆrdi af mtry
  • for (maxnodes in c(15:25)) { โ€ฆ }: Beregn modellen med vรฆrdier af maxnodes startende fra 15 til 25.
  • maxnodes=maxnodes: For hver iteration er maxnodes lig med den aktuelle vรฆrdi af maxnodes. dvs 15, 16, 17, โ€ฆ
  • key <- toString(maxnodes): Gem vรฆrdien af โ€‹โ€‹maxnode som en strengvariabel.
  • store_maxnode[[key]] <- rf_maxnode: Gem resultatet af modellen pรฅ listen.
  • resamples(store_maxnode): Arranger resultaterne af modellen
  • summary(results_mtry): Udskriv oversigten over alle kombinationerne.

Output:

## 
## 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 sidste vรฆrdi af maxnode har den hรธjeste nรธjagtighed. Du kan prรธve med hรธjere vรฆrdier for at se, om du kan fรฅ en hรธjere score.

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)

Output:

## 
## 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รธjeste nรธjagtighedsscore opnรฅs med en vรฆrdi pรฅ maxnode lig med 22.

Trin 4) Sรธg efter de bedste trรฆer

Nu hvor du har den bedste vรฆrdi af mtry og maxnode, kan du justere antallet af trรฆer. Metoden er nรธjagtig 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)

Output:

## 
## 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 model. Du kan trรฆne den tilfรฆldige skov med fรธlgende parametre:

  • ntree =800: 800 trรฆer vil blive trรฆnet
  • mtry=4: 4 funktioner er valgt for hver iteration
  • maxnodes = 24: Maksimalt 24 noder i terminalnoderne (blade)
fit_rf <- train(survived~.,
    data_train,
    method = "rf",
    metric = "Accuracy",
    tuneGrid = tuneGrid,
    trControl = trControl,
    importance = TRUE,
    nodesize = 14,
    ntree = 800,
    maxnodes = 24)

Trin 5) Evaluer modellen

Biblioteket har en funktion til at forudsige.

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 bruge forudsigelsen til at beregne forvirringsmatricen og se nรธjagtighedsscore

confusionMatrix(prediction, data_test$survived)

Output:

## 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รธjagtighed pรฅ 0.7943 procent, hvilket er hรธjere end standardvรฆrdien

Trin 6) Visualiser resultatet

Til sidst kan du se pรฅ funktionens betydning med funktionen varImp(). Det ser ud til, at de vigtigste egenskaber er kรธn og alder. Det er ikke overraskende, fordi de vigtige trรฆk sandsynligvis vises tรฆttere pรฅ trรฆets rod, mens mindre vigtige trรฆk ofte vil virke lukket for bladene.

varImpPlot(fit_rf)

Output:

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		

Resumรฉ

Vi kan opsummere, hvordan man trรฆner og evaluerer en tilfรฆldig skov med nedenstรฅende tabel:

Bibliotek Objektiv Funktion Parameter
randomForest Opret en tilfรฆldig skov RandomForest() formel, ntree=n, mtry=FALSE, maxnodes = NULL
indskudsmรฆrke Opret K-mappe krydsvalidering trainControl() metode = "cv", tal = n, sรธg = "gitter"
indskudsmรฆrke Trรฆn en tilfรฆldig skov tog() formel, df, metode = "rf", metrisk = "Nรธjagtighed", trControl = trainControl(), tuneGrid = NULL
indskudsmรฆrke Forudsig ud af prรธven forudsige model, newdata= df
indskudsmรฆrke Forvirringsmatrix og statistik confusionMatrix() model, y test
indskudsmรฆrke variabel betydning cvarImp() model

Tillรฆg

Liste over model brugt i caret

names>(getModelInfo())

Output:

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

Opsummer dette indlรฆg med: