Uma Explicação Intuitiva dos Classificadores Random Forest e Extra Trees

Usando a sabedoria da multidão para impulsionar o desempenho

Frank Ceballos Segue Jul 14 · 7 min ler Foto de Aberture Vintage no Unsplash

Objetivo: O objetivo deste artigo é fornecer ao leitor uma compreensão intuitiva dos classificadores Random Forest e Extra Trees .

Materiais e métodos: Utilizaremos o conjunto de dados Iris, que contém características que descrevem três espécies de flores. No total, há 150 instâncias, cada uma contendo quatro características e rotuladas com uma espécie de flor. Nós investigaremos e reportaremos a precisão das Árvores de Decisão, Floresta Aleatória e Árvores Extra.

Hardware : Nós treinamos e avaliamos nossos modelos em uma workstation da Apple equipada com 8 GB de 1600 MHz DDR3, com Inter (R) Core (TM) i7 com 2 CPUs a 2,9 Ghz e uma placa Intel HD Graphics 4000. Vamos chutar um pouco.

Nota: Caso você esteja começando do zero, aconselho seguir este artigo para instalar todas as bibliotecas necessárias. Finalmente, será assumido que o leitor está familiarizado com as árvores Python, Pandas, Scikit-learn e decision. Uma explicação detalhada sobre as árvores de decisão do Scikit-learn pode ser encontrada aqui .

Um único coto contra 1000 cepos

Suponha que tenhamos um aluno fraco, um classificador cuja precisão seja ligeiramente melhor que uma decisão aleatória, com uma precisão de classificação de 51%. Esse pode ser um stump de decisão , um classificador de árvore de decisão com sua profundidade definida como um. Em primeira instância, parece que não se deve incomodar com um classificador tão fraco; No entanto, e se considerarmos a montagem de 1000 tocos de decisão ligeiramente diferentes (um conjunto), cada um com precisão de 51% para fazer nossa previsão final? Intuitivamente, podemos ver que, em média, 510 desses classificadores classificariam corretamente um caso de teste e o 490 o classificaria incorretamente. Se coletarmos os votos duros de cada classificador, poderíamos ver que, em média, haveria cerca de 20 previsões mais corretas; consequentemente, nosso conjunto tenderia a ter uma precisão maior que 51%. Vamos ver isso na prática.

Aqui nós vamos construir um stump de decisão e comparar seu desempenho preditivo para um conjunto de 1000 deles. O conjunto de árvores de decisão é criado usando o Scikit-learn BaggingClassifier . O stump de decisão e o conjunto serão treinados no dataset Iris que contém quatro características e três classes. Os dados são divididos aleatoriamente para criar um conjunto de treinamento e teste.

Cada coto de decisão será construído com os seguintes critérios:

  1. Todos os dados disponíveis no conjunto de treinamento são usados para construir cada coto.
  2. Para formar o nó raiz ou qualquer nó, a melhor divisão é determinada pela pesquisa em todos os recursos disponíveis.
  3. A profundidade máxima do coto de decisão é uma.

Primeiro, importamos todas as bibliotecas que usaremos para este artigo.

Script 1 – Importando as bibliotecas.

Então, nós carregamos os dados, dividimos e treinamos e comparamos um único coto contra um conjunto. Os resultados são impressos no console.

Script 2— Stump vs Ensemble de 1000 Stumps

 A precisão do coto é de 55,0% 
A precisão do conjunto é de 55,0%

Os resultados mostram que o conjunto de 1000 cotos de decisão obteve uma precisão de 55%, mostrando que eles não são melhores que um único coto de decisão. Então o que aconteceu? Por que não estamos obtendo melhores resultados? Bem, nós basicamente criamos 1000 tocos de decisão que eram exatamente os mesmos. É como se perguntássemos a uma pessoa solteira qual era a sua comida favorita mil vezes e, não surpreendentemente, obtivemos a mesma resposta mil vezes.

Classificador de Floresta Aleatório

Na seção anterior, aprendemos que ter 1000 cópias do mesmo cepo de decisão em nosso conjunto é como ter um único coto de decisão. Portanto, vamos mudar os critérios de como construímos cada coto a fim de introduzir a variação.

Cada coto de decisão será construído com os seguintes critérios:

  1. Um bootstrap será criado por amostragem aleatória do conjunto de treinamento com substituição. O tamanho do bootstrap é definido para igualar o tamanho do conjunto de treinamento.
  2. Para formar o nó raiz ou qualquer nó, a melhor divisão é determinada pela pesquisa em um subconjunto de recursos selecionados aleatoriamente de tamanho sqrt (número de recursos). Em nosso caso, cada cepo de decisão pode inspecionar dois dos quatro recursos.
  3. A profundidade máxima do coto de decisão é uma.

O que acabamos de descrever foi o critério para criar uma Floresta Aleatória. No entanto, uma Floresta Aleatória usa árvores de decisão com uma profundidade de um ou mais. O termo aleatório deriva do fato de que nós amostramos aleatoriamente o conjunto de treinamento, e como temos uma coleção de árvores, é natural chamá-lo de floresta – daí a Floresta Aleatória. Para construir o nó raiz ou qualquer nó na árvore, um subconjunto aleatório de recursos é selecionado. Para cada um desses recursos selecionados, o algoritmo procura o ponto de corte ideal para determinar a divisão do recurso especificado. O recurso do subconjunto selecionado aleatoriamente que produz a divisão mais pura é usado para criar o nó raiz. A árvore é cultivada até a profundidade de um, e o mesmo processo é repetido para todos os outros nós na árvore, até que a profundidade desejada da árvore seja alcançada. Finalmente, é importante notar que cada árvore é construída separadamente usando um bootstrap diferente, que introduz variações entre as árvores. Consequentemente, cada árvore comete erros diferentes e, quando combinada, um classificador forte pode ser construído. Se você está confuso com todo o jargão, leia este artigo que explica a maior parte do que acabei de descrever em um único parágrafo.

Script 3 – Stump vs Random Forest. Observe como na linha 5, definimos splitter = “best” e na linha 9 bootstrap = True. Seus resultados podem variar ligeiramente, uma vez que não fixamos as sementes no coto.

 A precisão do coto é de 55,0% 
A precisão da Floresta Aleatória é de 95%

O que?! Então, simplesmente introduzindo variação, conseguimos obter uma precisão de 95%. Em outras palavras, tocos de decisão com baixa precisão foram usados para construir uma floresta. A variação foi introduzida entre os cotos construindo-os em bootstraps – criados por amostragem do conjunto de treinamento com substituição e permitindo que os cotos procurassem apenas subconjuntos de recursos selecionados aleatoriamente para dividir o nó raiz. Individualmente, cada coto obtinha uma baixa precisão. No entanto, quando usado em um conjunto, mostramos que sua precisão disparou! Isso, meus amigos, é o que é comumente referido como a sabedoria da multidão.

Apenas para que ele afunde, podemos usar classificadores fracos como base de um conjunto para obter um de alto desempenho.

Classificador Extra de Árvores

Semelhante a um classificador Random Forest, temos o classificador Extra Trees – também conhecido como Extremely Randomized Trees. Para introduzir mais variações no conjunto, vamos mudar a forma como construímos árvores.

Cada coto de decisão será construído com os seguintes critérios:

  1. Todos os dados disponíveis no conjunto de treinamento são usados para construir cada coto.
  2. Para formar o nó raiz ou qualquer nó, a melhor divisão é determinada pela pesquisa em um subconjunto de recursos selecionados aleatoriamente de tamanho sqrt (número de recursos). A divisão de cada recurso selecionado é escolhida aleatoriamente.
  3. A profundidade máxima do coto de decisão é uma.

Observe que, em um classificador de árvores extras, os recursos e as divisões são selecionados aleatoriamente; daí, “Árvore extremamente aleatória”. Como as divisões são escolhidas aleatoriamente para cada recurso no Classificador de Árvores Extra, é menos computacionalmente caro do que uma Floresta Aleatória.

Script 4 – Coto vs Árvores Extra. Observe como na linha 5 splitter = “random” e o bootstrap está definido como false na linha 9. Seus resultados podem variar um pouco, pois não fixamos as sementes no coto.

 A precisão do coto é de 55,0% 
A precisão das árvores extras é de 95,0%

O classificador Extra Trees teve um desempenho similar ao da Random Forest. No entanto, existem diferenças de desempenho que gostaria de mencionar. Ou seja: Árvores de decisão mostram alta variância, Florestas Aleatórias mostram variância média e Árvores Extra mostram baixa variância.

Comentários finais

Se você chegou ao final do artigo, agora você deve entender o poder dos métodos ensemble e saber como os classificadores Random Forest e Extra Trees são construídos. Gostaria de mencionar que você não deve usar o classificador Bagging para criar seu classificador Random Forest ou Extra Trees. Versões mais eficazes desses dois classificadores já estão embutidas no Scikit-learn.

Os métodos de conjunto não se limitam a ter aprendizes fracos como seu estimador de base. Por exemplo, você pode determinar os três melhores classificadores para uma determinada tarefa e usar o Classificador de Voto do Scikit-learn para formar um conjunto com eles. Você pode otimizar os pesos do conjunto e fazer previsões com eles. Supondo que você tenha ajustado seus classificadores com precisão e todos eles tenham desempenhos similares, o Classificador de Votos ganharia uma vantagem sobre qualquer um deles. Para restringir a pesquisa de quais classificadores usar, você pode ler este artigo que fala sobre o design e a seleção de modelos usando o Scikit-learn .

Você pode me encontrar no LinkedIn .