O que é boosting em machine learning?

Boosting é um método usado no machine learning para reduzir erros na análise preditiva de dados. Os cientistas de dados treinam softwares de machine learning, chamados modelos de machine learning, com dados rotulados para fazer suposições sobre dados não rotulados. Um único modelo de machine learning pode ter erros de previsão, dependendo da precisão do conjunto de dados de treinamento. Por exemplo, se um modelo de identificação de gato foi treinado apenas com imagens de gatos brancos, ele pode ocasionalmente identificar erroneamente um gato preto. O boosting tenta superar esse problema treinando vários modelos sequencialmente para melhorar a precisão geral do sistema.

Por que o boosting é importante?

O boosting melhora a precisão e a performance preditiva dos modelos de máquina, convertendo vários aprendizes fracos em um único modelo de aprendizado forte. Modelos de machine learning podem ser aprendizes fracos ou fortes:

Aprendizes fracos

Aprendizes fracos têm baixa precisão de previsão, semelhante a uma adivinhação aleatória. Eles são propensos a sobreajuste, ou seja, não conseguem classificar dados que variam muito a partir do seu conjunto de dados original. Por exemplo, se você treinar o modelo para identificar gatos como animais com orelhas pontudas, ele poderá não reconhecer um gato cujas orelhas estão enroladas.

Aprendizes fortes

Aprendizes fortes têm maior precisão de previsão. O boosting converte um sistema de aprendizes fracos em um único sistema de aprendiz forte. Por exemplo: para identificar a imagem do gato, ele combina um aprendiz fraco que reconhece orelhas pontudas e outro aprendiz que reconhece olhos de gato. Depois de analisar a imagem do animal para orelhas pontudas, o sistema analisa mais uma vez para olhos de gato. Isso melhora a precisão geral do sistema.

Como funciona o boosting?

Para entender como o boosting funciona, vamos descrever como os modelos de machine learning tomam decisões. Embora existam muitas variações na implementação, cientistas de dados costumam usar o boosting com algoritmos de árvore de decisão:

Árvores de decisão

Árvores de decisão são estruturas de dados em machine learning que funcionam dividindo o conjunto de dados em subconjuntos cada vez menores com base em seus recursos. A ideia é que as árvores de decisão dividam os dados repetidamente até que reste apenas uma classe. Por exemplo, a árvore pode fazer uma série de perguntas do tipo “sim ou não” e dividir os dados em categorias a cada etapa.

Método de conjunto de boosting

Boosting cria um modelo de conjunto combinando várias árvores de decisão fracas sequencialmente. Ele atribui pesos à saída de árvores individuais. Em seguida, dá um peso maior às classificações incorretas da primeira árvore de decisão e uma entrada para a próxima árvore. Após vários ciclos, o método de boosting combina essas regras fracas em uma única regra de previsão poderosa.

Comparação entre boosting e bagging

Boosting e bagging são os dois métodos de conjunto comuns que melhoram a precisão da previsão. A principal diferença entre esses métodos de aprendizagem é o método de treinamento. No bagging, os cientistas de dados melhoram a precisão de aprendizes fracos treinando vários deles ao mesmo tempo em vários conjuntos de dados. Em contraste, o boosting treina os aprendizes fracos um após o outro.

 

Como é feito o treinamento em boosting?

O método de treinamento varia de acordo com o tipo de processo de boosting, chamado algoritmo de boosting. No entanto, um algoritmo segue as seguintes etapas gerais para treinar o modelo de boosting:

Etapa 1

O algoritmo de boosting atribui peso igual a cada amostra de dados. Ele alimenta os dados para o primeiro modelo de máquina, chamado de algoritmo base. O algoritmo base faz previsões para cada amostra de dados.

Etapa 2

O algoritmo de boosting avalia as previsões do modelo e aumenta o peso das amostras com um erro mais significativo. Também atribui um peso com base na performance do modelo. Um modelo que produz previsões excelentes terá uma grande influência sobre a decisão final.

Etapa 3

O algoritmo passa os dados ponderados para a próxima árvore de decisão.

Etapa 4

O algoritmo repete as etapas 2 e 3 até que as instâncias de erros de treinamento estejam abaixo de um determinado limite.

Quais os tipos de boosting?

A seguir, estão os três principais tipos de boosting.

Boosting adaptável

Boosting adaptável (AdaBoost) foi um dos primeiros modelos de boosting desenvolvidos. Ele se adapta e tenta se autocorrigir a cada iteração do processo de boosting. 

AdaBoost inicialmente dá o mesmo peso para cada conjunto de dados. Em seguida, ajusta automaticamente os pesos dos pontos de dados após cada árvore de decisão. Ele dá mais peso aos itens classificados incorretamente, para corrigi-los para a próxima rodada. Ele repete o processo até que o erro residual, ou a diferença entre os valores reais e previstos, caia abaixo de um limite aceitável.

É possível usar o AdaBoost com muitos preditores. Normalmente, ele não é tão sensível quanto outros algoritmos de boosting. Essa abordagem não funciona bem quando há correlação entre recursos ou alta dimensionalidade de dados. No geral, o AdaBoost é um tipo adequado de boosting para problemas de classificação.

Boosting de gradiente

Boosting de gradiente (GB) é semelhante ao AdaBoost, pois também é uma técnica de treinamento sequencial. A diferença entre o AdaBoost e o GB é que o GB não dá mais peso aos itens classificados incorretamente. Em vez disso, o software de GB otimiza a função de perda, gerando aprendizes de base sequencialmente, para que o atual aprendiz de base seja sempre mais eficaz que o anterior. Esse método tenta gerar resultados precisos inicialmente, em vez de corrigir erros ao longo do processo como o AdaBoost. Por isso motivo, o software de GB pode levar a resultados mais precisos. O aumento de gradiente pode ajudar com problemas baseados em classificação e regressão.

Boosting de gradiente extremo

Boosting de gradiente extremo (XGBoost) melhora o boosting de gradiente para velocidade e escala computacional de várias maneiras. O XGBoost usa vários núcleos na CPU, para que o aprendizado possa ocorrer em paralelo durante o treinamento. É um algoritmo de boosting que pode lidar com extensos conjuntos de dados, tornando-o atraente para aplicações de big data. Os principais recursos do XGBoost são paralelização, computação distribuída, otimização de cache e processamento fora do núcleo.

Quais são os benefícios do boosting?

Boosting oferece os seguintes benefícios principais:

Implementação fácil

O boosting tem algoritmos fáceis de entender e fáceis de interpretar, que aprendem com seus erros. Esses algoritmos não requerem pré-processamento de dados e possuem rotinas integradas para lidar com dados ausentes. Além disso, a maioria dos idiomas possui bibliotecas integradas para implementar algoritmos de boosting com muitos parâmetros que podem ajustar a performance.

Redução de viés

Viés é a presença de incerteza ou imprecisão nos resultados de machine learning. Os algoritmos de boosting combinam vários aprendizes fracos em um método sequencial, que melhora iterativamente as observações. Essa abordagem ajuda a reduzir o alto viés que é comum em modelos de machine learning.

Eficiência computacional

Os algoritmos de boosting priorizam recursos que aumentam a precisão preditiva durante o treinamento. Eles podem ajudar a reduzir atributos de dados e a lidar com grandes conjuntos de dados com eficiência.

Quais são os desafios do boosting?

As limitações comuns dos modos de boosting são as seguintes:

Vulnerabilidade a dados discrepantes

Modelos de boosting são vulneráveis a valores discrepantes ou valores de dados diferentes do restante do conjunto de dados. Como cada modelo tenta corrigir as falhas do antecessor, valores discrepantes podem distorcer os resultados significativamente.

Implementação em tempo real

Também pode ser desafiador usar o boosting para implementação em tempo real, porque o algoritmo é mais complexo do que outros processos. Os métodos de boosting têm alta adaptabilidade, para que seja possível usar uma ampla variedade de parâmetros de modelo que afetam imediatamente a performance do modelo.

Como a AWS pode ajudar você com o boosting?

Os serviços de redes da AWS são projetados para fornecer às empresas:

Amazon SageMaker

O Amazon SageMaker reúne um amplo conjunto de recursos criados especificamente para machine learning. Você pode usá-lo para preparar, construir, treinar e implantar modelos de machine learning de alta qualidade rapidamente.

Amazon SageMaker Autopilot

O Amazon SageMaker Autopilot remove o trabalho pesado de criar modelos de machine learning e ajuda a criar e treinar modelos automaticamente com base em seus dados. Com o SageMaker Autopilot, é possível fornecer um conjunto de dados tabular e selecionar a coluna de destino a ser prevista, que pode ser um número ou uma categoria. O SageMaker Autopilot explora automaticamente diferentes soluções para encontrar o melhor modelo. Em seguida, você implanta diretamente o modelo na produção com apenas um clique ou repete as soluções recomendadas com o Amazon SageMaker Studio para melhorar ainda mais a qualidade do modelo.

Amazon SageMaker Debugger

O Amazon SageMaker Debugger facilita a otimização de modelos de machine learning capturando métricas de treinamento em tempo real e enviando alertas quando detecta erros. Isso ajuda você a corrigir imediatamente previsões imprecisas de modelo, como a identificação incorreta de uma imagem.

O Amazon SageMaker oferece métodos rápidos e fáceis para treinar grandes modelos e conjuntos de dados de aprendizado profundo. As bibliotecas de treinamento distribuído do SageMaker treinar grandes conjuntos de dados mais rapidamente.

Comece a usar o Amazon SageMaker criando uma conta da AWS hoje.

Próximas etapas do AWS Machine Learning