Aumento de algoritmo | Algoritmos de condução em aprendizado de máquina

Conteúdo

Introdução

Muitos analistas interpretam mal o termo “impulso” usado em ciência de dados. Deixe-me dar-lhe uma explicação interessante sobre este termo. Boosting capacita os modelos de aprendizado de máquina para melhorar sua precisão de previsão.

Os algoritmos de reforço são um dos algoritmos mais usados ​​em competições de ciência de dados. Os vencedores do nosso últimas hackathons concordam que estão tentando empurrar o algoritmo para melhorar a precisão de seus modelos.

Neste artigo, Vou explicar como o algoritmo boost funciona de uma forma muito simples. Eu também compartilhei os códigos python abaixo. Eu pulei as derivações matemáticas intimidantes usadas em Boosting. Porque isso não me permitiria explicar esse conceito em termos simples.

Comecemos.

impulsionando-2557549

o que é impulso?

Definição: O fim “Impulso” refere-se a uma família de algoritmos que transforma um aprendiz fraco em um aprendiz forte.

Vamos entender essa definição em detalhes resolvendo um problema de identificação de e-mail de spam:

Como você classificaria um e-mail como SPAM ou não? como todo mundo, nosso foco inicial seria identificar e-mails “Spam” e “sem spam” usando os seguintes critérios. E:

  1. O email tem apenas um arquivo de imagem (imagem promocional), você é um SPAM
  2. E-mail só tem link (s), você é um SPAM
  3. O corpo do e-mail consiste em uma frase como “Você ganhou um prêmio em dinheiro de $ xxxxxx”, você é um SPAM
  4. Email do nosso domínio oficial “Analyticsvidhya.com“, Não é SPAM
  5. E-mail de fonte conhecida, sem SPAM

Anteriormente, definimos várias regras para classificar um email em 'spam'’ o ‘no spam’. Mas, você acha que essas regras individualmente são fortes o suficiente para classificar com sucesso um e-mail? Não.

Individualmente, essas regras não são poderosas o suficiente para classificar um e-mail como 'spam'’ o ‘no spam’. Portanto, essas regras são chamadas aluno fraco.

Para transformar um aluno fraco em um aluno forte, vamos combinar a previsão de cada aluno fraco usando métodos como:
• Usando média / média ponderada
• Considerando que a previsão tem a maior votação

Por exemplo: Acima, nós temos definido 5 alunos fracos. Destes 5, 3 são votados como 'SPAM’ e 2 são votados como 'Não SPAM'. Neste caso, por padrão, consideraremos um e-mail como SPAM porque temos uma votação mais alta (3) para ‘SPAM’.

Como os algoritmos de impulso funcionam?

Agora sabemos que o momento combina uma pupila fraca, também conhecido como Aluno Básico, para formar uma regra sólida. Uma pergunta imediata que deve surgir em sua mente é: ‘Como impulsionar a identificação de regras fracas?

Para encontrar uma regra fraca, aplicamos algoritmos de aprendizado básico (ML) com um layout diferente. Toda vez que o algoritmo de aprendizado básico é aplicado, gera uma nova regra de previsão fraca. Este é um processo iterativo. Depois de muitas iterações, o algoritmo boost combina essas regras fracas em uma única regra de previsão forte.

Aqui está outra pergunta que pode assombrá-lo ”.Como escolhemos uma distribuição diferente para cada rodada? ‘

Para escolher a distribuição correta, estes são os próximos passos:

Paso 1: O aprendiz básico toma todas as distribuições e atribui igual peso ou atenção a cada observação..

Paso 2: Se houver algum erro de previsão causado pelo primeiro algoritmo de aprendizado básico, então prestamos mais atenção às observações que têm um erro de previsão. Mais tarde, Aplicamos o seguinte algoritmo de aprendizado básico.

Paso 3: Repita o passo 2 até que o limite do algoritmo de aprendizado básico seja alcançado ou uma precisão mais alta seja alcançada.

Finalmente, combina os resultados do aluno fraco e cria um aluno forte que, em última análise, melhora o poder preditivo do modelo. O reforço presta mais atenção a exemplos classificados incorretamente ou com erros mais altos devido a regras fracas anteriores.

Tipos de algoritmos de impulso

O mecanismo subjacente usado para conduzir algoritmos pode ser qualquer coisa. Pode ser um carimbo de decisão, um algoritmo de classificação que maximiza as margens, etc. Existem muitos algoritmos de impulso que usam outros tipos de mecanismos, O que:

  1. AdaBoost (Existirativo AumentarAssustador)
  2. Aumento da Árvore Gradiente
  3. XGBoost

Neste artigo, vamos nos concentrar no AdaBoost e Gradient Boosting seguidos de seus respectivos códigos python e focar no XGboost no próximo artigo.

Aumento de algoritmo: AdaBoost

bigd-3876156

Este diagrama explica adequadamente o Ada-boost. vamos entender de perto:

Caixa 1: Você pode ver que atribuímos pesos iguais a cada ponto de dados e aplicamos um toco de decisão para classificá-los como + (mais) o – (menos). toco de decisão (D1) gerou uma linha vertical no lado esquerdo para classificar os pontos de dados. Nós vemos que, esta linha vertical previu incorretamente três + (mais) O que – (menos). Em tal caso, atribuiremos pesos mais altos a esses três + (mais) e aplicar outro toco de decisão.

dd1-e1526989432375-1889980

Caixa 2: Aqui, você pode ver que o tamanho de três + (mais) previsto incorretamente é maior em comparação com o resto dos pontos de dados. Neste caso, o segundo toco de decisão (D2) tentará prevê-los corretamente. Agora, uma linha vertical (D2) no lado direito deste gráfico você classificou corretamente três + (mais) classificado incorretamente. mas novamente, causou erros de classificação. desta vez com três – (menos). Novamente, vamos atribuir um peso maior a três – (menos) e aplicar outro toco de decisão.

dd2-e1526989487878-6832470

Caixa 3: Aqui, três – (menos) receber pesos maiores. Um toco de decisão é aplicado (D3) para prever corretamente essas observações mal classificadas. Desta vez é gerada uma linha horizontal para classificar + (mais) e – (menos) com base em um peso maior de observação mal classificada.

dd3-6572753

Caixa 4: Aqui, nós combinamos D1, D2 e D3 para formar uma previsão forte que tem uma regra complexa em comparação com um aluno fraco individual. Você pode ver que esse algoritmo classificou essas observações muito bem em comparação com qualquer um dos alunos fracos individuais.

dd4-e1526551014644-2439809

AdaBoost (Existirativo Aumentaring): Funciona com um método semelhante ao descrito acima. Se ajusta a una secuencia de estudiantes débiles en diferentes datos de Treinamento ponderados. Comece prevendo o conjunto de dados original e dê a cada observação o mesmo peso.. Se a previsão estiver errada usando o primeiro aluno, então mais peso é dado às observações que foram previstas incorretamente. Sendo um processo iterativo, continua adicionando alunos até que um limite no número de modelos ou precisão seja atingido.

Principalmente, usamos selos de decisão com AdaBoost. Mas podemos usar qualquer algoritmo de aprendizado de máquina como um aprendiz básico se ele aceitar o peso no conjunto de dados de treinamento. Podemos usar algoritmos AdaBoost para problemas de classificação e regressão.

Você pode consultar o artigo “Como ficar esperto com aprendizado de máquina: AdaBoost” para entender os algoritmos AdaBoost com mais detalhes.

Código Python

Aqui está uma janela de codificação ao vivo para você começar. Você pode executar os códigos e obter o resultado nesta janela:

Puede ajustar los parametros para optimizar el rendimiento de los algoritmos, Eu mencionei abaixo os principais parâmetros para ajuste:

  • n_estimators: Controle o número de alunos fracos.
  • taxa de Aprendizagem:CControla a contribuição de alunos fracos na combinação final. Há uma troca entre taxa de Aprendizagem e n_estimators.
  • base_estimators: Ajuda a especificar diferentes algoritmos de aprendizado de máquina.

Você também pode ajustar os parâmetros básicos do aluno para otimizar seu desempenho.

algoritmo de impulso: aumento de gradiente

En el aumento de gradiente, treinar muitos modelos sequencialmente. Cada nuevo modelo minimiza gradualmente la Função de perda (y = machado + b + e, e precisa de atenção especial, pois é um termo de erro) de todo o sistema usando Gradiente descendente método. El procedimiento de aprendizaje se ajustó consecutivamente a nuevos modelos para proporcionar una estimación más precisa de la variável de respuesta.

A ideia principal por trás deste algoritmo é construir novas pupilas de base que possam ser correlacionadas ao máximo com o gradiente negativo da função de perda, associado a todo. Você pode consultar o artigo “Aprenda o algoritmo de aumento de gradiente” para entender este conceito com um exemplo.

Na biblioteca Sklearn Python, Use Gradient Tree Boosting o GBRT. É uma generalização do impulso para funções de perda diferenciáveis ​​arbitrárias. Pode ser usado para problemas de regressão e classificação.

Código Python

da importação sklearn.ensemble GradientBoostingClassifier #Para Classificação
da importação sklearn.ensemble Aumento de gradienteRegressor #Para regressão
clf = GradientBoostingClassifier(n_estimators=100, taxa de Aprendizagem=1.0, profundidade máxima=1)
clf.ajuste(X_train, y_train)
  • n_estimators: Controle o número de alunos fracos.
  • taxa de Aprendizagem:CControla a contribuição de alunos fracos na combinação final. Há uma troca entre taxa de Aprendizagem e n_estimators.
  • Profundidade máxima: profundidade máxima de estimadores de regressão individuais. A profundidade máxima limita o número de nós na árvore. Ajuste este parâmetro para melhor desempenho; o melhor valor depende da interação das variáveis ​​de entrada.

Você pode ajustar a função de perda para melhor desempenho.

Nota final

Neste artigo, Analisamos o impulso, um dos métodos de modelagem de conjunto para melhorar o poder de previsão. Aqui, discutimos a ciência por trás do impulso e seus dois tipos: AdaBoost e Gradient Boost. Também estudamos seus respectivos códigos Python.

No meu próximo artigo, Vou discutir sobre outro tipo de algoritmos de impulso que agora é um segredo de dias para ganhar concursos de ciência de dados “XGBoost”.

Você acha útil este artigo? Compartilhe suas opiniões / pensamentos na seção de comentários abaixo.

Se você gostou do que acabou de ler e deseja continuar seu aprendizado sobre análise, inscreva-se em nossos e-mails, Siga-nos no Twitter ou como o nosso página do Facebook.

Assine a nossa newsletter

Nós não enviaremos SPAM para você. Nós odiamos isso tanto quanto você.