R Random Forest Tutorial példával

Mi az a Random Forest R-ben?

A véletlenszerű erdők egy egyszerű gondolaton alapulnak: „a tömeg bölcsességén”. Több előrejelző eredményének összesítése jobb előrejelzést ad, mint a legjobb egyéni előrejelző. A prediktorok egy csoportját an együttes. Így ezt a technikát ún Együttes tanulás.

A korábbi oktatóanyagban megtanultad használni Döntési fák hogy bináris jóslatot készítsünk. Technikánk fejlesztése érdekében edzhetünk egy csoportot Döntési fa osztályozók, mindegyik a vonatkészlet egy-egy véletlenszerű részhalmazán. A jóslat elkészítéséhez csak megkapjuk az összes fa előrejelzését, majd megjósoljuk azt az osztályt, amelyik a legtöbb szavazatot kapja. Ezt a technikát ún Véletlen Erdő.

Step 1) Importálja az adatokat

Annak biztosítása érdekében, hogy ugyanaz az adatkészlet legyen, mint az oktatóanyagban döntési fák, a vonatteszt és a tesztkészlet az interneten tárolódik. Módosítás nélkül importálhatja őket.

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)

2. lépés) Tanítsa meg a modellt

Egy modell teljesítményének értékelésének egyik módja az, hogy több különböző kisebb adatkészletre betanítja, és értékeli őket a másik kisebb tesztelési halmazhoz képest. Ezt hívják a F-szeres keresztellenőrzés funkciót. R olyan funkcióval rendelkezik, amely véletlenszerűen osztja fel a közel azonos méretű adatkészleteket. Például, ha k=9, akkor a modell a kilenc mappán keresztül kiértékelődik, és a fennmaradó tesztkészleten teszteli. Ezt a folyamatot addig ismételjük, amíg az összes részhalmazt kiértékeljük. Ezt a technikát széles körben használják a modell kiválasztására, különösen akkor, ha a modellnek vannak hangolandó paraméterei.

Most, hogy módunk van a modellünk értékelésére, ki kell találnunk, hogyan válasszuk ki azokat a paramétereket, amelyek a legjobban általánosítják az adatokat.

A véletlenszerű erdő kiválasztja a jellemzők egy véletlenszerű részhalmazát, és sok döntési fát épít. A modell átlagolja a döntési fák összes előrejelzését.

A véletlenszerű erdőnek van néhány paramétere, amelyek megváltoztathatók az előrejelzés általánosításának javítása érdekében. A modell betanításához a RandomForest() függvényt fogja használni.

A Randon Forest szintaxisa:

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

Megjegyzések: Véletlenszerű erdő több paraméterre is betanítható. Hivatkozhat a címke a különböző paraméterek megtekintéséhez.

A modell hangolása nagyon fárasztó munka. A paraméterek között sok kombináció lehetséges. Nem feltétlenül van ideje mindegyiket kipróbálni. Egy jó alternatíva, ha hagyja, hogy a gép megtalálja az Ön számára legmegfelelőbb kombinációt. Két módszer áll rendelkezésre:

  • Véletlenszerű keresés
  • Rács keresés

Mindkét módszert meghatározzuk, de az oktatóprogram során rácskereséssel betanítjuk a modellt

Grid Search definíció

A rács keresési módszere egyszerű, a modell kiértékelésre kerül a függvényben átadott összes kombinációra keresztellenőrzés segítségével.

Például, ha ki akarja próbálni a modellt 10, 20, 30 fával, és minden fát olyan mtry-n keresztül tesztelnek, amely 1, 2, 3, 4, 5. Ezután a gép 15 különböző modellt tesztel:

    .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	

Az algoritmus kiértékeli:

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

A véletlenszerű erdő minden alkalommal keresztellenőrzéssel kísérletez. A rácskeresés egyik hiányossága a kísérletek száma. Nagyon könnyen robbanásveszélyessé válhat, ha magas a kombinációk száma. A probléma megoldásához használhatja a véletlenszerű keresést

Véletlenszerű keresés definíciója

A véletlenszerű keresés és a rácskeresés közötti nagy különbség az, hogy a véletlenszerű keresés nem értékeli ki a keresési térben található hiperparaméterek összes kombinációját. Ehelyett véletlenszerűen választja ki a kombinációt minden iterációnál. Előnye, hogy alacsonyabb a számítási költség.

Állítsa be a vezérlési paramétert

A modell felépítéséhez és értékeléséhez a következőképpen járjon el:

  • Értékelje a modellt az alapértelmezett beállítással
  • Keresse meg a legjobb számú mtry-t
  • Keresse meg a legjobb számú maxnode-ot
  • Keresse meg a legjobb számú fát
  • Értékelje a modellt a tesztadatkészleten

Mielőtt elkezdené a paraméterek feltárását, két könyvtárat kell telepítenie.

  • caret: R gépi tanulási könyvtár. Ha van telepítse az R r-essentialvel. Már a könyvtárban van
  • e1071: R gépi tanulási könyvtár.

Importálhatja őket a RandomForesttel együtt

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

Alapértelmezett beállítás

A K-szeres keresztellenőrzést a trainControl() függvény vezérli

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.

Megpróbálhatja futtatni a modellt az alapértelmezett paraméterekkel, és megtekintheti a pontossági pontszámot.

Megjegyzések: Ugyanazokat a vezérlőket fogja használni az összes oktatóanyag alatt.

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

A caret könyvtárat fogja használni a modell értékeléséhez. A könyvtárnak van egy train() nevű függvénye, amely szinte az összeset kiértékeli gépi tanulás algoritmus. Mondjuk másképp, ezzel a funkcióval más algoritmusokat is betaníthat.

Az alap szintaxis a következő:

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

Próbáljuk meg felépíteni a modellt az alapértelmezett értékekkel.

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)

Kód Magyarázat

  • trainControl(method=”cv”, number=10, search=”grid”): A modell kiértékelése 10 mappából álló rácskereséssel
  • vonat(…): Véletlenszerű erdőmodell betanítása. A legjobb modellt a pontosság mértékével választják ki.

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.

Az algoritmus 500 fát használ, és három különböző mtry értéket tesztel: 2, 6, 10.

A modellhez használt végső érték mtry = 2 volt, 0.78 pontossággal. Próbáljunk magasabb pontszámot elérni.

2. lépés) Keresse meg a legjobb mtry-t

A modellt 1 és 10 közötti mtry értékekkel tesztelheti

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)

Kód Magyarázat

  • tuneGrid <- expand.grid(.mtry=c(3:10)): 3:10-től kezdődő értékű vektor létrehozása

A modellhez használt végső érték mtry = 4 volt.

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.

Az mtry legjobb értékét a következő helyen tároljuk:

rf_mtry$bestTune$mtry

Tárolhatja és használhatja, amikor a többi paramétert hangolnia kell.

max(rf_mtry$results$Accuracy)

output:

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

output:

## [1] 4

3. lépés) Keresse meg a legjobb maxnode-okat

Létre kell hoznia egy hurkot a maxnodes különböző értékeinek kiértékeléséhez. A következő kódban:

  • Hozzon létre egy listát
  • Hozzon létre egy változót az mtry paraméter legjobb értékével; Kötelező
  • Hozd létre a hurkot
  • Tárolja a maxnode aktuális értékét
  • Foglalja össze az eredményeket
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)

Kód magyarázata:

  • store_maxnode <- list(): A modell eredményei ebben a listában lesznek eltárolva
  • expand.grid(.mtry=best_mtry): Az mtry legjobb értékét használja
  • for (maxnodes in c(15:25)) { … }: Számítsa ki a modellt 15-től 25-ig kezdődő maxnode értékekkel.
  • maxnodes=maxnodes: Minden iterációnál a maxnodes megegyezik a maxnodes aktuális értékével. azaz 15, 16, 17,…
  • kulcs <- toString(maxnodes): A maxnode értékét karakterlánc változóként tárolja.
  • store_maxnode[[kulcs]] <- rf_maxnode: Mentse el a modell eredményét a listába.
  • resamples(store_maxnode): Rendezd el a modell eredményeit
  • summary(results_mtry): Nyomtassa ki az összes kombináció összefoglalóját.

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

A maxnode utolsó értéke a legnagyobb pontosságú. Megpróbálhatja magasabb értékekkel, hogy lássa, kaphat-e magasabb pontszámot.

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

A legmagasabb pontossági pontszámot akkor kapjuk, ha a maxnode értéke 22.

4. lépés) Keresse meg a legjobb fákat

Most, hogy megvan a legjobb mtry és maxnode értéke, beállíthatja a fák számát. A módszer pontosan ugyanaz, mint a 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

Megvan a végső modelled. A véletlenszerű erdőt a következő paraméterekkel taníthatja:

  • ntree =800: 800 fa lesz kiképezve
  • mtry=4: 4 jellemző van kiválasztva minden iterációhoz
  • maxnodes = 24: Maximum 24 csomópont a terminális csomópontokban (levelek)
fit_rf <- train(survived~.,
    data_train,
    method = "rf",
    metric = "Accuracy",
    tuneGrid = tuneGrid,
    trControl = trControl,
    importance = TRUE,
    nodesize = 14,
    ntree = 800,
    maxnodes = 24)

5. lépés) Értékelje a modellt

A könyvtári ügyeletnek előrejelzési funkciója van.

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

Az előrejelzés segítségével kiszámíthatja a zavaros mátrixot, és megtekintheti a pontossági pontszámot

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

Ön 0.7943 százalékos pontossággal rendelkezik, ami magasabb, mint az alapértelmezett érték

6. lépés: Vizualizálja az eredményt

Végül megnézheti a szolgáltatás fontosságát a varImp() függvénnyel. Úgy tűnik, hogy a legfontosabb jellemzők a nem és az életkor. Ez nem meglepő, mert a fontos tulajdonságok valószínűleg közelebb jelennek meg a fa gyökeréhez, míg a kevésbé fontos jellemzők gyakran zárva a levelekhez.

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		

Összegzésként

Az alábbi táblázatban foglalhatjuk össze, hogyan képezzünk és értékeljünk egy véletlenszerű erdőt:

könyvtár Objektív Funkció Vizsgált paraméter
randomForest Hozzon létre egy véletlenszerű erdőt RandomForest() formula, ntree=n, mtry=FALSE, maxnodes = NULL
hiányjel Hozzon létre K mappa keresztellenőrzést trainControl() metódus = "cv", szám = n, keresés = "rács"
hiányjel Véletlenszerű erdő képzése vonat() formula, df, metódus = "rf", metrika = "pontosság", trControl = trainControl(), tuneGrid = NULL
hiányjel Előrejelzés a mintából előre modell, newdata= df
hiányjel Zavart mátrix és statisztika confusionMatrix() modell, y teszt
hiányjel változó fontosságú cvarImp() modell

Függelék

A caretben használt modellek listája

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"