1
resposta

Dúvida em relação ao nested cross validation

bom dia, eu não entendi como funciona e por que se usa o cross_val_score.

a) Por que é obrigatório usá-lo depois de realizar o cross validate para avaliar o melhor modelo?

b) O cross validate funciona dividindo de alguma forma o conjunto em k grupos e em cada interação usar um dos grupos como teste. Mas como funciona o nested cross validate?

1 resposta

Olá, Yago! Tudo bem com você?

Em relação ao primeiro ponto apresentado, não é necessário a utilização do cross_val_score após realizar o cross_validade. O cross_val_score é uma forma mais simples de utilizar a validação cruzada (cross-validation - CV), que vai retornar um array de pontuações para cada execução em sua validação cruzada, definida através do parâmetro cv do método. As principais diferenças entre esses dois métodos é que enquanto o cross_validade permite você especificar várias métricas para avaliação do modelo, o cross_val_score permite especificar uma somente uma métrica (conforme nos afirma a documentação no parâmetro scoring) e o cross_validade retorna um dicionário com test_score, train_score, fit_time, score_time e estimator enquanto o cross_val_score retorna apenas um array com o score de acordo com a métrica escolhida, conforme mencionado anteriormente. Então a utilização de um método ou outro depende da sua necessidade, mas não é obrigatória a sua utilização em sequência.

Em relação ao segundo ponto, o que você falou em relação ao cross validate está correto, funciona da forma como você realmente mencionou. Porém o modelo sem a utilização do nested cross validade usa o mesmo conjunto de dados para treinar e testar repetidas vezes, alterando somente qual parcela é utilizada para treino e qual para teste, mas o algoritmo já "viu" aqueles dados antes a medida que vai sendo realizado o CV, e isso pode "vazar" informações para o modelo e causar overfit, que é um sobreajuste os dados (se adaptar demais aos dados de treino e não generalizar bem para amostras nunca vistas). Com o nested cross validade separamos o conjunto não apenas em treino e teste, mas em treino-validação-teste, seria algo como "um cross validade dentro de um cross validade", ou seja um cross validade aninhado (nested cross validade). Com isso garantimos que uma parcela dos dados serão os dados nunca vistos (conjunto de teste), e as outras parcelas serão utilizadas para treinar e validar diversas vezes (conjuntos treino-validação), como o cross validade que você explicou bem. O objetivo é evitar o overfit e ter uma métrica mais real de como seu modelo estará se trabalhando no mundo real.

Como recomendação de conteúdo complementar, vou deixar alguns links que me ajudaram a compreender melhor esse assunto, espero que ajude.

Os conteúdos apresentados estão em inglês, então caso você não possua tanta familiaridade com o idioma, recomendo a instalação de alguma extensão para auxiliar na tradução, como o google tradutor.

Espero ter ajudado, mas se ainda persistir alguma dúvida estou sempre à disposição.

:)

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.Bons Estudos!