Classificador de floresta aleatória: visão geral, como funciona, prós e contras

Publicados: 2021-06-18

Você já se perguntou como a Netflix escolhe um filme para recomendar a você? Ou como a Amazon escolhe os produtos para mostrar no seu feed?

Todos eles usam sistemas de recomendação, uma tecnologia que utiliza o classificador de floresta aleatória.

O classificador de floresta aleatória está entre os algoritmos de classificação mais populares. Hoje, aprenderemos sobre esse algoritmo robusto de aprendizado de máquina e veremos como ele funciona. Você também aprenderá sobre sua implementação, pois compartilharemos um tutorial passo a passo sobre como usar o classificador de floresta aleatória em um problema da vida real.

Abordaremos as vantagens e desvantagens do sklearn de floresta aleatória e muito mais nos pontos a seguir.

Índice

Classificador de Floresta Aleatória: Uma Introdução

O classificador de floresta aleatória é um algoritmo de aprendizado supervisionado que você pode usar para problemas de regressão e classificação. Está entre os algoritmos de aprendizado de máquina mais populares devido à sua alta flexibilidade e facilidade de implementação.

Por que o classificador de floresta aleatória é chamado de floresta aleatória?

Isso porque consiste em várias árvores de decisão, assim como uma floresta tem muitas árvores. Além disso, ele usa aleatoriedade para melhorar sua precisão e combater o overfitting, o que pode ser um grande problema para um algoritmo tão sofisticado. Esses algoritmos fazem árvores de decisão com base em uma seleção aleatória de amostras de dados e obtêm previsões de cada árvore. Depois disso, eles selecionam a melhor solução viável por meio de votos.

Possui inúmeras aplicações em nosso dia a dia, como seletores de recursos, sistemas de recomendação e classificadores de imagens. Algumas de suas aplicações na vida real incluem detecção de fraudes, classificação de pedidos de empréstimo e previsão de doenças. Ele forma a base para o algoritmo Boruta, que seleciona recursos vitais em um conjunto de dados.

Como funciona?

Supondo que seu conjunto de dados tenha recursos “m”, a floresta aleatória escolherá aleatoriamente recursos “k” onde k < m. Agora, o algoritmo calculará o nó raiz entre os k recursos escolhendo um nó que tenha o maior ganho de informação.

Depois disso, o algoritmo divide o nó em nós filhos e repete esse processo “n” vezes. Agora você tem uma floresta com n árvores. Por fim, você fará o bootstrap, ou seja, combinará os resultados de todas as árvores de decisão presentes em sua floresta.

É certamente um dos algoritmos mais sofisticados, pois se baseia na funcionalidade das árvores de decisão.

Tecnicamente, é um algoritmo de conjunto. O algoritmo gera as árvores de decisão individuais por meio de uma indicação de seleção de atributos. Cada árvore depende de uma amostra aleatória independente. Em um problema de classificação, cada árvore vota e a classe mais popular é o resultado final. Por outro lado, em um problema de regressão, você calculará a média de todas as saídas da árvore e esse seria seu resultado final.

Uma implementação Python de floresta aleatória é muito mais simples e robusta do que outros algoritmos não lineares usados ​​para problemas de classificação.

O exemplo a seguir ajudará você a entender como você usa o classificador de floresta aleatória no seu dia a dia:

Exemplo

Suponha que você queira comprar um carro novo e peça recomendações ao seu melhor amigo Supratik. Ele perguntaria sobre suas preferências, seu orçamento e suas necessidades e também compartilharia suas experiências passadas com o carro dele para lhe dar uma recomendação.

Aqui, a Supratik está usando o método da Árvore de Decisão para fornecer feedback com base em sua resposta. Depois de suas sugestões, você se sente arriscado com seus conselhos, então pergunta a Aditya sobre suas recomendações e ele também pergunta sobre suas preferências e outros requisitos.

Suponha que você repita esse processo e faça essa pergunta a 'n' amigos. Agora você tem vários carros para escolher. Você reúne todos os votos de seus amigos e decide comprar o carro mais votado. Você agora usou o método da floresta aleatória para escolher um carro para comprar.

No entanto, quanto mais você iterar nesse processo, mais propenso você estará ao overfitting. Isso porque seu conjunto de dados nas árvores de decisão continuará se tornando mais específico. A floresta aleatória combate esse problema usando aleatoriedade.

Prós e contras do classificador de floresta aleatória

Todo algoritmo de aprendizado de máquina tem suas vantagens e desvantagens. A seguir estão as vantagens e desvantagens do algoritmo de classificação de floresta aleatória:

Vantagens

  • O algoritmo de floresta aleatória é significativamente mais preciso do que a maioria dos classificadores não lineares.
  • Este algoritmo também é muito robusto porque utiliza múltiplas árvores de decisão para chegar ao seu resultado.
  • O classificador de floresta aleatória não enfrenta o problema de overfitting porque ele obtém a média de todas as previsões, cancelando os vieses e, assim, corrigindo o problema de overfitting.
  • Você pode usar esse algoritmo para problemas de regressão e classificação, tornando-o um algoritmo altamente versátil.
  • Florestas aleatórias não permitem que valores ausentes causem problemas. Eles podem usar valores medianos para substituir as variáveis ​​contínuas ou calcular a média ponderada de proximidade dos valores ausentes para resolver esse problema.
  • Esse algoritmo oferece importância relativa de recursos que permite selecionar facilmente os recursos que mais contribuem para o seu classificador.

Desvantagens

  • Esse algoritmo é substancialmente mais lento do que outros algoritmos de classificação porque usa várias árvores de decisão para fazer previsões. Quando um classificador de floresta aleatória faz uma previsão, todas as árvores na floresta precisam fazer uma previsão para a mesma entrada e votar na mesma. Este processo pode ser muito demorado.
  • Devido ao seu ritmo lento, os classificadores de floresta aleatória podem ser inadequados para previsões em tempo real.
  • O modelo pode ser bastante desafiador para interpretar em comparação com uma árvore de decisão, pois você pode fazer uma seleção seguindo o caminho da árvore. No entanto, isso não é possível em uma floresta aleatória, pois ela possui várias árvores de decisão.

Diferença entre Random Forest e Árvores de Decisão

Uma árvore de decisão, como o nome sugere, é um fluxograma semelhante a uma árvore com ramos e nós. O algoritmo divide os dados com base nos recursos de entrada em cada nó e gera várias ramificações como saída. É um processo iterativo e aumenta o número de ramificações criadas (saída) e diferenciação dos dados. Esse processo se repete até que um nó seja criado onde quase todos os dados pertençam à mesma classe e mais ramificações ou divisões não sejam possíveis.

Por outro lado, uma floresta aleatória usa várias árvores de decisão, daí o nome 'floresta'. Ele reúne votos das várias árvores de decisão que usou para fazer a previsão necessária.

Portanto, a principal diferença entre um classificador de floresta aleatória e uma árvore de decisão é que o primeiro usa uma coleção do último. Aqui estão algumas diferenças adicionais entre os dois:

  • As árvores de decisão enfrentam o problema de overfitting, mas as florestas aleatórias não. Isso ocorre porque os classificadores de floresta aleatória usam subconjuntos aleatórios para combater esse problema.
  • As árvores de decisão são mais rápidas que as florestas aleatórias. Florestas aleatórias usam várias árvores de decisão, o que exige muito poder de computação e, portanto, mais tempo.
  • As árvores de decisão são mais fáceis de interpretar do que as florestas aleatórias e você pode converter as primeiras facilmente de acordo com as regras, mas é bastante difícil fazer o mesmo com as últimas.

Construindo o Algoritmo (Random Forest Sklearn)

No exemplo a seguir, realizamos uma implementação Python de floresta aleatória usando a biblioteca scikit-learn. Você pode seguir as etapas deste tutorial para criar seu próprio classificador de floresta aleatória.

Embora 80% de qualquer tarefa de ciência de dados exija que você otimize os dados, o que inclui limpeza de dados, limpeza, correção de valores ausentes e muito mais. No entanto, neste exemplo, vamos nos concentrar apenas na implementação do nosso algoritmo.

Primeira etapa: importe as bibliotecas e carregue o conjunto de dados

Primeiro, teremos que importar as bibliotecas necessárias e carregar nosso conjunto de dados em um quadro de dados.

Entrada:

#Importando as bibliotecas necessárias

importar pandas como pd

importar numpy como np

importar matplotlib.pyplot como plt

#Importando o conjunto de dados

de sklearn.datasets importar load_iris
conjunto de dados = load_iris()

Segunda etapa: dividir o conjunto de dados em um conjunto de treinamento e um conjunto de teste

Depois de importar as bibliotecas necessárias e carregar os dados, devemos dividir nosso conjunto de dados em um conjunto de treinamento e um conjunto de teste. O conjunto de treinamento nos ajudará a treinar o modelo e o conjunto de teste nos ajudará a determinar a precisão do nosso modelo.

Entrada:

# Ajusta o classificador ao conjunto de treinamento

de sklearn.tree importação DecisionTreeClassifier

model = DecisionTreeClassifier(criterion = 'entropy' , splitter = 'best' , random_state = 0)

model.fit(X_train, y_train)

Saída:

DecisionTreeClassifier(class_weight=Nenhum, critério='entropia', max_depth=Nenhum,
max_features=Nenhum, max_leaf_nodes=Nenhum,
min_impurity_decrease=0.0, min_impurity_split=Nenhum,
min_samples_leaf=1, min_samples_split=2,
min_weight_fraction_leaf=0.0, presort=False, random_state=0,

divisor = 'melhor')

Terceira etapa: criar um classificador de floresta aleatória

Agora, vamos criar nosso classificador de floresta aleatória usando Python e scikit-learn.

Entrada:

#Ajustando o classificador ao conjunto de treinamento

de sklearn.ensemble importar RandomForestClassifier

model = RandomForestClassifier(n_estimators=100, critério-'entropia', random_state = 0)

model.fit(X_train, y_train)

Saída:

RandomForestClassifier(bootstrap=True, class_weight=Nenhum, critério='entropia',

max_depth=Nenhum, max_features='auto', max_leaf_nodes=Nenhum,

min_impurity_decrease=0.0, min_impurity_split=Nenhum,

min_samples_leaf=1, min_sampes_split=2,

min_weight_fraction_leaf=0,0, n_estimators=100, n_jobs=Nenhum,

oob_score=False, random_state=0, verbose=0, warm_start=False)

Quarto passo: Prever os resultados e fazer a matriz de Confusão

Uma vez que criamos nosso classificador, podemos prever os resultados usando-o no conjunto de teste e fazer a matriz de confusão e obter sua pontuação de precisão para o modelo. Quanto maior a pontuação, mais preciso é o nosso modelo.

Entrada:

#Prever os resultados do conjunto de testes

y_pred = mode.predict(X_test)

#Cria a matriz de confusão

de sklearn.metrics importar confusão_matrix

cm = confusão_matrix(y_test, y_pred)

cm

Saída :

matriz ([[16, 0, 0]

[0, 17, 1]

[0, 0, 11]])

Entrada :

#Obtenha a pontuação do seu modelo

model.score(X_test, y_test)

Saída :

0,977777777777777

Conclusão

Os classificadores de floresta aleatória têm muitas aplicações. Eles estão entre os algoritmos de aprendizado de máquina mais robustos e são obrigatórios em qualquer profissional de IA e ML.

Se você estiver interessado em aprender mais sobre Inteligência Artificial, confira o Programa Executive PG do IIIT-B & upGrad em Machine Learning & AI, projetado para profissionais que trabalham e oferece mais de 450 horas de treinamento rigoroso, mais de 30 estudos de caso e atribuições, IIIT -B Alumni status, mais de 5 projetos práticos práticos e assistência de trabalho com as principais empresas.

O que é Random Forest no aprendizado de máquina?

Random Forest é um método de aprendizado conjunto que pode fornecer previsões mais precisas do que a maioria dos outros algoritmos de aprendizado de máquina. É comumente usado no aprendizado de árvores de decisão. Uma floresta é criada usando árvores de decisão, cada árvore de decisão é um classificador forte em si. Essas árvores de decisão são usadas para criar uma floresta de classificadores fortes. Essa floresta de classificadores fortes oferece uma previsão melhor do que árvores de decisão ou outros algoritmos de aprendizado de máquina.

Quais são as diferenças entre floresta aleatória e árvores de decisão?

Uma árvore de decisão é um fluxograma que descreve o processo de análise para um determinado problema. Nós tendemos a usá-los com mais frequência para problemas de classificação. Uma árvore de decisão descreve o processo de eliminação necessário para fazer uma classificação. Ao contrário da árvore de decisão, a floresta aleatória é baseada em um conjunto de árvores e muitos estudos demonstram que ela é mais poderosa do que a árvore de decisão em geral. Além disso, a floresta aleatória é mais resistente ao overfitting e é mais estável quando há dados ausentes.

Quais são as desvantagens da floresta aleatória?

Random Forest é um modelo um pouco complexo. Não é um modelo de caixa preta e não é fácil interpretar os resultados. É mais lento do que outros modelos de aprendizado de máquina. Requer um grande número de recursos para obter uma boa precisão. Florestas aleatórias são um tipo de método de aprendizado de conjunto, como outros métodos de conjunto, como ensacamento, aumento ou empilhamento. Esses métodos tendem a ser instáveis, o que significa que, se os dados de treinamento mudarem um pouco, o modelo final pode mudar drasticamente.