Overfitting: Nenhuma bala de prata?

21

O meu entendimento é que, mesmo quando seguindo procedimentos transversais adequados de seleção de validação e modelo, overfitting vai acontecer se um pesquisas para um modelo com força suficiente , a menos que restrições impõe a complexidade do modelo, período. Além disso, muitas vezes as pessoas tentam aprender multas na complexidade do modelo a partir dos dados, o que prejudica a proteção que eles podem fornecer.

Minha pergunta é: quanta verdade existe na afirmação acima?

Eu sempre ouço os profissionais de ML dizerem: " Na minha empresa / laboratório, sempre tentamos todos os modelos disponíveis (por exemplo, de bibliotecas como Caret ou Scikit-Learn ) para ver qual deles funciona melhor ". Costumo argumentar que essa abordagem pode facilmente superestimar, mesmo que levem a sério a validação cruzada e mantenham os conjuntos de espera da maneira que desejarem. Além disso, quanto mais eles pesquisam, maior a probabilidade de se super-ajustar. Em outras palavras, a super otimização é um problema real e não há heurísticas que possam ajudá-lo a lutar sistematicamente contra ela. Estou errado em pensar assim?

Amelio Vazquez-Reina
fonte
Você está perguntando sobre ML especificamente ou modelos multivariados em geral?
rumtscho
@rumtscho tudo no ML.
Amelio Vazquez-Reina
1
Obrigado @CagdasOzgenc: "quanto maior o espaço de pesquisa (os modelos considerados), mais pobre o resultado" . Não tenho certeza a que nível de "espaço de pesquisa" da abstração você está se referindo aqui, mas por "se esforçar o suficiente", é claro, quero dizer pesquisar através de mais e mais modelos e, assim, aumentar a complexidade / espaço de pesquisa do "metamodelo" (se desejar) que estamos tentando ajustar.
Amelio Vazquez-Reina

Respostas:

8

Não é uma resposta completa, mas uma coisa que as pessoas ignoram nesta discussão é o que significa Validação Cruzada (por exemplo), por que você a usa e o que ela cobre?

O problema que vejo ao procurar muito é que o currículo que as pessoas estão fazendo geralmente está dentro de um único modelo. Fácil de fazer, definindo um folds=argumento do procedimento de ajuste do modelo. Mas quando você acessa vários modelos e até vários procedimentos para criar vários modelos, adiciona outra camada ou duas que você não incluiu no CV.

Portanto, eles devem estar usando CV aninhado. E eles também devem usar o "Target Shuffling" (teste de reamostragem / permutação) envolvido em todo o processo para ver o desempenho do procedimento se você romper o relacionamento entre variáveis ​​dependentes e independentes - ou seja, quão melhor você está do que aleatório considerando todo o seu processo?

Wayne
fonte
1
+1. Fazer a seleção de modelos com camadas únicas (ou muito poucas) de CV que executam uma pesquisa em grade (seleção de modelos) pode definitivamente levar a um super ajuste (para qualquer pessoa interessada, recomendo, por exemplo, isso e as fontes nele). Eu tinha lido sobre "Target Shuffling" (para outros leitores, recomendo esta exposição ), mas nunca a usei; Gostaria de saber se também pode ser abusado (por exemplo, fazendo vários testes levando a falsos positivos eventualmente e, assim, novamente procurando "com força suficiente" (?)).
Amelio Vazquez-Reina
7

Nos meus 4 anos de experiência, descobri que experimentar todos os modelos disponíveis no acento circunflexo (ou scikit-learn) não leva necessariamente a sobreajuste. Descobri que, se você tem um conjunto de dados suficientemente grande (mais de 10.000 linhas) e um equilíbrio de classes mais ou menos uniforme (ou seja, nenhum desequilíbrio de classe, como risco de crédito ou problemas de marketing), o sobreajuste tende a ser mínimo. Vale a pena notar que minha pesquisa na grade em parâmetros de ajuste tende a não ser mais do que 30 permutações por modelo. No extremo extremo, se você usasse 100 ou 1.000 permutações por modelo, provavelmente seria superestimado.

A maneira como você formulou sua pergunta facilita bastante a resposta: ao extremo, sim, é provável que haja excesso de ajuste, se não for certo. Não há bala de prata e duvido que alguém sugira o contrário. No entanto, ainda existe um espectro razoavelmente amplo em que o grau de super adaptação é mínimo o suficiente para ser aceitável. Ter uma quantidade saudável de dados invisíveis em seu conjunto de validação definitivamente ajuda. Ter vários conjuntos de validação invisíveis de validação é ainda melhor. Tenho a sorte de trabalhar em um campo em que tenho grandes quantidades de novos dados diariamente.

Se estou em uma posição em que estou preso a um conjunto de dados estático com menos de 2.000 a 3.000 observações (por exemplo: dados médicos difíceis de encontrar), geralmente utilizo apenas modelos lineares porque frequentemente vi superajustes com gradiente impulsionar e dar suporte a máquinas vetoriais em conjuntos de dados suficientemente pequenos. Por outro lado, conversei com um dos principais Kaggler (top 5%) que disse que ele constrói dezenas de milhares de modelos para cada competição e depois os agrupa, usando vários milhares de modelos em seu conjunto final. Ele disse que este foi o principal motivo de seu sucesso nas tabelas finais.

Ryan Zotti
fonte
1
Sim. Eu trabalhei com dados que tinham observações na casa dos milhões. Independentemente da validação que eu tentei (kfold, bootstrapping e até simples holdout), houve pouca variação nos modelos. À medida que seus dados aumentam, menos cuidados você precisa tomar para validar.
Ricardo Cruz
Em outras palavras, nenhum modelo tem graus de liberdade suficientes para "memorizar" milhões de observações.
Ricardo Cruz
5

Muito depende da escala. Eu gostaria de poder contar com mais de 2.000 a 3.000 casos como o @RyanZotti normalmente tem; Eu raramente tenho 1/10 desse número. Essa é uma grande diferença de perspectiva entre o pessoal do aprendizado de máquina do "big data" e aqueles que trabalham em áreas como biomedicina, o que pode explicar algumas das diferentes perspectivas que você encontrará neste site.

Vou apresentar uma explicação heurística da minha opinião sobre esse problema. O problema básico do sobreajuste, conforme descrito na página da Wikipedia , é a relação entre o número de casos e o número de parâmetros que você está avaliando. Portanto, comece com a idéia aproximada de que, se você tem modelos M , está escolhendo entre ep parâmetros por modelo, está avaliando algo da ordem dos parâmetros Mp no total.

Se houver risco de sobreajuste, existem duas maneiras gerais de recuar para um modelo mais generalizável: reduzir o número de parâmetros ou penalizá-los de alguma forma.

Com conjuntos de dados adequadamente grandes, você pode nunca se aproximar do sobreajuste. Se você tiver 20.000 casos e 20 modelos diferentes com 100 parâmetros por modelo, poderá não ter problemas, mesmo sem penalização, pois ainda possui 10 casos por parâmetro efetivo. Não tente essa estratégia de modelagem com apenas 200 casos.

A média do modelo pode ser vista como uma forma de penalização. No exemplo do Kaggler citado por @RyanZotti, o número de casos é presumivelmente enorme e cada um dos "vários milhares" de modelos no conjunto final contribui individualmente apenas com uma pequena fração do modelo final. Qualquer ajuste excessivo específico para um modelo de contribuição específico não terá grande influência no resultado final, e o número extremamente grande de casos em uma competição Kaggler reduz ainda mais o risco de ajuste excessivo.

Assim, como em tantas questões aqui, a única resposta razoável é: "Depende". Nesse caso, depende da relação entre o número de casos e o número efetivo de parâmetros examinados, além de quanta penalização está sendo aplicada.

EdM
fonte
2

Eu acho que essa é uma pergunta muito boa. Eu sempre quero observar a curva de forma "U" em experimentos de validação cruzada com dados reais. No entanto, minha experiência com dados do mundo real (~ 5 anos em transações com cartão de crédito e dados educacionais) não me diz que o ajuste pode facilmente acontecer em grande quantidade (bilhões de linhas) de dados do mundo real .

Costumo observar que você pode tentar da melhor forma possível o conjunto de treinamento, mas não pode fazer muito (por exemplo, reduzir a perda para 0), porque o conjunto de treinamento é realmente grande e contém muitas informações e ruídos.

Ao mesmo tempo, você pode tentar o modelo mais complicado (sem nenhuma regularização) para testar dados, e parece bom e até melhor do que alguns com regularização.

Finalmente, acho que minhas declarações podem ser verdadeiras apenas sob a condição de você ter bilhões de pontos de dados em treinamento. Intuitivamente, os dados são muito complexos do que você modela, para que você não se ajuste demais. Para bilhões de linhas de dados, mesmo que você esteja usando um modelo com milhares de parâmetros, tudo bem. Ao mesmo tempo, você não pode pagar a computação para construir um modelo com um milhão de parâmetros livres.

Na minha opinião, é também por isso que a rede neural e o aprendizado profundo se tornaram populares atualmente. Comparando a bilhões de imagens na Internet, qualquer modelo que você possa pagar por treinamento não é suficiente para se ajustar demais.

Haitao Du
fonte
1

Eu concordo com @ ryan-zotti que pesquisar bastante não leva necessariamente a sobreajuste - ou pelo menos não a uma quantia para que possamos chamar de sobreajuste. Deixe-me tentar afirmar meu ponto de vista sobre isso:

Box disse uma vez:

Lembre-se de que todos os modelos estão errados; a questão prática é quão errados eles devem estar para não serem úteis.

(Ser perfeito exigiria todos os dados, o que, por sua vez, eliminaria a necessidade de um modelo).

1

Porque: no final, sempre teremos erro de modelo / super / sub-ajuste - é a capacidade de detectar / medir esse erro dentro do nosso foco de interesse para fazer escolhas razoáveis ​​que importam.


1

geekoverdose
fonte