Machine Learning · Insper

Random Forest

Abordagem fundamental

Como uma média de árvores instáveis acerta mais que qualquer uma delas

O ponto de partida: árvores são instáveis

  • Na aula de árvores de decisão, árvores reajustadas em reamostras dos mesmos e-mails começavam por perguntas diferentes.
  • Acurácias parecidas, mas duas árvores discordavam em 11,8% dos e-mails.
  • E o voto de 50 delas acertou 0,950, mais que a melhor árvore (0,919).
A ideia de Breiman (bagging, 1996; random forests, 2001): não combater a variância de uma árvore, mas tirar a média de muitas árvores diferentes e deixar os erros se cancelarem.

O caminho desta parte

  1. Por que a média funcionaa variância de uma média e seu piso ρσ²
  2. Bootstrap e baggingreamostrar, crescer árvores fundas, votar
  3. Descorrelacionar as árvoressortear max_features candidatos a cada divisão
  4. Validar out-of-bago erro out-of-bag (OOB); quantas árvores
Cada etapa responde a uma pergunta: por que a média erra menos que seus membros? → de onde vêm muitas árvores diferentes? → como deixar as árvores menos parecidas? → como avaliar sem um conjunto de validação?
Etapa 1 · por que a média erra menos que seus membros?

Por que a média funciona — e onde para

\[ \operatorname{Var}\Big(\frac{1}{n}\sum_{i=1}^n X_i\Big) = \rho\,\sigma^2 + \frac{1-\rho}{n}\,\sigma^2 \]
Variância da média caindo com n até o piso ρσ²; voto da maioria com votantes independentes e correlacionados
  • O segundo termo some com \(n\) grande.
  • O primeiro, \(\rho\sigma^2\), não depende de \(n\): é o erro que todos compartilham.
  • Com \(\rho = 0{,}3\): 10 membros levam a variância de 1 para 0,37; 100, só até 0,31.
Uma floresta precisa de membros razoáveis (\(\sigma^2\) pequeno) e pouco correlacionados (\(\rho\) pequeno).
Etapa 2 · de onde vêm muitas árvores diferentes?

O bootstrap: muitos conjuntos de treino a partir de um

Cada árvore sorteia \(n\) linhas com reposição: algumas entram várias vezes, outras nenhuma. Preveja. Dos 12 clientes de churn, quantos uma árvore vai deixar de fora?

Bagging: bootstrap aggregating

Cresça \(B\) árvores (cada uma na sua própria amostra bootstrap, em geral até a profundidade máxima) e faça a média das previsões (regressão) ou deixe-as votar (classificação).

Três nomes que se confundem

o que se sorteiaquando
bootstraplinhas, com reposição (só a reamostragem)uma vez por árvore
baggingsó as linhas; todo atributo é elegível em toda divisão; as árvores votamuma vez por árvore
random forestas linhas e quais atributos podem perguntaros atributos, de novo em cada divisão
Bagging não sorteia atributos. \(\sqrt{d}\) é quantos atributos a random forest deixa concorrer em cada divisão, com \(d\) = número de atributos (colunas): 64 pixels → 8; os 2 atributos de churn → \(\sqrt{2} \approx 1{,}41 \to 1\).

Bagging: viés baixo, metade da variância

Vinte reajustes de uma árvore rasa, de uma árvore completa e de um bagging
viés²variância
árvore, prof. 30,02230,0274
árvore completa0,00100,0883
bagging, 1000,00060,0413

Podar troca variância por viés. O bagging recusa a troca: mantém o viés da árvore completa e corta a variância pela metade.

O voto suaviza a fronteira

Uma árvore completa, três árvores do bagging e o voto de 300 árvores nas duas luas
Cada árvore do bagging é pior que a árvore única (0,875 contra 0,885), mas o voto acerta 0,904: as ilhas de cada árvore ficam em lugares diferentes e perdem no voto.

Simulador: por que a média de árvores funciona

Bagging: bootstrap e as duas coordenadas em toda divisão. Preveja. Leve as árvores de 1 a 60. As árvores individuais (esquerda) melhoram? O erro do voto continua caindo?

O que a média não faz

  • Não melhora as árvores: cada uma continua tão trêmula quanto a primeira; o que melhora é a média.
  • Não remove viés: a média de árvores rasas continua rasa.
  • Não remove a variância compartilhada \(\rho\sigma^2\): passado um ponto, mais árvores não acrescentam nada.
n_estimators é uma questão de orçamento, não de ajuste: mais nunca é pior, só mais lento.
Etapa 3 · como deixar as árvores menos parecidas?

Random forest: sortear os candidatos de cada divisão

No bagging toda raiz escolhe f3; na random forest cada raiz sorteia três candidatos

Em cada divisão, só max_features atributos sorteados são elegíveis. Árvores mais fracas, mas menos parecidas.

Os 12 clientes de churn: bagging × random forest

Random forest = bootstrap + sorteio de atributos, ao mesmo tempo. Sete árvores com os mesmos bootstraps; ligue o sorteio por cima. Preveja. No bagging, quantas das 7 raízes perguntam bill? E na floresta?

Força contra correlação, nos dígitos

max_featuresmesma raizcorrelaçãoerro de 1 árvoreerro da floresta
64 (bagging)66%0,3040,1950,053
2024%0,2330,2150,027
8 = \(\sqrt{64}\)10%0,1980,2490,023
14%0,1330,3750,030
Árvores piores, floresta mais de duas vezes melhor: \(\rho\) menor compensa \(\sigma^2\) maior. Com 1 atributo as árvores ficam fracas demais. Padrão: \(\sqrt{d}\) na classificação.
Etapa 4 · como avaliar sem um conjunto de validação?

Out-of-bag: validação de graça

  • Cada árvore não viu ~37% das linhas. Para cada linha, só as árvores que não a viram votam.
  • Contando os erros em todas as linhas: o erro OOB, sem nenhum ajuste extra.
dígitos, 500 árvoresacuráciacusto
out-of-bag0,9751 ajuste
CV 5-fold0,977 ± 0,0075 ajustes
teste (450 imagens)0,976—
Para comparar com outros modelos, que não têm OOB, use a mesma CV para todos.

Quantas árvores?

Erro OOB, de teste e de CV caindo até umas 100 árvores e depois estáveis
O erro cai, estaciona e nunca volta a subir. Só leia o OOB com algumas dezenas de árvores: com 5, cada linha tem uns 2 votos e o erro OOB (0,255) é muito pior que o de teste (0,087).

Resumo

  1. A média corta variância até o piso \(\rho\sigma^2\).
  2. O bootstrap dá a cada árvore uma amostra diferente; ~37% das linhas ficam de fora.
  3. Bagging = bootstrap + voto, com todos os atributos — viés baixo, variância cortada.
  4. Random forest = bagging + max_features sorteados em cada divisão (\(\sqrt{d}\)): árvores piores, menos correlacionadas, floresta melhor.
  5. OOB: validação de graça; mais árvores nunca pioram, só custam tempo.
sintomao que fazer
curva OOB estacionouparar de acrescentar árvores
estacionou alto demaisárvores mais fundas, outro max_features, atributos melhores
Lab fundamental · cerca de 40 min, em duplas

Um filtro de spam: da árvore à floresta, passos 1 a 7

  • Spambase: 4.601 e-mails, 57 frequências de palavras e caracteres.
  • Uma árvore, bagging, random forest e Extra-Trees nos mesmos folds; o OOB contra a CV; quantas árvores.
  • Notebook no Colab: nada para baixar. Salve uma cópia no seu Drive.
  • Em cada passo, responda o Preveja antes de rodar.
  • Simulações: a floresta é melhor que as próprias árvores? (passo 4) e árvores rasas, quantas forem (passo 7).

Ritmo: passos 1 a 3 em 10 min; passos 4 e 5 e a primeira simulação em 15 min; passos 6 e 7 e a segunda em 15 min.