Sob o capô de AdaBoost

Uma breve introdução ao algoritmo AdaBoost

Holly Emblem Blocked Desbloquear Seguir Seguindo 7 de janeiro Uma Orquestra Ensemble: Foto de Kael Bloom em Unsplash

Neste post, abordaremos uma breve introdução ao aprimoramento de algoritmos, bem como aprofundar o capô de um algoritmo popular de aprimoramento, o AdaBoost. O objetivo deste post é fornecer uma introdução suave a alguns dos principais conceitos de aprimoramento e AdaBoost. Este não é um definitivo prós e contras de AdaBoost vs Gradient Boosting etc, mas mais de um resumo da teoria-chave aponta para entender o algoritmo.

Aplicações do mundo real para AdaBoost

O AdaBoost pode ser usado para resolver uma variedade de problemas do mundo real, como prever a rotatividade de clientes e classificar os tipos de tópicos sobre os quais os clientes estão conversando . O algoritmo é muito utilizado para resolver problemas de classificação, dada sua relativa facilidade de implementação em linguagens como R e Python.

O que são algoritmos de impulso?

Os algoritmos de aumento estão dentro da família mais ampla de modelagem de conjunto. De um modo geral, existem duas abordagens principais para modelar a construção dentro da ciência de dados; construindo um modelo único e construindo um conjunto de modelos. Boosting se enquadra na última abordagem e com referência a AdaBoost, os modelos são construídos da seguinte forma: Para cada iteração, um novo aluno fraco é introduzido sequencialmente e visa compensar as “deficiências” dos modelos anteriores para criar um classificador forte. O objetivo geral deste exercício é ajustar consecutivamente novos modelos para fornecer estimativas mais precisas de nossa variável de resposta.

Impulsionar funciona a partir do pressuposto de que cada hipótese fraca, ou modelo, tem uma precisão maior do que adivinhar aleatoriamente: essa suposição é conhecida como “condição de aprendizagem fraca”.

O que é o AdaBoost?

O algoritmo AdaBoost foi desenvolvido por Freund e Schapire em 1996 e ainda é muito usado em vários setores. A AdaBoost atinge seu objetivo final de classificador ao introduzir sequencialmente novos modelos para compensar as “deficiências” dos modelos anteriores. O Scikit Learn resume o princípio central da AdaBoost, uma vez que “se adapta a uma sequência de alunos fracos em versões repetidamente modificadas dos dados”. Essa definição nos permitirá entender e expandir os processos da AdaBoost.

Começando

Para começar, um classificador fraco é treinado e todas as amostras de dados de exemplo recebem um peso igual. Depois que o classificador inicial é treinado, duas coisas acontecem. Um peso é calculado para o classificador, com classificadores mais precisos recebendo um peso maior e menos preciso para um peso menor. O peso é calculado com base na taxa de erro do classificador, que é o número de classificações erradas no conjunto de treinamento, dividido pelo tamanho total do conjunto de treinamento. Esse peso de saída por modelo é conhecido como o "alfa".

Calculando o Alfa

Cada classificador terá um peso calculado, que é baseado na taxa de erro do classificador.

Para cada iteração, o alfa do classificador é calculado, com a taxa de erro mais baixa = quanto maior o alfa. Isso é visualizado da seguinte maneira:

Imagem do excelente tutorial AdaBoost de Chris McCormick

Intuitivamente, há também uma relação entre o peso do exemplo de treinamento e o alfa. Se tivermos um classificador com um alfa alto que classifique erroneamente um exemplo de treinamento, esse exemplo receberá mais peso do que um classificador mais fraco, o que também classifica incorretamente um exemplo de treinamento. Isso é chamado de “intuitivo”, já que podemos considerar um classificador com um alfa maior como sendo uma testemunha mais confiável; quando isso é errado, queremos investigar isso mais adiante.

Entendendo Pesos para as Amostras de Treinamento:

Em segundo lugar, o algoritmo AdaBoost direciona sua atenção para exemplos de dados classificados incorretamente de nosso primeiro classificador fraco, atribuindo pesos a cada amostra de dados, cujo valor é definido pelo fato de o classificador classificar correta ou incorretamente a amostra.

Podemos detalhar uma visualização de pesos por exemplo, abaixo:

Passo 1: Nosso primeiro modelo, onde wi = 1 / N

Neste exemplo, podemos ver que cada exemplo de treinamento tem um peso igual e que o modelo classificou corretamente e incorretamente certos exemplos. Após cada iteração, os pesos da amostra são modificados e aqueles com pesos mais altos (exemplos que foram classificados incorretamente) têm maior probabilidade de serem incluídos nos conjuntos de treinamento. Quando uma amostra é classificada corretamente, recebe menos peso na próxima etapa do modelo.

Um exemplo de um modelo posterior, em que os pesos foram alterados :

A fórmula para essa atualização de peso é mostrada abaixo:

Construindo o classificador final

Depois que todas as iterações forem concluídas, todos os alunos fracos serão combinados com seus pesos para formar um classificador forte, conforme expresso na equação abaixo:

O classificador final é, por conseguinte, construída de “T” classificadores fracos, ht (X) representa a saída do classificador fraca, com o peso aplicado para o classificador. A saída final é, portanto, uma combinação de todos os classificadores.

Este é um tour da teoria do AdaBoost, e deve ser visto como uma exploração introdutória do algoritmo de boosting. Para ler mais, recomendo os seguintes recursos:

Leitura Recomendada

Natekin, A. Knoll, A. (2018). Máquinas de aumento de gradiente, um tutorial. Fronteiras em Neurobotics. [online] Disponível em: https://core.ac.uk/download/pdf/82873637.pdf

Li, C. (2018). Uma introdução suave ao aumento do gradiente. [online] Disponível em: http://www.ccs.neu.edu/home/vip/teach/MLcourse/4_boosting/slides/gradient_boosting.pdf

Schapire, R. (2018). Explicando AdaBoost. [online] Disponível em: https://math.arizona.edu/~hzhang/math574m/Lead/explaining-adaboost.pdf

Youtube. (2018) Extend Algoritmos de Aprendizado de Máquina – AdaBoost Classifier | packtpub.com. [online] Disponível em: https://www.youtube.com/watch?v=BoGNyWW9-mE

Scikit-learn.org. (2018) 1.11. Métodos Ensemble – scikit-learn 0.20.2 documentation. [online] Disponível em: https://scikit-learn.org/stable/modules/ensemble.html#AdaBoost

McCormick, C. (2013). Tutorial AdaBoost · Chris McCormick. [online] Disponível em: http://mccormickml.com/2013/12/13/adaboost-tutorial/

Schapire, R. (2018). Explicando AdaBoost. [online] Disponível em: https://math.arizona.edu/~hzhang/math574m/Lead/explaining-adaboost.pdf

Mohri, M. (2018). Fundamentos de Machine Learning [online] Disponível em: https://cs.nyu.edu/~mohri/mls/ml_boosting.pdf

Texto original em inglês.