Pesquisa de site

Comparando 13 algoritmos em 165 conjuntos de dados (dica: use Gradient Boosting)


Qual algoritmo de aprendizado de máquina você deve usar?

É uma questão central no aprendizado de máquina aplicado.

Em um artigo recente de Randal Olson e outros, eles tentam responder e fornecer um guia de algoritmos e parâmetros para testar seu problema primeiro, antes de verificar um conjunto mais amplo de algoritmos.

Nesta postagem, você descobrirá um estudo e as descobertas da avaliação de muitos algoritmos de aprendizado de máquina em um grande número de conjuntos de dados de aprendizado de máquina e as recomendações feitas a partir deste estudo.

Depois de ler esta postagem, você saberá:

  • Os algoritmos de árvore de conjunto funcionam bem em uma ampla variedade de conjuntos de dados.
  • Que é fundamental testar um conjunto de algoritmos em um problema, pois não existe um algoritmo mágico.
  • Que é fundamental testar um conjunto de configurações para um determinado algoritmo, pois isso pode resultar em uma melhoria de até 50% em alguns problemas.

Inicie seu projeto com meu novo livro XGBoost With Python, incluindo tutoriais passo a passo e os arquivos de código-fonte Python para todos os exemplos .

Vamos começar.

O papel

Em 2017, Randal Olson, et al. lançou uma pré-impressão de um artigo com o título intrigante “Conselhos baseados em dados para aplicar aprendizado de máquina a problemas de bioinformática“.

O objetivo do seu trabalho foi abordar a questão que todo profissional enfrenta ao iniciar seu problema de modelagem preditiva; nomeadamente:

Qual algoritmo devo usar?

Os autores descrevem este problema como sobrecarga de escolha, como segue:

Embora ter várias implementações de algoritmos de ML prontamente disponíveis seja vantajoso para pesquisadores de bioinformática que buscam ir além da simples estatística, muitos pesquisadores enfrentam “sobrecarga de escolha” e encontram dificuldade em selecionar o algoritmo de ML certo para o problema em questão.

Eles abordam o problema executando uma amostra decente de algoritmos em uma grande amostra de conjuntos de dados de aprendizado de máquina padrão para ver quais algoritmos e parâmetros funcionam melhor em geral.

Eles descrevem seu artigo como:

… uma análise completa de 13 algoritmos de aprendizado de máquina de última geração comumente usados em um conjunto de 165 problemas de classificação disponíveis publicamente, a fim de fornecer recomendações de algoritmos baseados em dados para pesquisadores atuais

É muito semelhante ao artigo “Precisamos de centenas de classificadores para resolver problemas de classificação do mundo real?” abordado na postagem “Use Random Forest: Testando 179 classificadores em 121 conjuntos de dados”, tanto na metodologia quanto nas descobertas.

Algoritmos de aprendizado de máquina

Um total de 13 algoritmos diferentes foram escolhidos para o estudo.

Os algoritmos foram escolhidos para fornecer uma combinação de tipos ou suposições subjacentes.

O objetivo era representar as classes de algoritmos mais comuns utilizadas na literatura, bem como algoritmos recentes do estado da arte.

A lista completa de algoritmos é fornecida abaixo.

  • Gaussiano Naive Bayes (GNB)
  • Bernoulli Naive Bayes (BNB)
  • Multinomial Naive Bayes (MNB)
  • Regressão Logística (LR)
  • Descida Gradiente Estocástica (SGD)
  • Classificador Passivo Agressivo (PAC)
  • Classificador de vetores de suporte (SVC)
  • K-vizinho mais próximo (KNN)
  • Árvore de Decisão (DT)
  • Floresta Aleatória (RF)
  • Classificador de Árvores Extras (ERF)
  • AdaBoost (AB)
  • Aumento da árvore de gradiente (GTB)

A biblioteca scikit-learn foi utilizada para as implementações desses algoritmos.

Cada algoritmo tem zero ou mais parâmetros, e uma pesquisa em grade entre valores de parâmetros sensíveis foi realizada para cada algoritmo.

Para cada algoritmo, os hiperparâmetros foram ajustados usando uma busca em grade fixa.

Uma tabela de algoritmos e hiperparâmetros avaliados está listada abaixo, retirada do artigo.

Os algoritmos foram avaliados por meio de validação cruzada de 10 vezes e medida de precisão balanceada.

A validação cruzada não foi repetida, talvez introduzindo algum ruído estatístico nos resultados.

Conjuntos de dados de aprendizado de máquina

Uma seleção de 165 problemas padrão de aprendizado de máquina foi selecionada para o estudo.

Muitos dos problemas foram retirados do campo da bioinformática, embora nem todos os conjuntos de dados pertençam a este campo de estudo.

Todos os problemas de predição eram problemas do tipo classificação com duas ou mais classes.

Os algoritmos foram comparados em 165 conjuntos de dados de classificação supervisionada do Penn Machine Learning Benchmark (PMLB). […] PMLB é uma coleção de problemas de classificação disponíveis publicamente que foram padronizados para o mesmo formato e coletados em um local central com fácil acesso via Python.

Os conjuntos de dados foram extraídos da coleção Penn Machine Learning Benchmark (PMLB), que é um projeto que fornece conjuntos de dados padrão de aprendizado de máquina em um formato uniforme e disponibilizados por uma API Python simples. Você pode aprender mais sobre este catálogo de conjunto de dados no projeto GitHub:

  • Benchmarks de aprendizado de máquina Penn

Todos os conjuntos de dados foram padronizados antes do ajuste dos modelos.

Antes de avaliar cada algoritmo de ML, dimensionamos os recursos de cada conjunto de dados subtraindo a média e dimensionando os recursos para a variação unitária.

Não foi realizada outra preparação de dados, nem seleção de recursos ou engenharia de recursos.

Análise de Resultados

O grande número de experimentos realizados resultou em muitas pontuações de habilidades para analisar.

A análise dos resultados foi bem conduzida, fazendo perguntas interessantes e fornecendo conclusões na forma de gráficos fáceis de entender.

Todo o projeto experimental consistiu em mais de 5,5 milhões de algoritmos de ML e avaliações de parâmetros no total, resultando em um rico conjunto de dados que são analisados de vários pontos de vista…

O desempenho do algoritmo foi classificado para cada conjunto de dados e, em seguida, a classificação média de cada algoritmo foi calculada.

Isso forneceu uma ideia aproximada e fácil de entender de quais algoritmos tiveram um bom desempenho ou não, em média.

Os resultados mostraram que tanto o Gradient boosting quanto a floresta aleatória tiveram a classificação mais baixa (melhor desempenho) e que as abordagens Naive Bayes tiveram a classificação mais alta (pior desempenho) em média.

O teste post-hoc destaca o desempenho impressionante do Gradient Tree Boosting, que supera significativamente todos os algoritmos, exceto Random Forest, no nível p <0,01.

Isso é demonstrado com um belo gráfico, retirado do papel.

Nenhum algoritmo tem desempenho melhor ou pior.

Essa é uma sabedoria conhecida pelos profissionais de aprendizado de máquina, mas difícil de entender para iniciantes na área.

Não existe solução mágica e você deve testar um conjunto de algoritmos em um determinado conjunto de dados para ver o que funciona melhor.

… vale a pena notar que nenhum algoritmo de ML tem melhor desempenho em todos os 165 conjuntos de dados. Por exemplo, existem 9 conjuntos de dados para os quais o Multinomial NB tem um desempenho tão bom ou melhor que o Gradient Tree Boosting, apesar de serem os algoritmos gerais com pior e melhor classificação, respectivamente. Portanto, ainda é importante considerar diferentes algoritmos de ML ao aplicar ML a novos conjuntos de dados.

Além disso, escolher o algoritmo certo não é suficiente. Você também deve escolher a configuração correta do algoritmo para o seu conjunto de dados.

… selecionar o algoritmo de ML correto e ajustar seus parâmetros é de vital importância para a maioria dos problemas.

Os resultados descobriram que o ajuste de um algoritmo aumentou a habilidade de um método entre 3% e 50%, dependendo do algoritmo e do conjunto de dados.

Os resultados demonstram por que não é aconselhável usar hiperparâmetros padrão do algoritmo de ML: o ajuste geralmente melhora a precisão de um algoritmo em 3 a 5%, dependendo do algoritmo. Em alguns casos, o ajuste dos parâmetros levou a melhorias na precisão do CV de 50%.

Isso é demonstrado com um gráfico do artigo que mostra a extensão das melhorias oferecidas pelo ajuste de parâmetros em cada algoritmo.

Nem todos os algoritmos são necessários.

Os resultados descobriram que cinco algoritmos e parâmetros específicos alcançaram 1% de desempenho superior em 106 dos 165 conjuntos de dados testados.

Esses cinco algoritmos são recomendados como ponto de partida para algoritmos de verificação pontual em um determinado conjunto de dados em bioinformática, mas eu sugeriria também de forma mais geral:

  • Aumento de gradiente
  • Floresta Aleatória
  • Classificador de vetores de suporte
  • Árvores extras
  • Regressão Logística

O artigo fornece uma tabela desses algoritmos, incluindo as configurações de parâmetros recomendadas e o número de conjuntos de dados cobertos, por exemplo. onde o algoritmo e a configuração alcançaram o melhor desempenho de 1%.

Descobertas Práticas

Há duas grandes descobertas deste artigo que são valiosas para os profissionais, especialmente aqueles que estão começando ou aqueles que estão sob pressão para obter um resultado em seu próprio problema de modelagem preditiva.

1. Use árvores de conjunto

Em caso de dúvida ou pressão de tempo, use algoritmos de árvore de conjunto, como aumento de gradiente e floresta aleatória em seu conjunto de dados.

A análise demonstra a força dos algoritmos de conjunto baseados em árvore de última geração, ao mesmo tempo que mostra a natureza dependente do problema do desempenho do algoritmo de ML.

2. Verificação e ajuste pontual

Ninguém pode analisar o seu problema e dizer qual algoritmo usar, e não existe um algoritmo mágico.

Você deve testar um conjunto de algoritmos e um conjunto de parâmetros para cada algoritmo para ver o que funciona melhor para seu problema específico.

Além disso, a análise mostra que selecionar o algoritmo de ML correto e ajustar minuciosamente seus parâmetros pode levar a uma melhoria significativa na precisão preditiva na maioria dos problemas e é uma etapa crítica em todas as aplicações de ML.

Falo sobre isso o tempo todo; por exemplo, veja a postagem:

  • Uma abordagem baseada em dados para escolher algoritmos de aprendizado de máquina

Leitura adicional

Esta seção fornece mais recursos sobre o tópico se você quiser se aprofundar.

  • Conselhos baseados em dados para aplicação de aprendizado de máquina a problemas de bioinformática
  • Benchmarks do scikit-learn no GitHub
  • Benchmarks de aprendizado de máquina Penn
  • Comparação quantitativa dos modelos preditivos do scikit-learn em um grande número de conjuntos de dados de aprendizado de máquina: um bom começo
  • Use Random Forest: testando 179 classificadores em 121 conjuntos de dados

Resumo

Nesta postagem, você descobriu um estudo e descobertas da avaliação de muitos algoritmos de aprendizado de máquina em um grande número de conjuntos de dados de aprendizado de máquina.

Especificamente, você aprendeu:

  • Os algoritmos de árvore de conjunto funcionam bem em uma ampla variedade de conjuntos de dados.
  • Que é fundamental testar um conjunto de algoritmos em um problema, pois não existe um algoritmo mágico.
  • Que é fundamental testar um conjunto de configurações para um determinado algoritmo, pois isso pode resultar em uma melhoria de até 50% em alguns problemas.

Você tem alguma dúvida?
Tire suas dúvidas nos comentários abaixo e farei o possível para responder.

Artigos relacionados