À medida que descubro o aprendizado de máquina, vejo diferentes técnicas interessantes, como:
- ajustar algoritmos automaticamente com técnicas como
grid search
, - obtenha resultados mais precisos através da combinação de algoritmos diferentes do mesmo "tipo", ou seja
boosting
, - obtenha resultados mais precisos através da combinação de algoritmos diferentes (mas não do mesmo tipo de algoritmo), ou seja
stacking
, - e provavelmente muito mais ainda tenho que descobrir ...
Minha pergunta é a seguinte: existem todas essas peças. Mas é possível reuni-los para criar um algoritmo que tome como entrada dados limpos e produza bons resultados tirando o melhor de todas as técnicas? (É claro que provavelmente será menos eficiente que um cientista de dados profissional, mas ele será melhor que eu!) Se sim, você tem códigos de amostra ou conhece estruturas que podem fazer isso?
EDIT: Após algumas respostas, parece que deve ser feito um estreitamento. Vamos dar um exemplo, temos uma coluna com dados categóricos, vamos chamá-lo y
e queremos prever a partir de dados numéricos X
que são manequins ou dados numéricos reais (altura, temperatura). Assumimos que a limpeza foi feita anteriormente. Existem algoritmos existentes que podem receber esses dados e gerar uma previsão? (testando vários algoritmos, ajustando-os, aumentando etc.) Se sim, é computacionalmente eficiente (os cálculos são feitos em um tempo razoável se compararmos ao algoritmo normal) e você tem um exemplo de código?
fonte
auto.arima
(daforecast
biblioteca) pode ser melhor que a dos seres humanos - Rob Hyndman mencionou várias vezes em suas apresentações. Portanto, há áreas em que alguns tipos de "aprendizado automático" são aplicados com sucesso.Respostas:
Se você souber de antemão quais tipos de dados serão alimentados ("são vendas mensais de CPGs, com preços e marcadores de promoção, e eu quero uma previsão pontual"), para que você possa ajustar sua configuração com antecedência, provavelmente será possível e já feito, consulte vários "sistemas especialistas" para determinadas tarefas específicas.
Se você estiver procurando por algo que possa pegar qualquer tipo de dado e fazer "algo útil" com ele ("ah, aqui devo reconhecer manuscritos e códigos postais de saída), e aí eu devo fazer a detecção de fraudes e esse arquivo de entrada obviamente é uma tarefa de pontuação de crédito "), não, não acho que isso aconteça em muito tempo.
Desculpe por uma resposta baseada em opinião para o que pode ser encerrado como uma pergunta baseada em opinião.
EDIT para abordar a pergunta editada:
fonte
O que você descreve já existe até certo ponto, por exemplo, no AutoWEKA , e está sendo pesquisado ativamente (por exemplo, desafios como o AutoML do Chalearn ).
Isso geralmente é considerado no subcampo da otimização do hiperparâmetro. Pacotes de software como Optunity , Hyperopt e ParamILS podem ser usados para otimizar automaticamente os hiperparâmetros para uma determinada abordagem e escolher qual abordagem é a melhor. Dito isso, esses problemas de otimização não são triviais e geralmente leva muito tempo para obter automaticamente o melhor modelo (ou próximo a ele).
Você pode encontrar um exemplo do uso do Optunity para determinar automaticamente o melhor algoritmo de aprendizado e otimizar seus hiperparâmetros em http://optunity.readthedocs.org/en/latest/notebooks/notebooks/sklearn-automated-classification.html
fonte
Os avanços no ajuste de hiper parâmetros e nos modelos de conjuntos estão retirando grande parte da 'arte' da construção de modelos. No entanto, existem dois aspectos importantes na construção de modelos que os ajustes e conjuntos de hiper parâmetros não lidam e impedem que você encontre o melhor modelo possível.
Primeiro, certos tipos de algoritmos são melhores na modelagem de certos tipos de dados. Por exemplo, se houver interações entre suas variáveis, um modelo aditivo não as encontrará, mas uma árvore de decisão o encontrará. Saber como os modelos se comportam em diferentes conjuntos de dados e escolher o correto pode exigir conhecimento sobre o domínio para encontrar o melhor algoritmo de modelagem.
Segundo, a engenharia de recursos e a extração de recursos são a verdadeira "arte" para modelar a construção. Sua pergunta pressupõe que o conjunto de dados já esteja preparado. Mas o que você não deve assumir é que o conjunto de dados é a melhor representação possível do que você está tentando modelar. Esta é sempre uma pergunta aberta. Em muitos casos, onde o conjunto de dados é complexo, você pode projetar recursos o dia inteiro, mas corre o risco de lançar cada vez mais ruído no algoritmo. Para saber quais recursos adicionar, você deve saber quais recursos fazem sentido do ponto de vista estatístico e quais fazem sentido do ponto de vista do especialista em domínio.
Por essas duas razões, concluo que não, você não poderá encontrar um algoritmo que encontre o melhor modelo possível automaticamente. É também por isso que sou cético em relação aos fornecedores de software que lançam ferramentas que substituirão a necessidade de cientistas de dados.
No entanto, se você está restringindo sua ambição de encontrar o melhor modelo de um conjunto fixo de modelos, com hiper parâmetros ótimos, em que 'melhor' é definido como a maior precisão preditiva em um conjunto de treinamento, sim, isso é possível.
Confira o
caret
pacoteR
como um exemplo de como ajustar automaticamente os modelos.caret
usa a pesquisa em grade, que possui falhas, e constrói apenas um modelo por vez. No entanto, existem funções para comparar modelos e wrappers convenientes para uma longa lista de modelos de muitosR
pacotes diferentes .fonte
Depende de quem você pergunta.
Recentemente, ouvi uma palestra de Scott Golder no Context Relevant . Seu produto é essencialmente um robô de seleção de recursos e modelos. O modelo básico subjacente é a regressão logística, mas o sistema basicamente usa o aprendizado de máquina para descobrir a combinação certa de seleção de recurso, redução de dimensão, regularização etc. para gerar previsões precisas. Foi uma palestra muito impressionante, e os detalhes são todos de propriedade. Aparentemente, seus clientes incluem grandes empresas financeiras e o sistema pode lidar com conjuntos de dados arbitrariamente massivos.
Pelo menos algumas pessoas parecem pensar que a ciência de dados automatizada já está aqui, pelo menos para determinadas aplicações. E algumas dessas pessoas (clientes do Contexto Relevante) aparentemente estão pagando pelo nariz pelo acesso a ele.
fonte
Não, não é um sonho. Implementamos isso (a combinação de todas as técnicas que você mencionou, incluindo conjuntos empilhados) na biblioteca de aprendizado de máquina H2O . Você pode ler mais sobre isso e encontrar exemplos de código em R e Python aqui .
fonte