Olá, colegas e instrutores!
Estou estudando sobre otimização de hiperparâmetros usando RandomizedSearchCV e tive uma dúvida importante sobre a prática de divisão dos dados antes do treinamento.
Em cursos anteriores, sempre foi enfatizado que, ao aplicar validação cruzada, devemos usar apenas os dados de treino (X_treino e y_treino) para evitar vazamento de informações. Isso porque o conjunto de teste deve permanecer completamente isolado até a avaliação final.
No entanto, na atividade atual, percebi que a função fit() do RandomizedSearchCV recebe o dataset completo (X e y), e a própria ferramenta realiza a divisão internamente para a validação cruzada. Ainda assim, a alternativa que afirma que "a função fit() deve receber apenas os dados de treino" foi marcada como incorreta, com a justificativa de que o RandomizedSearchCV cuida da divisão automaticamente.
Minha dúvida é:
É realmente correto enviar os dados completos (X e y) diretamente ao fit() do RandomizedSearchCV, mesmo que tenhamos um conjunto de teste separado?
Ou, apesar disso, ainda é uma boa prática separar previamente os dados em treino e teste, e passar apenas o treino para o RandomizedSearchCV, reservando o teste apenas para avaliação final?
Por exemplo:
# Opção 1: Usar dados completos
search = RandomizedSearchCV(modelo, param_distributions, cv=5)
search.fit(X, y) # X e y completos
# Opção 2: Separar antes
X_treino, X_teste, y_treino, y_teste = train_test_split(X, y, test_size=0.2)
search.fit(X_treino, y_treino) # Apenas treino
A primeira opção parece mais simples, mas existe risco de vazamento se o conjunto de teste estiver incluído nos dados usados para busca de hiperparâmetros?
Já vi explicações dizendo que o RandomizedSearchCV já faz a divisão interna e que não há problema, mas também leio que a separação prévia em treino/teste é essencial para garantir generalização.
Gostaria de entender qual é a prática recomendada nesse contexto, especialmente quando estamos trabalhando com modelos como XGBoost, onde a busca de hiperparâmetros pode ser computacionalmente intensiva.
Obrigado pela ajuda!