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):
- 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.
- 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.
- 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.
- 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.