Samouczek dotyczący losowego lasu R z przykładem
Co to jest losowy las w R?
Losowe lasy opierają się na prostym pomyśle: „mądrości tłumu”. Suma wyników wielu predyktorów daje lepszą prognozę niż najlepszy indywidualny predyktor. Grupa predyktorów nazywana jest an ensemble. Dlatego ta technika nazywa się Nauka zespołowa.
We wcześniejszym samouczku nauczyłeś się używać Drzewa decyzyjne dokonać przewidywania binarnego. Aby udoskonalić naszą technikę, możemy szkolić grupę Klasyfikatory drzew decyzyjnych, każdy w innym losowym podzbiorze zbioru pociągów. Aby dokonać przewidywania, po prostu uzyskujemy przewidywania wszystkich pojedynczych drzew, a następnie przewidujemy klasę, która otrzyma najwięcej głosów. Ta technika nazywa się Losowy las.
Krok 1) Importuj dane
Aby upewnić się, że masz ten sam zestaw danych, co w samouczku dotyczącym drzewa decyzyjne, test pociągu i zestaw testowy są przechowywane w Internecie. Możesz je zaimportować bez wprowadzania jakichkolwiek zmian.
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)
Krok 2) Wytrenuj model
Jednym ze sposobów oceny wydajności modelu jest wytrenowanie go na wielu różnych mniejszych zbiorach danych i ocena ich na podstawie innego, mniejszego zestawu testowego. Nazywa się to F-krotna weryfikacja krzyżowa cecha. R posiada funkcję losowego podziału liczby zbiorów danych o prawie tym samym rozmiarze. Na przykład, jeśli k=9, model jest oceniany w dziewięciu folderach i testowany na pozostałym zestawie testowym. Proces ten powtarza się aż do oceny wszystkich podzbiorów. Technika ta jest szeroko stosowana przy wyborze modelu, zwłaszcza gdy model ma parametry do dostrojenia.
Teraz, gdy mamy sposób na ocenę naszego modelu, musimy dowiedzieć się, jak wybrać parametry, które najlepiej uogólnią dane.
Losowy las wybiera losowy podzbiór funkcji i buduje wiele drzew decyzyjnych. Model uśrednia wszystkie przewidywania drzew decyzyjnych.
Losowy las ma pewne parametry, które można zmienić, aby poprawić uogólnienie przewidywań. Do uczenia modelu użyjesz funkcji RandomForest().
Składnia Randon Forest to
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: Losowy las można trenować na większej liczbie parametrów. Możesz odwołać się do winieta aby zobaczyć różne parametry.
Strojenie modelu to bardzo żmudna praca. Istnieje wiele możliwych kombinacji parametrów. Niekoniecznie masz czas, aby wypróbować je wszystkie. Dobrą alternatywą jest umożliwienie maszynie znalezienia najlepszej dla Ciebie kombinacji. Dostępne są dwie metody:
- Losowe wyszukiwanie
- Wyszukiwanie siatki
Zdefiniujemy obie metody, ale w trakcie tutoriala przeszkolimy model za pomocą wyszukiwania siatki
Definicja wyszukiwania w siatce
Metoda wyszukiwania siatki jest prosta, model zostanie oceniony na podstawie całej kombinacji przekazanej w funkcji za pomocą sprawdzania krzyżowego.
Na przykład chcesz wypróbować model z 10, 20, 30 drzewami, a każde drzewo będzie testowane przez liczbę mtry równą 1, 2, 3, 4, 5. Następnie maszyna przetestuje 15 różnych modeli:
.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
Algorytm oceni:
RandomForest(formula, ntree=10, mtry=1) RandomForest(formula, ntree=10, mtry=2) RandomForest(formula, ntree=10, mtry=3) RandomForest(formula, ntree=20, mtry=2) ...
Za każdym razem losowy las przeprowadza eksperymenty z weryfikacją krzyżową. Wadą przeszukiwania siatki jest liczba eksperymentów. Może stać się bardzo łatwo wybuchowy, gdy liczba kombinacji jest wysoka. Aby rozwiązać ten problem, możesz użyć wyszukiwania losowego
Definicja wyszukiwania losowego
Główną różnicą między wyszukiwaniem losowym a wyszukiwaniem siatki jest to, że wyszukiwanie losowe nie ocenia wszystkich kombinacji hiperparametrów w przestrzeni wyszukiwania. Zamiast tego losowo wybiera kombinację w każdej iteracji. Zaletą jest to, że obniża koszt obliczeniowy.
Ustaw parametr kontrolny
Aby skonstruować i ocenić model, będziesz postępować w następujący sposób:
- Oceń model z ustawieniami domyślnymi
- Znajdź najlepszą liczbę mtry
- Znajdź najlepszą liczbę maxnodów
- Znajdź najlepszą liczbę ndrzew
- Oceń model na testowym zestawie danych
Zanim zaczniesz eksplorację parametrów, musisz zainstalować dwie biblioteki.
- caret: Biblioteka uczenia maszynowego R. Jeśli masz zainstaluj r z r-essential. Jest już w bibliotece
- anakonda: conda install -cr r-caret
- e1071: Biblioteka uczenia maszynowego R.
- anakonda: conda install -cr r-e1071
Możesz je zaimportować razem z RandomForest
library(randomForest) library(caret) library(e1071)
Ustawienia domyślne
Walidacja krzyżowa K-krotna jest kontrolowana przez funkcję 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żesz spróbować uruchomić model z domyślnymi parametrami i sprawdzić wynik dokładności.
Note: Przez cały samouczek będziesz używać tych samych elementów sterujących.
# Define the control trControl <- trainControl(method = "cv", number = 10, search = "grid")
Do oceny modelu użyjesz biblioteki caret. Biblioteka ma jedną funkcję o nazwie train() do oceny prawie wszystkich uczenie maszynowe algorytm. Inaczej mówiąc, możesz użyć tej funkcji do trenowania innych algorytmów.
Podstawowa składnia to:
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
Spróbujmy zbudować model z wartościami domyślnymi.
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śnienie kodu
- trainControl(method=”cv”, number=10, search=”grid”): Oceń model za pomocą przeszukiwania siatki 10 folderów
- pociąg(…): Wytrenuj losowy model lasu. Najlepszy model wybiera się na podstawie miary dokładności.
Wyjście:
## 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.
Algorytm wykorzystuje 500 drzew i testuje trzy różne wartości mtry: 2, 6, 10.
Ostateczną wartością zastosowaną w modelu było mtry = 2 z dokładnością 0.78. Spróbujmy uzyskać wyższy wynik.
Krok 2) Wyszukaj najlepiej mtry
Możesz przetestować model z wartościami 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śnienie kodu
- tuneGrid <-expand.grid(.mtry=c(3:10)): Skonstruuj wektor o wartości od 3:10
Ostateczna wartość zastosowana w modelu wynosiła mtry = 4.
Wyjście:
## 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.
Najlepsza wartość mtry jest przechowywana w:
rf_mtry$bestTune$mtry
Można go przechowywać i używać, gdy trzeba dostroić inne parametry.
max(rf_mtry$results$Accuracy)
Wyjście:
## [1] 0.8110729
best_mtry <- rf_mtry$bestTune$mtry best_mtry
Wyjście:
## [1] 4
Krok 3) Wyszukaj najlepsze maxnody
Musisz utworzyć pętlę, aby ocenić różne wartości maxnodes. W poniższym kodzie:
- Tworzenie listy
- Utwórz zmienną o najlepszej wartości parametru mtry; Obowiązkowy
- Utwórz pętlę
- Zapisz bieżącą wartość maxnode
- Podsumuj wyniki
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)
Wyjaśnienie kodu:
- store_maxnode <-list(): Wyniki modelu będą przechowywane na tej liście
- Expand.grid(.mtry=best_mtry): Użyj najlepszej wartości mtry
- for (maxnodes in c(15:25)) { … }: Oblicz model z wartościami maxnodes zaczynając od 15 do 25.
- maxnodes=maxnodes: Dla każdej iteracji maxnodes jest równe bieżącej wartości maxnodes. czyli 15, 16, 17, …
- klucz <- toString(maxnodes): Przechowuj jako zmienną łańcuchową wartość maxnode.
- store_maxnode[[key]] <- rf_maxnode: Zapisz wynik modelu na liście.
- resamples(store_maxnode): Uporządkuj wyniki modelu
- podsumowanie(results_mtry): Wydrukuj podsumowanie całej kombinacji.
Wyjście:
## ## 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
Ostatnia wartość maxnode ma najwyższą dokładność. Możesz spróbować z wyższymi wartościami, aby sprawdzić, czy możesz uzyskać wyższy wynik.
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)
Wyjście:
## ## 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
Najwyższy wynik dokładności uzyskuje się przy wartości maxnode równej 22.
Krok 4) Wyszukaj najlepsze drzewa
Teraz, gdy masz najlepszą wartość mtry i maxnode, możesz dostroić liczbę drzew. Metoda jest dokładnie taka sama jak 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)
Wyjście:
## ## 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
Masz swój ostateczny model. Możesz trenować losowy las z następującymi parametrami:
- ntree =800: przeszkolonych zostanie 800 drzew
- mtry=4: Dla każdej iteracji wybierane są 4 funkcje
- maxnodes = 24: Maksymalnie 24 węzły w węzłach końcowych (liście)
fit_rf <- train(survived~., data_train, method = "rf", metric = "Accuracy", tuneGrid = tuneGrid, trControl = trControl, importance = TRUE, nodesize = 14, ntree = 800, maxnodes = 24)
Krok 5) Oceń model
Karetka biblioteczna posiada funkcję przewidywania.
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żesz użyć prognozy do obliczenia macierzy zamieszania i sprawdzenia wyniku dokładności
confusionMatrix(prediction, data_test$survived)
Wyjście:
## 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 ##
Masz dokładność 0.7943 procent, czyli wyższą niż wartość domyślna
Krok 6) Wizualizuj wynik
Na koniec możesz sprawdzić ważność funkcji za pomocą funkcji varImp(). Wydaje się, że najważniejsze cechy to płeć i wiek. Nie jest to zaskakujące, ponieważ ważne cechy prawdopodobnie pojawią się bliżej korzenia drzewa, podczas gdy mniej ważne cechy często będą pojawiać się blisko liści.
varImpPlot(fit_rf)
Wyjście:
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
Podsumowanie
Sposób trenowania i oceny lasu losowego można podsumować w poniższej tabeli:
Biblioteka | Cel | Funkcjonować | Parametr |
---|---|---|---|
losowy las | Utwórz losowy las | Losowy Las() | formuła, ntree=n, mtry=FALSE, maxnodes = NULL |
wstawka korektorska | Utwórz weryfikację krzyżową folderu K | kontrola pociągu() | metoda = „cv”, liczba = n, wyszukiwanie = „siatka” |
wstawka korektorska | Wytrenuj losowy las | pociąg() | formuła, df, metoda = „rf”, metryka = „Dokładność”, trControl = trainControl(), tuneGrid = NULL |
wstawka korektorska | Przewiduj na podstawie próbki | przewidzieć | model, nowedane=df |
wstawka korektorska | Matryca zamieszania i statystyki | zamieszanieMatrix() | model, test |
wstawka korektorska | zmienne znaczenie | cvarImp() | model |
dodatek
Lista modeli używanych w karetce
names>(getModelInfo())
Wyjście:
## [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"