R Random Forest Tutorial s primjerom

Što je Random Forest u R?

Nasumične šume temelje se na jednostavnoj ideji: 'mudrosti gomile'. Zbir rezultata višestrukih prediktora daje bolje predviđanje od najboljeg pojedinačnog prediktora. Skupina prediktora naziva se an ansambl. Dakle, ova tehnika se zove Učenje ansambla.

U prethodnom vodiču naučili ste kako koristiti Stabla odlučivanja napraviti binarno predviđanje. Kako bismo poboljšali svoju tehniku, možemo trenirati grupu Klasifikatori stabla odlučivanja, svaki na različitom slučajnom podskupu skupa vlakova. Da bismo napravili predviđanje, samo dobivamo predviđanja svih pojedinačnih stabala, zatim predviđamo klasu koja dobiva najviše glasova. Ova tehnika se zove Slučajna šuma.

Korak 1) Uvezite podatke

Kako biste bili sigurni da imate isti skup podataka kao u vodiču za stabla odlučivanja, test vlaka i ispitni skup pohranjeni su na internetu. Možete ih uvesti bez ikakvih promjena.

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)

Korak 2) Uvježbajte model

Jedan od načina da se ocijeni izvedba modela je da se uvježba na više različitih manjih skupova podataka i da se oni ocijene na drugom manjem skupu za testiranje. Ovo se zove F-fold unakrsna provjera valjanosti značajka. R ima funkciju za nasumično dijeljenje skupova podataka gotovo iste veličine. Na primjer, ako je k=9, model se procjenjuje u devet mapa i testira na preostalom testnom skupu. Ovaj se postupak ponavlja dok se ne procijene svi podskupovi. Ova tehnika se naširoko koristi za odabir modela, posebno kada model ima parametre za podešavanje.

Sada kada imamo način da ocijenimo naš model, moramo smisliti kako odabrati parametre koji najbolje generaliziraju podatke.

Nasumična šuma odabire nasumični podskup značajki i gradi mnoga stabla odlučivanja. Model izračunava prosjek svih predviđanja stabala odluka.

Slučajna šuma ima neke parametre koji se mogu promijeniti kako bi se poboljšala generalizacija predviđanja. Koristit ćete funkciju RandomForest() za obuku modela.

Sintaksa za Randon Forest je

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

bilješke: Nasumična šuma može se trenirati na više parametara. Možete se obratiti na vinjeta kako biste vidjeli različite parametre.

Ugađanje modela vrlo je naporan posao. Postoji mnogo mogućih kombinacija između parametara. Ne morate nužno imati vremena da ih sve isprobate. Dobra alternativa je pustiti stroj da pronađe najbolju kombinaciju za vas. Dostupne su dvije metode:

  • Nasumično pretraživanje
  • Mrežno pretraživanje

Definirat ćemo obje metode, ali ćemo tijekom poduke uvježbati model pomoću pretraživanja mreže

Definicija pretraživanja mreže

Metoda pretraživanja mreže je jednostavna, model će se procijeniti preko svih kombinacija koje proslijedite u funkciji, koristeći unakrsnu provjeru.

Na primjer, želite isprobati model s 10, 20, 30 stabala i svako će se stablo testirati tijekom broja mtry jednakih 1, 2, 3, 4, 5. Zatim će stroj testirati 15 različitih modela:

    .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	

Algoritam će procijeniti:

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

Svaki put nasumična šuma eksperimentira s unakrsnom provjerom. Jedan nedostatak pretraživanja mreže je broj pokusa. Vrlo lako može postati eksplozivan kada je broj kombinacija velik. Da biste riješili ovaj problem, možete upotrijebiti nasumično pretraživanje

Definicija nasumičnog pretraživanja

Velika razlika između nasumičnog pretraživanja i pretraživanja mreže je što nasumično pretraživanje neće procijeniti sve kombinacije hiperparametara u prostoru pretraživanja. Umjesto toga, nasumično će odabrati kombinaciju pri svakoj iteraciji. Prednost je niži trošak računanja.

Postavite kontrolni parametar

Za izradu i procjenu modela postupit ćete na sljedeći način:

  • Procijenite model sa zadanom postavkom
  • Pronađite najbolji broj mtry
  • Pronađite najbolji broj maksimalnih čvorova
  • Pronađite najbolji broj n-stabala
  • Ocijenite model na testnom skupu podataka

Prije nego počnete s istraživanjem parametara, trebate instalirati dvije biblioteke.

  • caret: R biblioteka strojnog učenja. Ako imate instalirati R s r-bitnim. Već je u knjižnici
  • e1071: R biblioteka strojnog učenja.

Možete ih uvesti zajedno s RandomForestom

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

Tvorničke postavke

Unakrsnu provjeru K-preklopa kontrolira funkcija trainControl().

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.

Možete pokušati pokrenuti model sa zadanim parametrima i vidjeti ocjenu točnosti.

bilješke: Koristit ćete iste kontrole tijekom cijelog podučavanja.

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

Za procjenu svog modela koristit ćete biblioteku karata. Knjižnica ima jednu funkciju koja se zove train() za procjenu gotovo svih stroj za učenje algoritam. Recimo drugačije, ovu funkciju možete koristiti za treniranje drugih algoritama.

Osnovna sintaksa je:

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

Pokušajmo izgraditi model sa zadanim vrijednostima.

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)

Objašnjenje koda

  • trainControl(method=”cv”, broj=10, search=”grid”): Procijenite model s pretraživanjem mreže od 10 mapa
  • treniraj(…): treniraj slučajni model šume. Najbolji model bira se s mjerom točnosti.

Izlaz:

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

Algoritam koristi 500 stabala i testirao je tri različite vrijednosti mtry: 2, 6, 10.

Konačna vrijednost korištena za model bila je mtry = 2 s točnošću od 0.78. Pokušajmo postići veći rezultat.

Korak 2) Potražite najbolju mtry

Model možete testirati s vrijednostima mtry od 1 do 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)

Objašnjenje koda

  • tuneGrid <- expand.grid(.mtry=c(3:10)): Konstruirajte vektor s vrijednošću od 3:10

Konačna vrijednost korištena za model bila je mtry = 4.

Izlaz:

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

Najbolja vrijednost mtry pohranjena je u:

rf_mtry$bestTune$mtry

Možete ga pohraniti i koristiti kada trebate podesiti ostale parametre.

max(rf_mtry$results$Accuracy)

Izlaz:

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

Izlaz:

## [1] 4

Korak 3) Potražite najbolje maksimalne čvorove

Morate stvoriti petlju za procjenu različitih vrijednosti maksimalnih čvorova. U sljedećem kodu ćete:

  • Stvorite popis
  • Kreirajte varijablu s najboljom vrijednošću parametra mtry; Obavezno
  • Napravite petlju
  • Pohrani trenutnu vrijednost maxnode
  • Sažmite rezultate
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)

Objašnjenje koda:

  • store_maxnode <- list(): Rezultati modela bit će pohranjeni na ovoj listi
  • expand.grid(.mtry=best_mtry): Koristite najbolju vrijednost mtry
  • for (maxnodes in c(15:25)) { … }: Izračunajte model s vrijednostima maxnodes počevši od 15 do 25.
  • maxnodes=maxnodes: Za svaku iteraciju, maxnodes je jednak trenutnoj vrijednosti maxnodes. tj. 15, 16, 17, …
  • ključ <- toString(maxnodes): Pohrani kao string varijablu vrijednost maxnode.
  • store_maxnode[[ključ]] <- rf_maxnode: Spremi rezultat modela na popis.
  • resamples(store_maxnode): Rasporedi rezultate modela
  • summary(results_mtry): Ispis sažetka svih kombinacija.

Izlaz:

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

Posljednja vrijednost maxnode ima najveću točnost. Možete pokušati s višim vrijednostima da vidite možete li dobiti veći rezultat.

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)

Izlaz:

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

Najveća ocjena točnosti dobiva se s vrijednošću maxnode jednakom 22.

Korak 4) Potražite najbolja stabla

Sada kada imate najbolju vrijednost mtry i maxnode, možete podesiti broj stabala. Metoda je potpuno ista kao i 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)

Izlaz:

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

Imate svoj konačni model. Slučajnu šumu možete trenirati sa sljedećim parametrima:

  • ntree =800: 800 stabala će biti obučeno
  • mtry=4: 4 značajke su odabrane za svaku iteraciju
  • maxnodes = 24: Maksimalno 24 čvora u terminalnim čvorovima (lišće)
fit_rf <- train(survived~.,
    data_train,
    method = "rf",
    metric = "Accuracy",
    tuneGrid = tuneGrid,
    trControl = trControl,
    importance = TRUE,
    nodesize = 14,
    ntree = 800,
    maxnodes = 24)

Korak 5) Procijenite model

Bibliotečna oznaka ima funkciju predviđanja.

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

Možete koristiti predviđanje za izračunavanje matrice zabune i vidjeti ocjenu točnosti

confusionMatrix(prediction, data_test$survived)

Izlaz:

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

Imate točnost od 0.7943 posto, što je više od zadane vrijednosti

Korak 6) Vizualizirajte rezultat

Na kraju, možete pogledati važnost značajke pomoću funkcije varImp(). Čini se da su najvažnija obilježja spol i dob. To nije iznenađujuće jer će se važne značajke vjerojatno pojaviti bliže korijenu stabla, dok će se manje važne značajke često pojaviti blizu lišća.

varImpPlot(fit_rf)

Izlaz:

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		

Rezime

Možemo sažeti kako trenirati i ocijeniti slučajnu šumu pomoću tablice u nastavku:

Knjižnica Cilj funkcija Parametar
randomForest Stvorite slučajnu šumu RandomForest() formula, ntree=n, mtry=FALSE, maxnodes = NULL
znak za umetanje Stvorite unakrsnu provjeru mape K trainControl() metoda = “cv”, broj = n, pretraga =”mreža”
znak za umetanje Trenirajte nasumične šume vlak() formula, df, metoda = “rf”, metrika = “Točnost”, trControl = trainControl(), tuneGrid = NULL
znak za umetanje Predvidjeti izvan uzorka predvidjeti model, novi podaci= df
znak za umetanje Matrica zabune i statistika Matrica zbunjenosti() model, y test
znak za umetanje promjenljiva važnost cvarImp() model

Dodatak

Popis modela korištenih u umetanju

names>(getModelInfo())

Izlaz:

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