Pesquisa de site

Boosting e AdaBoost para aprendizado de máquina


Boosting é uma técnica de conjunto que tenta criar um classificador forte a partir de vários classificadores fracos.

Neste post você descobrirá o método AdaBoost Ensemble para aprendizado de máquina. Depois de ler esta postagem, você saberá:

  • O que é o método boosting ensemble e geralmente como funciona.
  • Como aprender a aumentar as árvores de decisão usando o algoritmo AdaBoost.
  • Como fazer previsões usando o modelo AdaBoost aprendido.
  • Como preparar melhor seus dados para uso com o algoritmo AdaBoost

Esta postagem foi escrita para desenvolvedores e não pressupõe nenhuma experiência em estatística ou matemática. A postagem se concentra em como o algoritmo funciona e como usá-lo para problemas de modelagem preditiva. Se você tiver alguma dúvida, deixe um comentário e farei o possível para responder.

Inicie seu projeto com meu novo livro Master Machine Learning Algorithms, incluindo tutoriais passo a passo e os arquivos Planilha Excel para todos os exemplos .

Vamos começar.

Método Boosting Ensemble

Boosting é um método de conjunto geral que cria um classificador forte a partir de vários classificadores fracos.

Isso é feito construindo um modelo a partir dos dados de treinamento e, em seguida, criando um segundo modelo que tenta corrigir os erros do primeiro modelo. Os modelos são adicionados até que o conjunto de treinamento seja previsto perfeitamente ou um número máximo de modelos seja adicionado.

AdaBoost foi o primeiro algoritmo de boosting realmente bem-sucedido desenvolvido para classificação binária. É o melhor ponto de partida para compreender o boosting.

Os métodos modernos de aumento baseiam-se no AdaBoost, mais notavelmente máquinas estocásticas de aumento de gradiente.

Obtenha seu mapa mental de algoritmos GRATUITO

Criei um mapa mental útil com mais de 60 algoritmos organizados por tipo.

Baixe, imprima e use. 


Tenha também acesso exclusivo ao minicurso por e-mail sobre algoritmos de aprendizado de máquina.

Aprendendo um modelo AdaBoost a partir de dados

AdaBoost é melhor usado para aumentar o desempenho de árvores de decisão em problemas de classificação binária.

AdaBoost foi originalmente chamado de AdaBoost.M1 pelos autores da técnica Freund e Schapire. Mais recentemente, pode ser referido como AdaBoost discreto porque é usado para classificação em vez de regressão.

AdaBoost pode ser usado para aumentar o desempenho de qualquer algoritmo de aprendizado de máquina. É melhor usado com alunos fracos. Esses são modelos que alcançam precisão um pouco acima do acaso em um problema de classificação.

O algoritmo mais adequado e, portanto, mais comum usado com AdaBoost são árvores de decisão com um nível. Como essas árvores são muito curtas e contêm apenas uma decisão para classificação, elas são frequentemente chamadas de tocos de decisão.

Cada instância no conjunto de dados de treinamento é ponderada. O peso inicial é definido como:

peso (xi)=1/n

Onde xi é a i-ésima instância de treinamento e n é o número de instâncias de treinamento.

Como treinar um modelo

Um classificador fraco (coto de decisão) é preparado nos dados de treinamento usando amostras ponderadas. Somente problemas de classificação binária (duas classes) são suportados, portanto, cada toco de decisão toma uma decisão sobre uma variável de entrada e gera um valor de +1,0 ou -1,0 para o valor da primeira ou segunda classe.

A taxa de classificação incorreta é calculada para o modelo treinado. Tradicionalmente, isso é calculado como:

erro=(correto – N)/N

Onde erro é a taxa de classificação incorreta, correto é o número de instâncias de treinamento previstas corretamente pelo modelo e N é o número total de instâncias de treinamento. Por exemplo, se o modelo previsse corretamente 78 de 100 instâncias de treinamento, a taxa de erro ou classificação incorreta seria (78-100)/100 ou 0,22.

Isto é modificado para usar a ponderação das instâncias de treinamento:

erro=soma(w(i) * terror(i))/soma(w)

Qual é a soma ponderada da taxa de classificação incorreta, onde w é o peso para a instância de treinamento i e terror é o erro de previsão para a instância de treinamento i, que é 1 se for classificada incorretamente e 0 se for classificada corretamente.

Por exemplo, se tivéssemos 3 instâncias de treinamento com pesos 0,01, 0,5 e 0,2. Os valores previstos foram -1, -1 e -1, e as variáveis de saída reais nas instâncias foram -1, 1 e -1, então os terrores seriam 0, 1 e 0. A taxa de classificação incorreta seria calculada como:

erro=(0,01*0 + 0,5*1 + 0,2*0)/(0,01 + 0,5 + 0,2)

ou

erro=0,704

Um valor de estágio é calculado para o modelo treinado, que fornece uma ponderação para quaisquer previsões feitas pelo modelo. O valor do estágio para um modelo treinado é calculado da seguinte forma:

estágio=ln((1-erro)/erro)

Onde estágio é o valor do estágio usado para ponderar as previsões do modelo, ln() é o logaritmo natural e erro é o erro de classificação incorreta do modelo. O efeito do peso do estágio é que modelos mais precisos têm mais peso ou contribuição para a previsão final.

Os pesos de treinamento são atualizados, dando mais peso às instâncias previstas incorretamente e menos peso às instâncias previstas corretamente.

Por exemplo, o peso de uma instância de treinamento (w) é atualizado usando:

w=w * exp(estágio * terror)

Onde w é o peso para uma instância de treinamento específica, exp() é a constante numérica e ou o número de Euler elevado a uma potência, estágio é a taxa de classificação incorreta para o classificador fraco e terror é o erro que o classificador fraco cometeu ao prever a variável de saída para a instância de treinamento, avaliada como:

terror=0 se(y == p), caso contrário 1

Onde y é a variável de saída para a instância de treinamento e p é a previsão do aluno fraco.

Isso tem o efeito de não alterar o peso se a instância de treinamento for classificada corretamente e de tornar o peso um pouco maior se o aluno fraco classificou incorretamente a instância.

Conjunto AdaBoost

Os modelos fracos são adicionados sequencialmente, treinados usando os dados de treinamento ponderados.

O processo continua até que um número predefinido de alunos fracos seja criado (um parâmetro do usuário) ou nenhuma melhoria adicional possa ser feita no conjunto de dados de treinamento.

Depois de concluído, você terá um grupo de alunos fracos, cada um com um valor de estágio.

Fazendo previsões com AdaBoost

As previsões são feitas calculando a média ponderada dos classificadores fracos.

Para uma nova instância de entrada, cada aluno fraco calcula um valor previsto como +1,0 ou -1,0. Os valores previstos são ponderados pelo valor de cada estágio fraco do aluno. A previsão para o modelo conjunto é considerada a soma das previsões ponderadas. Se a soma for positiva, então a primeira classe é prevista; se negativa, a segunda classe é prevista.

Por exemplo, 5 classificadores fracos podem prever os valores 1,0, 1,0, -1,0, 1,0, -1,0. A partir de uma votação majoritária, parece que o modelo irá prever um valor de 1,0 ou a primeira classe. Esses mesmos 5 classificadores fracos podem ter os valores de estágio 0,2, 0,5, 0,8, 0,2 e 0,9 respectivamente. O cálculo da soma ponderada dessas previsões resulta em uma saída de -0,8, que seria uma previsão de conjunto de -1,0 ou a segunda classe.

Preparação de dados para AdaBoost

Esta seção lista algumas heurísticas para melhor preparar seus dados para o AdaBoost.

  • Dados de qualidade: como o método conjunto continua tentando corrigir erros de classificação nos dados de treinamento, você precisa ter cuidado para que os dados de treinamento sejam de alta qualidade.
  • Outliers: Outliers forçarão o conjunto a cair na toca do coelho, trabalhando duro para corrigir casos que não são realistas. Eles podem ser removidos do conjunto de dados de treinamento.
  • Dados com ruído: Dados com ruído, especificamente ruído na variável de saída, podem ser problemáticos. Se possível, tente isolá-los e limpá-los do seu conjunto de dados de treinamento.

Leitura adicional

Abaixo estão alguns textos de aprendizado de máquina que descrevem o AdaBoost de uma perspectiva de aprendizado de máquina.

  • Uma introdução ao aprendizado estatístico: com aplicações em R, página 321
  • Os elementos da aprendizagem estatística: mineração de dados, inferência e previsão, Capítulo 10
  • Modelagem Preditiva Aplicada, páginas 203 e 389

Abaixo estão alguns artigos de pesquisa seminais e de boa visão geral sobre o método que podem ser úteis se você estiver procurando se aprofundar nos fundamentos teóricos do método:

  • Uma generalização teórica da decisão da aprendizagem on-line e uma aplicação para impulsionar, 1995
  • Algoritmos de reforço aprimorados usando previsões com classificação de confiança, 1999
  • Explicando Adaboost, Capítulo da Inferência Empírica, 2013
  • Uma breve introdução ao Boosting, 1999

Resumo

Neste post você descobriu o método Boosting ensemble para aprendizado de máquina. Você aprendeu sobre:

  • Boosting e como é uma técnica geral que continua adicionando alunos fracos para corrigir erros de classificação.
  • AdaBoost como o primeiro algoritmo de boosting bem-sucedido para problemas de classificação binária.
  • Aprendendo o modelo AdaBoost ponderando as instâncias de treinamento e os próprios alunos fracos.
  • Prever com AdaBoost ponderando as previsões de alunos fracos.
  • Onde procurar mais informações teóricas sobre o algoritmo AdaBoost.

Se você tiver alguma dúvida sobre esta postagem ou sobre o algoritmo Boosting ou AdaBoost, pergunte nos comentários e farei o possível para responder.

Artigos relacionados