Existe algum consenso sobre a escolha de uma abordagem de ML apropriada?


8

Atualmente, estou estudando ciência de dados e aprendemos uma variedade estonteante de técnicas básicas de regressão / classificação (linear, logística, árvores, splines, RNA, SVM, MARS etc.), juntamente com uma variedade de ferramentas extras (bootstrapping, reforço, ensacamento, conjunto, cume / laço, CV, etc etc). Às vezes, as técnicas recebem contexto (por exemplo, adequado para conjuntos de dados pequenos / grandes, adequado para um número pequeno / grande de preditores etc.), mas na maioria das vezes, parece que para qualquer problema de regressão ou classificação existe uma variedade estonteante de opções escolher a partir de.

Se eu comecei um trabalho em ciência de dados agora e recebi um problema de modelagem, acho que não poderia fazer melhor do que apenas tentar todas as técnicas que conheço nas configurações básicas, avaliá-las usando a validação cruzada e escolher a melhor. Mas deve haver mais do que isso.

Imagino que um cientista de dados experiente conheça bem o catálogo de técnicas e siga alguns fluxogramas mentais para decidir quais técnicas tentar, em vez de tentar todas elas sem pensar. Eu imagino que esse fluxograma seja uma função de a) número de preditores; b) tipos de variáveis; c) conhecimento do domínio sobre possíveis relacionamentos (linear / não linear); d) tamanho do conjunto de dados; e) restrições em torno do tempo de computação e assim por diante.

Existe algum fluxograma convencional acordado a seguir para escolher as técnicas? Ou realmente se resume a "tentar muitas coisas e ver o que funciona melhor na medida desejada, por exemplo, validação cruzada"?

Respostas:


4

Meus estudos em ciência de dados começaram como um mestrado em estatística aplicada. Um dos cursos foi sobre aprendizado de máquina e tinha uma abordagem semelhante à que você está descrevendo. Então, eu posso simpatizar um pouco com a sua visão atual. Mas, assim como outras coisas que você pode ter aprendido na vida, a maneira como você faz as coisas em um ambiente acadêmico e a maneira como você faz as coisas em um ambiente de negócios (por exemplo, para um cliente) são completamente diferentes. Aqui está o que eu aprendi desde meus estudos iniciais:

1 - Aprenda Python

Claro, existem outras ferramentas por aí e elas são boas (eu costumava escrever código R com a melhor delas), mas Python é onde o futuro está, ponto final. Além disso, pouquíssimas ferramentas são dimensionadas, assim como Python, e isso é importante se você deseja trabalhar em coisas realmente interessantes.

2 - Tudo se resume à implementação

Adivinha? Todas essas coisas que você está aprendendo agora (matrizes de confusão, redução de fatores etc.) não significam nada para seus clientes. Eles vão apenas olhar para você e dizer: "Qual é o produto? Quando você implantará algo no meu telefone? Onde meu aplicativo da web deve clicar?". Uma grande parte do seu trabalho será transformar todo o seu trabalho em um produto e você se encontrará usando um chapéu de desenvolvedor de software quase. Esse também é outro bom motivo para aprender python.

3 - Os pipelines de dados levam tempo

Muito do seu trabalho será sobre manipulação de dados e apenas garantirá que os pipelines de dados necessários estejam lá. Claro, você tem um banco de dados - mas como vai atualizá-lo? De que pré-processamento você precisa? Onde seus resultados são armazenados? Você vai gastar muito tempo descobrindo essas coisas. Você perderá seus dias de escola quando os conjuntos de dados foram fornecidos de uma maneira agradável e limpa :)

4 - Redes neurais chutam a bunda

Depois de dar uma mordida nessa maçã, é difícil voltar :). Aprenda Keras e aproveite o passeio. Depois de um tempo, você terá que se lembrar de quais são as decisões das árvores :)

5 - Pesquisas de modelo são muito mais fáceis agora

Para ser 100% claro, a abordagem de "pesquisa de modelo" que você está fazendo agora é uma experiência MUITO valiosa. Você definitivamente deveria trabalhar duro nessas classes. No entanto, se você tiver tempo, consulte (1) Data Robot ou (2) Watson Analytics. Ambos os pacotes fazem, essencialmente, a mesma coisa. Eles pegarão seu conjunto de dados e encontrarão o melhor modelo para ele. Todos os itens que você descreveu acima são feitos para você em questão de segundos. É quase assustador o quão rápido eles são e são muito eficazes para ajudar você a reduzir seu trabalho. No entanto, esteja avisado de que esses pacotes suportam apenas dados supervisionados. Você ainda precisará fazer isso da maneira antiquada para dados não supervisionados (ou rotular alguns e usar uma rede neural).

6 - Ainda uso a teoria por trás de outros modelos

Mesmo se eu usar muito redes neurais, os outros modelos ainda serão úteis. Você ainda usará regressão linear ou árvores de decisão para problemas básicos. Também é útil quando decido ler alguns trabalhos de pesquisa sobre arquivx ou o que seja. Então, ainda vou usá-los para meu próprio estudo e entendimento, mas é isso.

Diverta-se!


11
Obrigado! O Data Robot parece incrível, mas o preço não está disponível on-line ... é incrivelmente caro? Existem alternativas de código aberto para a ciência de dados automatizada?
Brendan Hill

@BrendanHill Não, não tenho alternativas de código aberto que eu conheça. O mercado simplesmente não está "maduro" o suficiente para isso. Mas, novamente, eu o aconselho a não usar essas ferramentas como muleta, você ainda precisa conhecer a teoria. Em muitos casos, você usa o Data Robot apenas para restringir o campo, mas ainda precisa saber como criar o modelo fora dessa ferramenta. Boa sorte para você!
I_Play_With_Data 14/09/18

4

Bem, digamos assim. Embora existam inúmeras abordagens de aprendizado, cada uma é útil para uma situação específica. É possível que, para um problema, você tenha várias opções. Cada uma das abordagens de aprendizagem possui um domínio de aplicação especial e é por isso que as pessoas geralmente sabem onde usar árvores de decisão e onde escolher redes neurais, por exemplo, em situações em que todas as suas entradas são números com valor real, tentar usar árvores de decisão não é uma tarefa fácil. escolha sábia. Eu tento explicar as principais coisas que um profissional de ML geralmente considera.

Número de recursos disponíveis

O número de recursos é importante porque não é possível visualizá-los facilmente nos casos em que existem muitos recursos. Isso pode levar à impossibilidade de reconhecer se os dados são linearmente separáveis ​​ou não. Tantos recursos não significam que o conjunto de dados não seja linearmente separável. Consequentemente, digamos que você queira usar redes neurais para modelar o problema. Você não deve começar com uma rede complicada com tantas camadas e neurônios. Você precisa começar com um único neurônio, equivalente à regressão logística para tarefas de classificação, para descobrir se seus dados são linearmente separáveis ​​ou não. Se você observar que não possui um bom desempenho, poderá adicionar neurônios e camadas extras. Quão? Dê uma olhada em Como definir o número de neurônios e camadas nas redes neurais .

Espaço de Recursos

Sobre a escolha de abordagens de ML, é simples considerar as limitações de cada algoritmo com relação ao espaço de recursos. Por exemplo, as árvores de decisão não são muito boas para problemas com muitos recursos, alguns dos quais são numéricos. Eles podem ficar muito grandes. SVMsnão são muito bons para problemas não lineares com tantos recursos, porque você precisa especificar o tamanho do kernel. Para diferentes regiões no espaço de recursos, um único tamanho de kernel pode não ser valioso. Para generalizar, problemas que possuem um espaço de entrada muito grande geralmente são tratados usando redes neurais. Se o problema tiver muitos recursos, mas eles forem, por exemplo, recursos binários ou recursos categóricos, com um pequeno número de opções, o problema terá menor espaço de recursos, espaço de entrada e outras abordagens de ML podem ser consideradas.

Tamanho do conjunto de dados

Dependendo do seu problema, tipos e intervalos de recursos, o espaço de entrada pode ser muito pequeno ou muito grande. Conseqüentemente, o número de dados possíveis pode diferir dependendo do espaço de entrada. Para um grande espaço de entrada, como mencionado, as redes neurais são muito poderosas para mapeamentos.

Distribuições e erro de Bayes

Para tarefas diferentes, por exemplo, classificação, é necessário fazer uma análise estatística para conhecer melhor o conjunto de dados disponível. Você deve investigar se existem padrões de entrada iguais, mas seus rótulos diferem. Se sim, por quê? É por erro de especialista ou não. O espaço atual do recurso não é válido para entender o problema. Depois de responder a essas perguntas, você pode empregar o erro Bayes para investigar a melhor abordagem para obter a precisão dos dados.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.