Pesquisa de site

Impulsionando o aprendizado de máquina | Boosting e AdaBoost


<h2>Introdução <p>Boosting é uma classe de algoritmos de modelagem de conjunto onde construímos um modelo forte a partir de vários modelos fracos. No boosting todos os classificadores estão presentes em série. Primeiro, um único modelo é treinado nos dados de treinamento reais. Em seguida, é construído o segundo classificador que é treinado nos erros produzidos pelo primeiro modelo e tenta corrigir os erros produzidos pelo modelo anterior. Este processo é repetido continuamente e novos modelos são adicionados até que não haja erros e a previsão nos dados de treinamento seja precisa ou atinjamos o limite máximo de modelos a serem adicionados.

Técnica de Impulso

A técnica de reforço reduz o viés do modelo. Os algoritmos de reforço podem enfrentar problemas de overfitting. Resolver problemas de overfitting, o ajuste de hiperparâmetros é de primordial importância no boosting.

Exemplos de boosting são AdaBoost, XGBoost e CatBoost.

Que vantagens o método de boosting oferece?

  • O reforço pode ajudar a aumentar a precisão, pois o poder de muitos alunos fracos é combinado para produzir um modelo melhor. Na regressão, as precisões de cada aluno fraco são calculadas em média e a maioria votada na classificação do caso

  • O reforço pode evitar o overfitting, pois os pesos são continuamente ajustados para minimizar erros.

  • Mais interpretabilidade é alcançada com o boosting, pois o processo é segregado em vários processos de decisão.

Neste artigo, veremos em detalhes a técnica de boosting AdaBoost.

Técnica de conjunto AdaBoost

O método de conjunto AdaBoost também é conhecido como Adaptive Boosting. Este método tenta corrigir os erros produzidos pelo modelo antecessor. A cada etapa, ele tenta trabalhar mais os pontos de dados de treinamento subajustados presentes no modelo anterior.

Uma série de alunos fracos são treinados com dados de treinamento com pesos diferenciados. Primeiro, é feita uma previsão nos dados de treinamento iniciais e um peso igual é dado a cada observação. Após o primeiro aluno ter sido ajustado, ele dá maior peso às observações que são previstas incorretamente. Este é um processo iterativo e continua adicionando alunos até que a precisão ideal seja alcançada.

AdaBoost é comumente usado com árvores de decisão e para problemas de classificação. Mas também pode ser usado para regressão.

Se olharmos um exemplo de árvore de decisão com o algoritmo AdaBoost, primeiro uma árvore de decisão é treinada nos dados de treinamento iniciais. O peso dos pontos classificados incorretamente durante o ajuste aumenta. Em seguida, um segundo classificador de árvore de decisão é adicionado e leva os pesos atualizados. Este é um processo iterativo e é repetido continuamente. podemos ver aqui que o segundo modelo aumenta os pesos do modelo anterior. AdaBoost adiciona alunos sequencialmente para produzir melhores resultados.

A desvantagem deste algoritmo é que ele não pode ser paralelizado.

Etapas de trabalho do AdaBoost

  • Atribua pesos iguais a cada observação

  • No subconjunto inicial de dados, um modelo é ajustado.

  • Agora, com todos os dados, as previsões são feitas.

  • O desvio dos valores previstos dos valores reais dá o erro.

  • Nesta etapa, enquanto o próximo modelo é treinado, pesos mais elevados são atribuídos a pontos mal classificados e com erros mais elevados.

  • Este processo é repetido continuamente até que o valor do erro não mude ou o limite dos modelos seja atingido.

Qual a melhor forma de preparar os dados para o AdaBoost?

  • A qualidade dos dados de treinamento deve ser rica, pois o AdaBoost tenta corrigir os erros de classificação.

  • Os valores discrepantes devem ser removidos dos dados de treinamento, caso contrário o algoritmo poderá tentar corrigir erros irrealistas.

  • Os dados de treinamento devem estar livres de ruídos desnecessários que possam afetar a qualidade dos dados em geral.

Exemplo

from sklearn.datasets import make_classification
from sklearn.ensemble import AdaBoostClassifier

train_X, train_y = make_classification(n_samples=2000, n_features=30, n_informative=25, n_redundant=5)
clf = AdaBoostClassifier()
clf.fit(train_X, train_y)
test_rowdata = [[-2.56789,1.9012436,0.0490456,-0.945678,-3.545673,1.945555,-7.746789,-2.4566667,-1.845677896,-1.6778994,2.336788043,-4.305666617,0.466641,-1.2866634,-10.6777077,-0.766663,-3.5556621,2.045456,0.055673,0.94545456,0.5677,-1.4567,4.3333,3.89898,1.56565,-0.56565,-0.45454,4.33535,6.34343,-4.42424]]
y_hat = clf.predict(test_rowdata)
print('Class predicted  %d' % y_hat[0])

Saída

Class predicted  0

Conclusão

Boosting é uma abordagem para usar vários alunos fracos para melhorar a precisão final e produzir melhores resultados. O boosting ajuda a combater o viés nos modelos até certo ponto e também evita o overfitting. O conjunto AdaBoost é uma técnica de reforço focada principalmente na técnica de ponderação aplicada a pontos classificados incorretamente que são então aprimorados ao longo do processo iterativo.

Artigos relacionados: