Um guia abrangente para impulsionar algoritmos de aprendizado de máquina



Este blog é inteiramente focado em como Boosting Machine Learning funciona e como pode ser implementado para aumentar a eficiência dos modelos de Machine Learning.

Com tantos avanços no campo da saúde, marketing, negócios e assim por diante, tornou-se uma necessidade de desenvolvimento mais avançado e complexo . Impulsionar o aprendizado de máquina é uma dessas técnicas que pode ser usada para resolver problemas do mundo real complexos e orientados por dados. Este blog é totalmente focado em como Boosting Machine Learning funciona e como pode ser implementado para aumentar a eficiência dos modelos de Machine Learning.

Para obter conhecimento profundo de Inteligência Artificial e Aprendizado de Máquina, você pode se inscrever para por Edureka com suporte 24 horas por dia, 7 dias por semana e acesso vitalício.





Aqui está uma lista de tópicos que serão abordados neste blog:

  1. Por que o Boosting é usado?
  2. O que é Boosting?
  3. Como funciona o algoritmo de impulso?
  4. Tipos de Boosting
  5. Demo

Por que o Boosting é usado?

Para resolver problemas complicados, exigimos técnicas mais avançadas. Suponhamos que, dado um conjunto de dados de imagens contendo imagens de cães e gatos, você foi solicitado a construir um modelo que pode classificar essas imagens em duas classes separadas. Como qualquer outra pessoa, você começará identificando as imagens usando algumas regras, como as fornecidas a seguir:



  1. A imagem tem orelhas pontudas: Gato

  2. A imagem tem olhos em forma de gato: Gato

  3. A imagem tem membros maiores: Cachorro



  4. A imagem tem garras afiadas: Gato

  5. A imagem tem uma estrutura de boca mais larga: Cachorro

Todas essas regras nos ajudam a identificar se uma imagem é um cachorro ou um gato, no entanto, se fossemos classificar uma imagem com base em uma regra individual (única), a previsão seria falha. Cada uma dessas regras, individualmente, são chamadas de alunos fracos porque essas regras não são fortes o suficiente para classificar uma imagem como um gato ou cachorro.

Portanto, para ter certeza de que nossa previsão é mais precisa, podemos combinar a previsão de cada um desses alunos fracos usando a regra da maioria ou média ponderada. Isso torna um modelo de aluno forte.

meus tutoriais sql para iniciantes

No exemplo acima, definimos 5 alunos fracos e a maioria dessas regras (ou seja, 3 em 5 alunos prevêem a imagem como um gato) nos dá a previsão que a imagem é um gato. Portanto, nosso produto final é um gato.

Então, isso nos leva à questão,

O que é Boosting?

Boosting é uma técnica de aprendizagem combinada que usa um conjunto de algoritmos de aprendizado de máquina para converter alunos fracos em alunos fortes, a fim de aumentar a precisão do modelo.

What-Is-Boosting-Boosting-Machine-Learning-Edureka

What Is Boosting - Boosting Machine Learning - Edureka

Como mencionei, o Boosting é um método de aprendizado por conjunto, mas o que exatamente é o aprendizado por conjunto?

O que é Ensemble em aprendizado de máquina?

O aprendizado do Ensemble é um método usado para aprimorar o desempenho do modelo de Aprendizado de Máquina combinando vários alunos. Quando comparado a um único modelo, esse tipo de aprendizado cria modelos com maior eficiência e precisão. É exatamente por isso que os métodos de conjunto são usados ​​para ganhar competições líderes de mercado, como a competição de recomendação Netflix, competições Kaggle e assim por diante.

O que é Ensemble Learning - Boosting Machine Learning - Edureka

Abaixo, também discuti a diferença entre Boosting e Bagging.

Boosting vs Bagging

A aprendizagem do conjunto pode ser realizada de duas maneiras:

  1. Conjunto sequencial, popularmente conhecido como impulsionando , aqui os alunos fracos são produzidos sequencialmente durante a fase de treinamento. O desempenho do modelo é aprimorado atribuindo-se uma ponderação mais alta às amostras anteriores classificadas incorretamente. Um exemplo de aumento é o algoritmo AdaBoost.

  2. Conjunto paralelo , popularmente conhecido como ensacamento , aqui os alunos fracos são produzidos paralelamente durante a fase de treinamento. O desempenho do modelo pode ser aumentado ao treinar paralelamente um número de alunos fracos em conjuntos de dados inicializados. Um exemplo de ensacamento é o Random Forest algoritmo.

Neste blog, estarei me concentrando no método de Boosting, portanto, na seção abaixo, entenderemos como funciona o algoritmo de Boosting.

Como funciona o algoritmo de impulso?

O princípio básico por trás do funcionamento do algoritmo de impulso é gerar vários alunos fracos e combinar suas previsões para formar uma regra forte. Essas regras fracas são geradas pela aplicação de algoritmos de aprendizado de máquina básicos em diferentes distribuições do conjunto de dados. Esses algoritmos geram regras fracas para cada iteração. Após várias iterações, os alunos fracos são combinados para formar um aluno forte que irá prever um resultado mais preciso.

Como Funciona o Algoritmo de Boosting - Boosting Machine Learning - Edureka

Veja como funciona o algoritmo:

Passo 1: O algoritmo de base lê os dados e atribui peso igual a cada observação de amostra.

Passo 2: As previsões falsas feitas pelo aluno base são identificadas. Na próxima iteração, essas previsões falsas são atribuídas ao próximo aluno básico com uma ponderação mais alta nessas previsões incorretas.

Etapa 3: Repita a etapa 2 até que o algoritmo possa classificar corretamente a saída.

Portanto, o principal objetivo do Boosting é para se concentrar mais em previsões mal classificadas.

Agora que sabemos como funciona o algoritmo de impulso, vamos entender os diferentes tipos de técnicas de impulso.

Tipos de Boosting

Existem três maneiras principais pelas quais o boost pode ser realizado:

  1. Boosting adaptável ou AdaBoost

  2. Gradient Boosting

  3. XGBoost

Eu estarei discutindo os fundamentos por trás de cada um desses tipos.

Boosting adaptativo

  • AdaBoost é implementado combinando vários alunos fracos em um único aluno forte.

  • Os alunos fracos no AdaBoost levam em consideração um único recurso de entrada e desenham uma única árvore de decisão dividida chamada toco de decisão. Cada observação é pesada igualmente enquanto se desenha o primeiro toco de decisão.

  • Os resultados do primeiro toco de decisão são analisados ​​e, se alguma observação for classificada incorretamente, são atribuídos pesos maiores.

  • Poste isso, um novo toco de decisão é desenhado considerando as observações com pesos maiores como mais significativas.

  • Novamente, se quaisquer observações forem classificadas incorretamente, elas recebem um peso maior e este processo continua até que todas as observações caiam na classe certa.

  • Adaboost pode ser usado para problemas de classificação e baseados em regressão, no entanto, é mais comumente usado para fins de classificação.

Gradient Boosting

O Gradient Boosting também é baseado no aprendizado de conjunto sequencial. Aqui, os alunos base são gerados sequencialmente de tal forma que o aluno base presente é sempre mais eficaz do que o anterior, ou seja, o modelo geral melhora sequencialmente com cada iteração.

A diferença neste tipo de reforço é que os pesos para resultados classificados incorretamente não são incrementados, em vez disso, o método Gradient Boosting tenta otimizar a função de perda do aluno anterior, adicionando um novo modelo que adiciona alunos fracos a fim de reduzir a função de perda.

A ideia principal aqui é superar os erros nas previsões do aluno anterior. Este tipo de impulso tem três componentes principais:

  1. Função de perda que precisa ser melhorado.

  2. Aluno fraco para calcular previsões e formar bons alunos.

  3. A Modelo Aditivo isso vai regularizar a função de perda.

Como o AdaBoost, o Gradient Boosting também pode ser usado para problemas de classificação e regressão.

XGBoost

XGBoost é uma versão avançada do método de intensificação de gradiente, que significa literalmente eXtreme Gradient Boosting. O XGBoost, desenvolvido por Tianqi Chen, se enquadra na categoria Distributed Machine Learning Community (DMLC).

O principal objetivo deste algoritmo é aumentar a velocidade e a eficiência da computação. O algoritmo Gradient Descent Boosting calcula a saída a uma taxa mais lenta, uma vez que analisa sequencialmente o conjunto de dados, portanto, o XGBoost é usado para aumentar ou aumentar extremamente o desempenho do modelo.

XGBoost - Boosting Machine Learning - Edureka

O XGBoost foi projetado para focar na velocidade computacional e na eficiência do modelo. Os principais recursos fornecidos pelo XGBoost são:

  • Cria árvores de decisão paralelamente.

  • Implementar métodos de computação distribuída para avaliar modelos grandes e complexos.

  • Usando Out-of-Core Computing para analisar grandes conjuntos de dados.

  • Implementar a otimização do cache para fazer o melhor uso dos recursos.

Então, esses foramos diferentes tipos de algoritmos de Boosting Machine Learning. Para tornar as coisas interessantes, na seção abaixo, executaremos uma demonstração para ver como algoritmos de boosting podem ser implementados em Python.

Impulsionando o aprendizado de máquina em Python

Uma breve isenção de responsabilidade: estarei usando Python para executar esta demonstração, então, se você não conhece Python, pode consultar os seguintes blogs:

  1. Como aprender Python 3 do zero - um guia para iniciantes

    o que é um desenvolvedor ios

Agora é hora de colocar a mão na massa e começar a programar.

Declaração do problema: Para estudar um conjunto de dados de cogumelo e construir um modelo de aprendizado de máquina que pode classificar um cogumelo como venenoso ou não, analisando suas características.

Descrição do conjunto de dados: Este conjunto de dados fornece uma descrição detalhada de amostras hipotéticas de acordo com 23 espécies de cogumelos guelados. Cada espécie é classificada como cogumelos comestíveis ou não comestíveis (venenosos).

Lógica: Construir um modelo de aprendizado de máquina usando um dos algoritmos de Boosting para prever se um cogumelo é comestível ou não.

Etapa 1: importe os pacotes necessários

from sklearn.ensemble import AdaBoostClassifier from sklearn.preprocessing importar LabelEncoder from sklearn.tree importar DecisionTreeClassifier importar pandas como pd # Importar train_test_split função de sklearn.model_selection importar train_test_split #Import scikit-learn métricas de cálculo do módulo de cálculo de precisão

Etapa 2: importar o conjunto de dados

# Carregue no conjunto de dados de dados = pd.read_csv ('C: //Users//NeelTemp//Desktop//mushroomsdataset.csv')

Etapa 3: Processamento de Dados

#Defina os nomes das colunas dataset.columns = ['target', 'cap-shape', 'cap-surface', 'cap-color', 'hematomas', 'odor', 'gill-attachment', 'gill-spacing ',' tamanho da guelra ',' cor da guelra ',' forma do caule ',' raiz do caule ',' superfície do caule acima do anel ',' superfície do caule abaixo do anel ',' cor do caule -acima-anel ',' haste-cor-abaixo-do-anel ',' véu-tipo ',' véu-cor ',' número do anel ',' anel-tipo ',' esporo-impressão-cor ',' população ',' habitat '] para rótulo em dataset.columns: dataset [label] = LabelEncoder (). fit (dataset [label]). transform (dataset [label]) #Exibir informações sobre o conjunto de dados print (dataset.info ( )) Int64Index: 8124 entradas, 6074 a 686 Colunas de dados (total de 23 colunas): alvo 8124 não nulo int32 forma de capa 8124 não nulo int32 superfície de capa 8124 não nulo int32 cor de capa 8124 não nulo int32 hematomas 8124 não nulo int32 odor 8124 não nulo int32 anexo de brânquia 8124 não nulo int32 espaçamento de brânquia 8124 não nulo int32 tamanho de brânquia 8124 não nulo int32 cor de brânquia 8124 não nulo int32 formato de haste 8124 não nulo int32 stalk-root 8124 não nulo int32 superfície da haste acima do anel 8124 não nula int32 superfície da haste abaixo do anel 8124 não nula int32 cor da haste acima do anel 8124 não nula int32 cor da haste abaixo do anel 8124 não nula int32 véu tipo 8124 não nulo int32 cor do véu 8124 não nulo int32 número do anel 8124 não nulo int32 tipo de anel 8124 não nulo int32 cor da impressão do esporo 8124 não nulo int32 população 8124 não nulo int32 habitat 8124 não null int32 dtypes: int32 (23) uso de memória: 793,4 KB

Etapa 4: Splicing de dados

X = dataset.drop (['target'], axis = 1) Y = dataset ['target'] X_train, X_test, Y_train, Y_test = train_test_split (X, Y, test_size = 0,3)

Etapa 5: construir o modelo

model = DecisionTreeClassifier (criterion = 'entropia', max_depth = 1) AdaBoost = AdaBoostClassifier (base_estimator = model, n_estimators = 400, learning_rate = 1)

No trecho de código acima, implementamos o algoritmo AdaBoost. A função ‘AdaBoostClassifier’ tem três parâmetros importantes:

  • base_estimator: O estimador de base (aluno fraco) é Árvores de Decisão por padrão
  • n_estimator: Este campo especifica o número de alunos básicos a serem usados.
  • learning_rate: este campo especifica a taxa de aprendizagem, que definimos com o valor padrão, ou seja, 1.
#Fit the model with training data boostmodel = AdaBoost.fit (X_train, Y_train)

Etapa 6: Avaliação do modelo

#Avalie a precisão do modelo y_pred = boostmodel.predict (X_test) predictions = metrics.accuracy_score (Y_test, y_pred) #Calculando a precisão em porcentagem de impressão ('A precisão é:', previsões * 100, '%') A precisão é: 100,0%

Recebemos uma precisão de 100%, o que é perfeito!

Com isso, chegamos ao fim deste Blog Boosting Machine Learning. Se você deseja saber mais sobre o aprendizado de máquina, leia estes blogs:

Se você deseja se inscrever em um curso completo de Inteligência Artificial e Aprendizado de Máquina, Edureka tem uma curadoria especial isso o tornará proficiente em técnicas como aprendizado supervisionado, aprendizado não supervisionado e processamento de linguagem natural. Inclui treinamento sobre os mais recentes avanços e abordagens técnicas em Inteligência Artificial e Aprendizado de Máquina, como Aprendizado Profundo, Modelos Gráficos e Aprendizado por Reforço.