Validação cruzada e ajuste de parâmetros

17

Alguém pode me dizer o que exatamente uma análise de validação cruzada fornece como resultado? É apenas a precisão média ou fornece algum modelo com parâmetros ajustados?

Porque, ouvi em algum lugar que a validação cruzada é usada para ajuste de parâmetros.

Sana Sudheer
fonte

Respostas:

26

A validação cruzada fornece uma medida da precisão fora da amostra, calculando a média de várias partições aleatórias dos dados em amostras de treinamento e teste. É frequentemente usado para ajuste de parâmetros, executando a validação cruzada para vários (ou muitos) valores possíveis de um parâmetro e escolhendo o valor do parâmetro que fornece o menor erro médio de validação cruzada.

Portanto, o processo em si não fornece estimativas de modelo ou parâmetro, mas você pode usá-lo para ajudar a escolher entre alternativas.

Jonathan Christensen
fonte
12

Para adicionar à resposta de Jonathan.

No entanto, se você usar a validação cruzada para ajuste de parâmetros, as amostras externas de fato se tornarão parte do seu modelo. Portanto, você precisa de outra amostra independente para medir corretamente o desempenho do modelo final.

Empregada para medir o desempenho do modelo, a validação cruzada pode medir mais do que apenas a precisão média:
Uma segunda coisa que você pode medir com a validação cruzada é a estabilidade do modelo em relação à alteração dos dados de treinamento: a validação cruzada cria muitos modelos "substitutos" treinados com conjuntos de treinamento ligeiramente diferentes. Se os modelos são estáveis, todos esses modelos substitutos são equivalentes; se o treinamento é instável, os modelos substitutos variam muito. Você pode quantificar isso "varia muito", por exemplo, como variação de previsões de diferentes modelos substitutos para a mesma amostra (em validação cruzada iterada / repetida) ou, por exemplo, como variação dos parâmetros dos modelos substitutos.

cbeleites suporta Monica
fonte
3

Para adicionar às respostas anteriores, começaremos do começo:

Existem poucas maneiras de adaptar os modelos aos dados de treinamento, alguns são óbvios, outros nem tanto. Primeiro, e o mais importante é a adaptação excessiva dos parâmetros de treinamento (pesos) aos dados (parâmetros de ajuste de curva em regressão logística, pesos de rede em rede neural etc.). Então você modelaria o ruído nos dados - se você superestimar, não captura apenas a função geradora subjacente, mas também a aleatoriedade devido ao tamanho da amostra e o fato de que a amostra não é uma representação perfeita da população. Esse ajuste excessivo pode ser atenuado, até certo ponto, penalizando certos atributos (em geral, complexidade) do modelo. Isso pode ser feito interrompendo o treinamento, uma vez que o desempenho na amostra de trem não está mais melhorando significativamente, removendo alguns neurônios de uma rede neural (chamada de abandono),https://ieeexplore.ieee.org/document/614177/ ) etc.). No entanto, essas estratégias de regularização são elas próprias parametrizadas (quando você para ?, quantos neurônios remover? Etc.). Além disso, a maioria dos modelos de aprendizado de máquina possui vários hiperparâmetros que precisam ser definidos antes do início do treinamento. E esses hiperparâmetros são ajustados na fase de ajuste dos parâmetros.

Isso nos leva a um segundo e mais sutil tipo de superajuste: superajuste de parâmetros. A validação cruzada pode ser usada para encontrar os "melhores" hiperparâmetros, treinando repetidamente seu modelo a partir do zero em dobras k-1 da amostra e testando na última dobra.

Então, como é feito exatamente? Dependendo da estratégia de pesquisa (fornecida por tenshi), você define hiperparâmetros do modelo e treina seu modelo k vezes, sempre usando dobras de teste diferentes. Você "lembra" o desempenho médio do modelo em todas as dobras de teste e repete todo o procedimento para outro conjunto de hiperparâmetros. Em seguida, você escolhe o conjunto de hiperparâmetros que corresponde ao melhor desempenho durante a validação cruzada. Como você pode ver, o custo de computação desse procedimento depende muito do número de conjuntos de hiperparâmetros que precisam ser considerados. É por isso que algumas estratégias para escolher esse conjunto foram desenvolvidas (aqui vou generalizar o que o tenshi disse):

  1. Pesquisa em grade: para cada hiperparâmetro, você enumera um número finito de valores possíveis. Em seguida, o procedimento é exaustivamente realizado para todas as combinações de hiperparâmetros enumerados. Obviamente, se você tiver hiperparâmetros contínuos, não poderá experimentá-los todos.
  2. Pesquisa aleatória em grade: semelhante à pesquisa normal em grade, mas desta vez você não experimenta todas as combinações exaustivamente, mas sim mostra um número fixo de vezes para todos os valores possíveis. Observe que aqui é possível não apenas enumerar valores possíveis para um hiperparâmetro, mas também é possível fornecer uma distribuição para amostragem.
  3. BayesianSearch - a combinação de valores de hiperparâmetros é escolhida para maximizar a melhoria esperada da pontuação. Para mais: http://papers.nips.cc/paper/4522-practical-bayesian-optimization-of-machine-learning-algorithms.pdf . E uma biblioteca que lida apenas com isso: https://github.com/hyperopt/hyperopt . Como não é tão fácil combinar o sklearn com o que o tenshi recomendou, use-o apenas se você não estiver trabalhando com o sklearn.
  4. Outras maneiras de pesquisa guiada no espaço de hiperparâmetros. Pela minha experiência, eles raramente são usados, então não os abordarei aqui.

No entanto, este não é o fim da história, pois os hiperparâmetros também podem (e irão) superestimar os dados. Na maioria dos casos, você pode simplesmente conviver com ele, mas se quiser maximizar o poder de generalização do seu modelo, convém tentar regularizar também os hiperparâmetros. Primeiro, você pode avaliar um pouco melhor o desempenho dos dados fora da amostra usando a pesquisa de grade aninhada (detalhes: http://scikit-learn.org/stable/auto_examples/model_selection/plot_nested_cross_validation_iris.html , discussão: Validação cruzada aninhada para seleção de modelo) ou use apenas um conjunto de validação que não é usado para ajuste de hiperparâmetros. Quanto à regularização no espaço de hiperparâmetros, é uma pergunta mais ou menos aberta. Algumas idéias incluem escolher não o melhor conjunto de valores de hiperparâmetros, mas algo mais próximo do meio; o raciocínio é o seguinte: os melhores valores de hiperparâmetros provavelmente superestimam os dados apenas porque, quando o desempenho é melhor que os outros dados do trem, os parâmetros ruins são ruins, mas os do meio podem obter uma generalização melhor do que os melhores . Andrew Ng escreveu um artigo sobre isso. Outra opção é limitar o espaço de pesquisa (você está regularizando introduzindo forte viés aqui - valores fora do espaço de pesquisa nunca serão selecionados obviamente).

Observação lateral: usar a precisão como uma métrica de desempenho é, na maioria dos casos, uma péssima idéia, observe as pontuações f1 e f_beta - essas métricas na maioria dos casos refletem melhor o que você está realmente tentando otimizar em problemas de classificação binária.

Para resumir: a validação cruzada por si só é usada para avaliar o desempenho do modelo em dados fora da amostra, mas também pode ser usada para ajustar os hiperparâmetros em conjunto com uma das estratégias de pesquisa no espaço dos hiperparâmetros. Encontrar bons hiperparâmetros permite evitar ou pelo menos reduzir o excesso de ajustes, mas lembre-se de que os hiper parâmetros também podem superestimar os dados.

Wojtek
fonte
2

Se você é do fundo do scikit-learn, esta resposta pode ser útil.

A validação cruzada k-fold é usada para dividir os dados em kpartições, o estimador é treinado em k-1partições e testado na kthpartição. Assim, escolhendo qual partição deve ser a kthpartição, existem kpossibilidades. Portanto, você obtém kresultados de todas as kpossibilidades do seu estimador.

esses são métodos computacionalmente caros, mas se você tentar diferentes estimadores, poderá tentar estes três para fazer o ajuste do hiperparâmetro juntamente com o CV:

Eu. GridSearchCV - uma lista exaustiva de todos os P e C possíveis para os hiperparâmetros para todos os estimadores. No final, fornece os melhores hiperparâmetros usando a média dessa média do estimador em particular.

ii. RandomizedSearchCV - Não executa todos os P e C dos hiperparâmetros, mas em uma abordagem aleatória, fornece o estimador preciso mais próximo possível, economizando mais em computação.

iii. BayesSearchCV - Não faz parte, scikit-learnmas faz a otimização bayesiana para fazer uma pesquisa aleatória e ajustar os resultados.

tl: dr : CV é usado apenas para evitar alto viés e alta variação para seu estimador, devido aos dados que você está passando. Espero que tenha sido útil.

tenshi
fonte