Desafios da indústria versus Kaggle. A coleta de mais observações e o acesso a mais variáveis ​​são mais importantes que a modelagem extravagante?

56

Eu espero que o título seja auto-explicativo. No Kaggle, a maioria dos vencedores usa o empilhamento com algumas vezes centenas de modelos de base, para extrair alguns% extra de MSE, precisão ... Em geral, na sua experiência, o quão importante é a modelagem sofisticada, como empilhar versus simplesmente coletar mais dados e mais recursos para os dados?

Tom
fonte
4
Depende inteiramente se você deseja um fluxo generalizável útil que possa ser treinado rapidamente (ou redirecionado para novos conjuntos de dados ou novos recursos) ou apenas vencer essa competição específica do Kaggle (nesse conjunto de dados estático específico, com explorações de vazamento, 'recursos mágicos' e tudo). Para o primeiro, um algoritmo que obtém a mesma precisão de estimativa com um tempo de treinamento muito menor e em um conjunto de dados menor é 'melhor'. Imagine se o Kaggle alguma vez começou a punir requisitos excessivos de computação / memória ou tempo de treinamento, ou considerou isso como parte da pontuação de envio (eu sugiro que eles já devam).
smci 11/07/19
2
Retirado de "Aplicando aprendizado profundo a problemas do mundo real", de Rasmus Rothe: "[...] em cenários do mundo real, trata-se menos de mostrar que seu novo algoritmo reduz 1% a mais de desempenho em comparação com outro método. trata-se de construir um sistema robusto que resolva a tarefa necessária com precisão suficiente ".
beatngu13

Respostas:

77

Como pano de fundo, venho fazendo previsões de séries temporais de SKU de loja para vendas no varejo há 12 anos. Dezenas de milhares de séries temporais em centenas ou milhares de lojas. Eu gosto de dizer que estamos fazendo Big Data desde antes do termo se tornar popular.×

Eu sempre achei que a coisa mais importante é entender seus dados . Se você não entende os principais motivadores, como a Páscoa ou as promoções, está condenado. Frequentemente, isso se resume a entender o negócio específico bem o suficiente para fazer as perguntas corretas e contar incógnitas conhecidas de incógnitas desconhecidas .

Depois de entender seus dados, você precisará trabalhar para obter dados limpos . Supervisionei vários juniores e estagiários, e a única coisa que eles nunca haviam experimentado em todas as suas aulas de estatística e ciência de dados era a quantidade de merda que pode haver nos dados que você possui. Então você precisa voltar à fonte e tentar obtê-la para gerar bons dados, ou tentar limpá-la, ou até mesmo jogar algumas coisas fora. Alterar um sistema em execução para gerar melhores dados pode ser surpreendentemente difícil.

Depois de entender seus dados e realmente ter dados um tanto limpos, você pode começar a mexer com eles. Infelizmente, a essa altura, muitas vezes me encontrava sem tempo e recursos.

Pessoalmente, sou um grande fã da combinação de modelos ("empilhamento"), pelo menos em um sentido abstrato , menos da engenharia de recursos sofisticada, que muitas vezes cruza a linha para um território de - e mesmo que seu modelo mais sofisticado tenha um desempenho um pouco melhor em média, freqüentemente se descobre que as previsões realmente ruins pioram com um modelo mais complexo. Este é um desastre na minha linha de negócios. Uma única previsão realmente ruim pode destruir completamente a confiança em todo o sistema; portanto, a robustez é extremamente alta na minha lista de prioridades. Sua milhagem pode variar.

Na minha experiência, sim, a combinação de modelos pode melhorar a precisão. No entanto, os ganhos realmente grandes são obtidos com as duas primeiras etapas: entendendo seus dados e limpando-os (ou obtendo dados limpos em primeiro lugar).

S. Kolassa - Restabelecer Monica
fonte
4
@bendl, YMMV significa que sua milhagem pode variar . A afirmação da sentença anterior a isso pode ou não ser mais ou menos verdadeira em diferentes circunstâncias.
Orphevs
2
Também trabalho no varejo, realizando previsões de SKU / Localização para ~ séries temporais :-). Mas eu me perguntei se o que fazemos conta como "Big Data" ou não. Embora os conjuntos de dados gerais estejam no intervalo de big data, os modelos de previsão geralmente são aplicados a grupos menores de dados (mesmo após o uso de métodos hierárquicos de previsão) e as técnicas necessárias para o verdadeiro processamento de big data (por exemplo, MapReduce, hash de dados, etc.) .) nunca são necessários. O DeepAR da Amazon parece ser um verdadeiro big data, e suspeito que seja tanto hype quanto ciência. 106
21318 Skander H.Jul
2
Não importa a experiência em sala de aula. Muitos profissionais do setor são experientes principalmente em contextos de alta relação sinal / ruído, como reconhecimento de imagem, e tentam aplicar os mesmos métodos a processos sociais ruidosos, como o recrutamento, pelo amor de Deus.
Equilíbrio Brash
2
@ Orphevs Por outras palavras, esta afirmação pode ser adaptada à minha situação e não generalizar bem. : P
JAD
2
(+1) No que diz respeito à questão da limpeza de dados com novos graduados, também vale a pena notar que, durante minha educação formal, foi fácil pensar que a limpeza de dados era ruim . Ou seja, a limpeza de dados pode afetar fortemente as taxas de erro do tipo I (especialmente se houver viés no processo de limpeza) e, portanto, fomos informados sobre os perigos da limpeza de dados. Essas lições não estavam erradas, mas não acho que minha educação formal enfatizasse os benefícios da limpeza de dados, especialmente no caso da modelagem preditiva.
Cliff AB
42

Obviamente, não posso falar por toda a indústria, mas trabalho na indústria e competi no Kaggle para compartilhar meu ponto de vista.

Primeiro, você tem razão em suspeitar que o Kaggle não corresponde exatamente ao que as pessoas estão fazendo na indústria. É um jogo, e sujeito a habilidade de jogo, com muitas restrições malucas. Por exemplo, na competição Santander atualmente em execução :

  1. Os nomes dos recursos foram misturados artificialmente para ocultar seu significado
  2. O conjunto de "treinamento" foi artificialmente limitado para ter menos linhas do que colunas especificamente, de modo que a seleção de recursos, a robustez e a técnica de regularização seriam indispensáveis ​​para o sucesso.
  3. O chamado conjunto de "testes" possui uma distribuição marcadamente diferente da do conjunto de treinamento e os dois claramente não são amostras aleatórias da mesma população.

Se alguém me desse um conjunto de dados como este no trabalho, eu imediatamente me ofereceria para trabalhar com eles na engenharia de recursos, para que pudéssemos obter recursos mais úteis. Eu sugeriria que usássemos o conhecimento do domínio para decidir sobre prováveis ​​termos de interação, limites, estratégias de codificação de variáveis ​​categóricas, etc. Abordar o problema dessa maneira seria claramente mais produtivo do que tentar extrair significado de um arquivo de exaustão produzido por um engenheiro de banco de dados sem treinamento em ML.

Além disso, se você aprender, digamos, que uma determinada coluna numérica não é numérica, mas sim um código postal, pode obter dados de fontes de dados de terceiros, como o Censo dos EUA, para aumentar seus dados. Ou, se você tiver uma data, talvez inclua o preço de fechamento do S&P 500 para esse dia. Tais estratégias de aumento externo exigem conhecimento detalhado do conjunto de dados específico e conhecimento significativo do domínio, mas geralmente têm recompensas muito maiores do que melhorias puramente algorítmicas.

Portanto, a primeira grande diferença entre a indústria e o Kaggle é que, na indústria, os recursos (no sentido de dados de entrada) são negociáveis.

Uma segunda classe de diferenças é o desempenho. Geralmente, os modelos são implantados na produção de duas maneiras: 1) as previsões do modelo são pré-calculadas para cada linha em uma tabela de banco de dados muito grande; ou 2) um aplicativo ou site passa o modelo por uma única linha de dados e precisa de uma previsão retornada em tempo real. Ambos os casos de uso requerem um bom desempenho. Por esses motivos, muitas vezes você não vê modelos que demoram a prever ou usar uma quantidade enorme de memória, como os vizinhos mais próximos K ou florestas aleatórias extra. Uma regressão logística ou rede neural, por outro lado, pode pontuar um lote de registros com algumas multiplicações de matrizes, e a multiplicação de matrizes pode ser altamente otimizada com as bibliotecas corretas.Mesmo que eu pudesse obter talvez +0,001 AUC se empilhasse em outro modelo não paramétrico, não o faria porque a taxa de transferência e a latência da previsão cairiam demais.

Há uma dimensão de confiabilidade nisso também - empilhar quatro bibliotecas de terceiros diferentes e avançadas , como LightGBM , xgboost , catboost e Tensorflow (em GPUs , é claro) pode obter a redução de 0,01 no MSE que vence as competições do Kaggle, mas são quatro bibliotecas diferentes para instalar, implantar e depurar se algo der errado. É ótimo se você conseguir fazer tudo isso funcionar em seu laptop, mas fazê-lo funcionar em um contêiner do Docker em execução na AWS é uma história completamente diferente. A maioria das empresas não deseja liderar uma pequena equipe de devops apenas para lidar com esses tipos de problemas de implantação.

Dito isto, empilhar em si não é necessariamente um grande negócio. De fato, empilhar alguns modelos diferentes com desempenho igualmente bom, mas com limites de decisão muito diferentes, é uma ótima maneira de obter um pequeno aumento na AUC e um grande aumento na robustez. Apenas não jogue tantas pias de cozinha em seu conjunto heterogêneo que você começa a ter problemas de implantação.

olooney
fonte
Nota menor, acho que seu ponto 2 está faltando no final da frase?
mbrig
20

De acordo com minha experiência, mais dados e mais recursos são mais importantes do que o modelo mais extravagante, mais empilhado e mais ajustado.

Veja as competições de publicidade online que ocorreram. Os modelos vencedores eram tão complexos que acabaram demorando uma semana inteira para treinar (em um conjunto de dados muito pequeno, comparado ao padrão da indústria). Além disso, a previsão em um modelo empilhado é maior que em um modelo linear simples. Sobre o mesmo tópico, lembre-se de que a Netflix nunca usou seu algoritmo de 1 milhão de dólares por causa dos custos de engenharia .

Eu diria que as competições on-line de ciência de dados são uma boa maneira de uma empresa saber "qual é a maior precisão (ou qualquer métrica de desempenho) que possa ser alcançada" usando os dados coletados (em algum momento). Observe que esse é realmente um problema difícil que está sendo resolvido! Porém, no setor, o conhecimento de campo, as restrições de hardware e de negócios geralmente desencorajam o uso de "modelagem sofisticada".

RUser4512
fonte
2
É verdade que também pode ser que o processo de coleta de dados esteja sempre evoluindo. O que significaria que os algoritmos usados ​​atualmente estariam desatualizados (além do custo de engenharia ou do tempo de treinamento, como você apontou). Assim, seriam necessários algoritmos mais simples, rápidos e flexíveis.
Tom
4
Eu ouvi um dos principais pontos deste post resumido como "boa seleção variável será sempre trunfo selecção bom modelo'
aginensky
14

Empilhar aumenta significativamente a complexidade e reduz a interpretabilidade. Os ganhos são geralmente relativamente pequenos para justificá-lo. Portanto, embora o conjunto seja provavelmente amplamente usado (por exemplo, XGBoost), acho que o empilhamento é relativamente raro na indústria.

rinspy
fonte
11
Bom ponto. A interpretação é extremamente importante em meus aplicativos (os gerentes de loja querem entender por que a previsão é o que é); portanto, modelos difíceis de interpretar têm um problema.
S. Kolassa - Restabelece Monica
Obrigado pelas informações pessoais Stephan. Embora eu considerasse que a interpretabilidade sofre ou desaparece à medida que a complexidade do modelo aumenta, não pensei nas restrições de tempo que certamente são mais prementes em uma empresa. A modelagem extravagante provavelmente tem a pior proporção de (precisão obtida) / (tempo gasto).
Tom
8

Na minha experiência, coletar bons dados e recursos é muito mais importante.

Os clientes com quem trabalhamos geralmente têm muitos dados, e nem todos em formato que pode ser facilmente exportado ou fácil de trabalhar. O primeiro lote de dados geralmente não é muito útil; é nossa tarefa trabalhar com o cliente para descobrir quais dados precisaríamos para tornar o modelo mais útil. Este é um processo muito iterativo.

Há muita experimentação em andamento, e precisamos de modelos que sejam:

  1. Rápido para treinar
  2. Rápido de prever (também costuma ser um requisito comercial)
  3. Fácil de interpretar

O ponto 3) é especialmente importante, porque os modelos que são fáceis de interpretar são mais fáceis de se comunicar com o cliente e mais fácil de detectar se fizemos algo errado.

Akavall
fonte
7

Aqui está algo que não aparece muito no Kaggle: o

  • mais variáveis ​​que você tem no seu modelo e
  • quanto mais complexa a relação entre essas variáveis ​​e a saída,

o maior risco que você irá enfrentar durante a vida útil desse modelo. O tempo normalmente é congelado nas competições do Kaggle ou há uma breve janela de tempo futuro em que os valores do conjunto de testes entram. Na indústria, esse modelo pode durar anos. E tudo o que é necessário é que uma variável fique confusa para que todo o seu modelo vá para o inferno, mesmo que tenha sido construído na perfeição. Entendo, ninguém quer assistir a um concurso em que os concorrentes equilibram cuidadosamente a complexidade do modelo e o risco, mas, em um trabalho, seus negócios e qualidade de vida sofrerão se algo der errado com um modelo do qual você é responsável. Mesmo pessoas extremamente inteligentes não são imunes. Veja, por exemplo, a falha de previsão do Google Tendências da Gripe . O mundo mudou, e eles não viram isso acontecer.

Para a pergunta do OP: " Em geral, na sua experiência, qual a importância da modelagem sofisticada, como empilhar x simplesmente coletar mais dados e mais recursos para os dados? " Bem, eu sou oficialmente velha, mas minha resposta é que, a menos que você tenha uma Para uma infraestrutura de modelagem realmente robusta, é melhor ter modelos diretos, com um conjunto mínimo de variáveis, em que o relacionamento de entrada para saída seja relativamente direto. Se uma variável mal melhorar sua métrica de perda, deixe de fora. Lembre-se que é um trabalho. Dê um pontapé fora do trabalho em concursos do Kaggle, onde há o incentivo "vá grande ou vá para casa".

Uma exceção seria se a situação comercial exigisse um certo nível de desempenho do modelo, por exemplo, se sua empresa precisasse igualar ou superar o desempenho de um concorrente para obter alguma vantagem (provavelmente em marketing). Mas quando há uma relação linear entre o desempenho do modelo e o ganho nos negócios, os aumentos na complexidade normalmente não justificam o ganho financeiro (consulte "A Netflix nunca usou seu algoritmo de US $ 1 milhão devido a custos de engenharia " - desculpas a @ RUser4512 por citar o mesmo artigo). Porém, em uma competição do Kaggle, esse ganho adicional pode levar a centenas de classificações à medida que você passa nas soluções próximas.

Ben Ogorek
fonte
3

Uma resposta curta, que é uma citação que eu gosto do livro de Gary Kasparov, Deep Thinking

Um processo inteligente supera o conhecimento superior e a tecnologia superior

Trabalho principalmente com dados financeiros de séries temporais e com o processo de coleta de dados, limpeza, processamento e, em seguida, trabalho com os proprietários do problema para descobrir o que eles realmente querem fazer, para então criar recursos e modelos para tentar resolver o problema e, finalmente, examinar retrospectivamente o processo para melhorar na próxima vez.

Todo esse processo é maior que a soma de suas partes. Costumo obter desempenho de generalização 'aceitável' com uma regressão logística / linear e conversando com especialistas em domínio para gerar recursos, muito mais tempo gasto do que gastando tempo ajustando meu modelo aos dados que tenho.

Ken Syme
fonte