Uso de validação cruzada aninhada

14

A página do Scikit Learn na seleção de modelos menciona o uso de validação cruzada aninhada:

>>> clf = GridSearchCV(estimator=svc, param_grid=dict(gamma=gammas),
  ...                    n_jobs=-1)  
>>> cross_validation.cross_val_score(clf, X_digits, y_digits)

Dois loops de validação cruzada são executados em paralelo: um pelo estimador GridSearchCV para definir gama e outro pelo cross_val_score para medir o desempenho da previsão do estimador. As pontuações resultantes são estimativas imparciais da pontuação de previsão em novos dados.

Pelo que entendi, clf.fitutilizarei a validação cruzada nativamente para determinar a melhor gama. Nesse caso, por que precisaríamos usar o cv aninhado como indicado acima? A nota menciona que a cv aninhada produz "estimativas imparciais" da pontuação da previsão. Não é esse também o caso clf.fit?

Além disso, não consegui obter as melhores estimativas do clf com o cross_validation.cross_val_score(clf, X_digits, y_digits)procedimento. Poderia aconselhar como isso pode ser feito?

xbsd
fonte

Respostas:

18

C

GC Cawley e NLC Talbot, excesso de ajuste na seleção de modelos e viés de seleção subsequente na avaliação de desempenho, Journal of Machine Learning Research, 2010. Research, vol. 11, pp. 2079-2107, julho de 2010. ( http://jmlr.org/papers/volume11/cawley10a/cawley10a.pdf )

As razões para o viés com exemplos ilustrativos e avaliação experimental podem ser encontradas no artigo, mas essencialmente o ponto é que, se o critério de avaliação de desempenho for usado de alguma maneira para fazer escolhas sobre o modelo, essas escolhas serão baseadas em (i) melhorias genuínas no desempenho da generalização e (ii) as peculiaridades estatísticas da amostra específica de dados em que o critério de avaliação de desempenho é avaliado. Em outras palavras, o viés surge porque é possível (muito fácil) ajustar excessivamente o erro de validação cruzada ao ajustar os hiperparâmetros.

Dikran Marsupial
fonte
5

Com um conjunto de testes retido, clf.fitproduz uma estimativa imparcial, enquanto a validação cruzada aninhada cross_val_scoreproduz várias estimativas imparciais. A vantagem da validação cruzada aninhada é uma melhor avaliação do desempenho real usando dados que o algoritmo ainda não viu. Melhor avaliação porque você obtém, por exemplo, três resultados de testes com CV aninhado em vez de apenas um.

A resposta para sua segunda pergunta sobre as melhores estimativas é que atualmente (v0.14) não é possível obter os parâmetros dos modelos ajustados usando cv aninhado cross_val_score. Veja minha resposta aqui com um exemplo.

manobrar
fonte