10.12 Florestas Aleatórias (RF)

(Breiman 2001) apresenta as Florestas Aleatórias, uma combinação de preditores de árvore, de modo que cada árvore depende dos valores de um vetor aleatório amostrado de forma independente e com a mesma distribuição para todas as árvores na floresta. Esta classe de procedimentos tem algumas características desejáveis:

  1. Sua precisão é tão boa quanto Adaboost e às vezes melhor.

  2. É relativamente robusto para outliers e ruído.

  3. É mais rápido do que o bagging ou boosting.

  4. Fornece estimativas internas úteis de erro, força, correlação e importância da variável.

  5. É simples e facilmente paralelizado.

Exemplo 10.32 Classificando espécies de lírio via florestas aleatórias.

# amostra de treino: 60%
set.seed(1); itrain <- sort(sample(1:nrow(iris), floor(.6*nrow(iris))))
train <- iris[itrain,]
test <- iris[-itrain,]
# modelo
fit <- randomForest::randomForest(Species ~ ., data = train)
fit
## 
## Call:
##  randomForest(formula = Species ~ ., data = train) 
##                Type of random forest: classification
##                      Number of trees: 500
## No. of variables tried at each split: 2
## 
##         OOB estimate of  error rate: 4.44%
## Confusion matrix:
##            setosa versicolor virginica class.error
## setosa         32          0         0  0.00000000
## versicolor      0         24         2  0.07692308
## virginica       0          2        30  0.06250000
# predição
pred <- predict(fit, test)
# matriz de confusão
(cm <- table(pred, test[,5]))
##             
## pred         setosa versicolor virginica
##   setosa         18          0         0
##   versicolor      0         23         1
##   virginica       0          1        17
# relatório via caret::confusionMatrix
caret::confusionMatrix(cm)
## Confusion Matrix and Statistics
## 
##             
## pred         setosa versicolor virginica
##   setosa         18          0         0
##   versicolor      0         23         1
##   virginica       0          1        17
## 
## Overall Statistics
##                                           
##                Accuracy : 0.9667          
##                  95% CI : (0.8847, 0.9959)
##     No Information Rate : 0.4             
##     P-Value [Acc > NIR] : < 2.2e-16       
##                                           
##                   Kappa : 0.9495          
##                                           
##  Mcnemar's Test P-Value : NA              
## 
## Statistics by Class:
## 
##                      Class: setosa Class: versicolor Class: virginica
## Sensitivity                    1.0            0.9583           0.9444
## Specificity                    1.0            0.9722           0.9762
## Pos Pred Value                 1.0            0.9583           0.9444
## Neg Pred Value                 1.0            0.9722           0.9762
## Prevalence                     0.3            0.4000           0.3000
## Detection Rate                 0.3            0.3833           0.2833
## Detection Prevalence           0.3            0.4000           0.3000
## Balanced Accuracy              1.0            0.9653           0.9603

Referências

———. 2001. “Random Forests.” Machine Learning 45 (1): 5–32. https://link.springer.com/content/pdf/10.1023/A:1010933404324.pdf.