R Random Forest-zelfstudie met voorbeeld
Wat is willekeurig bos in R?
Willekeurige bossen zijn gebaseerd op een simpel idee: ‘de wijsheid van de menigte’. Het samenvoegen van de resultaten van meerdere voorspellers geeft een betere voorspelling dan de beste individuele voorspeller. Een groep voorspellers wordt an genoemd ensemble. Deze techniek wordt dus genoemd Ensemble leren.
In een eerdere tutorial heb je geleerd hoe je deze moet gebruiken Beslissingsbomen om een binaire voorspelling te doen. Om onze techniek te verbeteren, kunnen we een groep trainen Beslissingsboomclassificaties, elk op een andere willekeurige subset van het treinstel. Om een voorspelling te doen, verkrijgen we gewoon de voorspellingen van alle individuele bomen en voorspellen vervolgens de klasse die de meeste stemmen krijgt. Deze techniek heet Willekeurig bos.
Stap 1) Importeer de gegevens
Om er zeker van te zijn dat u over dezelfde dataset beschikt als in de tutorial voor Beslissingsbomenworden de treinproef en proefset op internet opgeslagen. U kunt ze importeren zonder enige wijziging aan te brengen.
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)
Stap 2) Train het model
Eén manier om de prestaties van een model te evalueren, is door het te trainen op een aantal verschillende kleinere datasets en deze te evalueren aan de hand van de andere kleinere testset. Dit heet de F-voudige kruisvalidatie kenmerk. R heeft een functie om willekeurig een aantal datasets van bijna dezelfde grootte te splitsen. Als k=9 bijvoorbeeld, wordt het model geëvalueerd over de negen mappen heen en getest op de resterende testset. Dit proces wordt herhaald totdat alle subsets zijn geëvalueerd. Deze techniek wordt veel gebruikt voor modelselectie, vooral wanneer het model parameters moet afstemmen.
Nu we een manier hebben om ons model te evalueren, moeten we uitzoeken hoe we de parameters kunnen kiezen die de gegevens het beste generaliseren.
Willekeurig bos kiest een willekeurige subset van functies en bouwt vele beslissingsbomen. Het model gemiddeld alle voorspellingen van de beslissingsbomen.
Willekeurig bos heeft enkele parameters die kunnen worden gewijzigd om de generalisatie van de voorspelling te verbeteren. U gebruikt de functie RandomForest() om het model te trainen.
Syntaxis voor Randon Forest is
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
Note: Willekeurig forest kan op meer parameters worden getraind. U kunt verwijzen naar de vignet om de verschillende parameters te zien.
Het afstemmen van een model is erg vervelend werk. Er zijn veel combinaties mogelijk tussen de parameters. Je hebt niet per se de tijd om ze allemaal te proberen. Een goed alternatief is om de machine de voor u beste combinatie te laten zoeken. Er zijn twee methoden beschikbaar:
- Willekeurig zoeken
- Grid zoeken
We zullen beide methoden definiëren, maar tijdens de tutorial zullen we het model trainen met behulp van grid search
Definitie van rasterzoekopdracht
De rasterzoekmethode is eenvoudig: het model wordt geëvalueerd op basis van alle combinaties die u in de functie doorgeeft, met behulp van kruisvalidatie.
U wilt bijvoorbeeld het model uitproberen met 10, 20, 30 bomen en elke boom zal worden getest over een aantal maanden gelijk aan 1, 2, 3, 4, 5. Vervolgens zal de machine 15 verschillende modellen testen:
.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
Het algoritme evalueert:
RandomForest(formula, ntree=10, mtry=1) RandomForest(formula, ntree=10, mtry=2) RandomForest(formula, ntree=10, mtry=3) RandomForest(formula, ntree=20, mtry=2) ...
Elke keer experimenteert het willekeurige bos met een kruisvalidatie. Een tekortkoming van het zoeken naar rasters is het aantal experimenten. Het kan heel gemakkelijk explosief worden als het aantal combinaties hoog is. Om dit probleem te verhelpen, kunt u willekeurig zoeken gebruiken
Willekeurige zoekdefinitie
Het grote verschil tussen willekeurig zoeken en raster zoeken is dat willekeurig zoeken niet alle combinaties van hyperparameters in de zoekruimte evalueert. In plaats daarvan kiest het willekeurig een combinatie bij elke iteratie. Het voordeel is dat het de rekenkosten verlaagt.
Stel de controleparameter in
U gaat als volgt te werk om het model te construeren en te evalueren:
- Evalueer het model met de standaardinstelling
- Vind het beste aantal mtry
- Vind het beste aantal maxnodes
- Vind het beste aantal ntrees
- Evalueer het model op de testgegevensset
Voordat u begint met het verkennen van parameters, moet u twee bibliotheken installeren.
- caret: R machine learning-bibliotheek. Als je hebt installeer R met r-essentieel. Het ligt al in de bibliotheek
- Anaconda: conda install -cr r-caret
- e1071: R machine learning-bibliotheek.
- Anaconda: conda install -cr r-e1071
Je kunt ze samen met RandomForest importeren
library(randomForest) library(caret) library(e1071)
Standaardinstelling
K-voudige kruisvalidatie wordt bestuurd door de trainControl() -functie
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.
U kunt proberen het model uit te voeren met de standaardparameters en de nauwkeurigheidsscore te bekijken.
Note: Je gebruikt tijdens de hele tutorial dezelfde bedieningselementen.
# Define the control trControl <- trainControl(method = "cv", number = 10, search = "grid")
U gebruikt de caret-bibliotheek om uw model te evalueren. De bibliotheek heeft één functie genaamd train() om bijna alles te evalueren machine learning algoritme. Anders gezegd, je kunt deze functie gebruiken om andere algoritmen te trainen.
De basissyntaxis is:
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
Laten we proberen het model te bouwen met de standaardwaarden.
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)
Code Uitleg
- trainControl(method=”cv”, number=10, search=”grid”): Evalueer het model met een rasterzoekopdracht van 10 mappen
- train(…): Train een willekeurig bosmodel. Het beste model wordt gekozen met de nauwkeurigheidsmeting.
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.
Het algoritme gebruikt 500 bomen en testte drie verschillende waarden van mtry: 2, 6, 10.
De uiteindelijke waarde die voor het model werd gebruikt, was mtry = 2 met een nauwkeurigheid van 0.78. Laten we proberen een hogere score te behalen.
Stap 2) Zoek de beste mtry
U kunt het model testen met waarden van mtry van 1 tot 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)
Code Uitleg
- tuneGrid <- expand.grid(.mtry=c(3:10)): Construeer een vector met waarde vanaf 3:10
De uiteindelijke waarde die voor het model werd gebruikt, was 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.
De beste waarde van mtry wordt opgeslagen in:
rf_mtry$bestTune$mtry
U kunt het opslaan en gebruiken wanneer u de andere parameters moet afstemmen.
max(rf_mtry$results$Accuracy)
Output:
## [1] 0.8110729
best_mtry <- rf_mtry$bestTune$mtry best_mtry
Output:
## [1] 4
Stap 3) Zoek de beste maxnodes
U moet een lus maken om de verschillende waarden van maxnodes te evalueren. In de volgende code doet u het volgende:
- Maak een lijst
- Creëer een variabele met de beste waarde van de parameter mtry; Verplicht
- Maak de lus
- Sla de huidige waarde van maxnode op
- Vat de resultaten samen
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)
Code uitleg:
- store_maxnode <- list(): De resultaten van het model worden in deze lijst opgeslagen
- expand.grid(.mtry=best_mtry): Gebruik de beste waarde van mtry
- for (maxnodes in c(15:25)) { … }: Bereken het model met waarden van maxnodes beginnend bij 15 tot 25.
- maxnodes=maxnodes: voor elke iteratie is maxnodes gelijk aan de huidige waarde van maxnodes. dat wil zeggen 15, 16, 17, …
- key <- toString(maxnodes): Bewaar als stringvariabele de waarde van maxnode.
- store_maxnode[[key]] <- rf_maxnode: Bewaar het resultaat van het model in de lijst.
- resamples(store_maxnode): Rangschik de resultaten van het model
- summary(results_mtry): Druk de samenvatting van alle combinaties af.
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
De laatste waarde van maxnode heeft de hoogste nauwkeurigheid. U kunt proberen met hogere waarden om te zien of u een hogere score kunt behalen.
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
De hoogste nauwkeurigheidsscore wordt verkregen met een waarde van maxnode gelijk aan 22.
Stap 4) Zoek de beste ntrees
Nu u de beste waarde van mtry en maxnode heeft, kunt u het aantal bomen afstemmen. De methode is precies hetzelfde als 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
U hebt uw uiteindelijke model. U kunt het willekeurige bos trainen met de volgende parameters:
- ntree =800: 800 bomen worden getraind
- mtry=4: Voor elke iteratie worden 4 features gekozen
- maxnodes = 24: Maximaal 24 knooppunten in de eindknooppunten (bladeren)
fit_rf <- train(survived~., data_train, method = "rf", metric = "Accuracy", tuneGrid = tuneGrid, trControl = trControl, importance = TRUE, nodesize = 14, ntree = 800, maxnodes = 24)
Stap 5) Evalueer het model
De bibliotheek-caret heeft een functie om voorspellingen te doen.
predict(model, newdata= df) argument - `model`: Define the model evaluated before. - `newdata`: Define the dataset to make prediction
prediction <-predict(fit_rf, data_test)
U kunt de voorspelling gebruiken om de verwarringsmatrix te berekenen en de nauwkeurigheidsscore te bekijken
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 ##
U heeft een nauwkeurigheid van 0.7943 procent, wat hoger is dan de standaardwaarde
Stap 6) Visualiseer het resultaat
Ten slotte kunt u het belang van de functie bekijken met de functie varImp(). Het lijkt erop dat de belangrijkste kenmerken het geslacht en de leeftijd zijn. Dat is niet verrassend, omdat de belangrijke kenmerken waarschijnlijk dichter bij de wortel van de boom verschijnen, terwijl minder belangrijke kenmerken vaak dicht bij de bladeren verschijnen.
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
Samenvatting
Hoe je een willekeurig bos traint en evalueert, kun je samenvatten in de onderstaande tabel:
Bibliotheek | Objectief | Functie | Parameter |
---|---|---|---|
willekeurig bos | Maak een willekeurig bos | WillekeurigBos() | formule, ntree=n, mtry=FALSE, maxnodes = NULL |
dakje | Maak kruisvalidatie van de K-map | treinControl() | methode = “cv”, getal = n, zoeken =”raster” |
dakje | Train een willekeurig bos | trein() | formule, df, methode = "rf", metrisch = "Nauwkeurigheid", trControl = trainControl(), tuneGrid = NULL |
dakje | Voorspel buiten de steekproef | voorspellen | model, nieuwedata= df |
dakje | Verwarringsmatrix en statistieken | verwarringMatrix() | model, y-test |
dakje | variabel belang | cvarImp() | model |
Bijlage
Lijst met modellen die in dakje worden gebruikt
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"