Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Seleção dos melhores hiperparâmetros e acurácia

Olá boa tarde, tudo bem?

Fiquei com uma dúvida sobre a seleção dos melhores hiperparâmetros. Segue o código abaixo:

from sklearn.model_selection import GridSearchCV

params = { 'learning_rate': [0.1, 0.2, 0.3], 'max_depth': [0, 2, 4, 6, 10], 'colsample_bytree': [0.1, 0.5, 1], 'n_estimators': [10, 25, 50] }

modelo_xgb = xgb.XGBClassifier()

grid_search_cv = GridSearchCV(estimator=modelo_xgb, param_grid=params, cv=4, scoring='accuracy', verbose=1)

grid_search_cv.fit(X, y)

print(f'Melhores parâmetros: {grid_search_cv.best_params_}') print(f'Acurácia: {grid_search_cv.best_score_}')

Saída: Fitting 4 folds for each of 135 candidates, totalling 540 fits Melhores parâmetros: {'colsample_bytree': 0.5, 'learning_rate': 0.1, 'max_depth': 0, 'n_estimators': 10} Acurácia: 0.8446005267778753

Usando o GridSearchCV eu obtive parâmetros diferentes do da professora, e ao ajustar depois com esses hiperpâmetros que obtive o resultado foi uma acurácia menor, de 0.80, mas ai eu copiei o código da aula e usei depois os mesmos hiperparâmetros que a professora, e deu uma acurácia maior de 0.85. Além disso com os hiperparâmetros que eu obtive pelo GridSearchCV, posteriormente em todas as outras métricas de avaliação eu obtive resultados inferiores aos da professora, como a curva ROC, relatório de métricas e matriz de confusão.

Minha dúvida é: Se com os mesmos hiperparâmetos que a professora obteve com o GridSearchCV o resultado foi até melhor, como eu posso ter certeza que os que eu obtive são os corretos para resolver os problemas em futuros projetos?

1 resposta
solução!

Olá, Breno! Como vai?

É normal que você tenha obtido resultados diferentes da professora, pois o Grid Search depende de vários fatores, como o conjunto de dados, a divisão em folds e a ordem em que as combinações de hiperparâmetros são testadas.

Não existe uma garantia absoluta de que os hiperparâmetros que você encontrou são os "corretos" para todos os projetos futuros. Cada conjunto de dados é único e pode ter características que influenciam o desempenho do modelo.

Contudo, você pode ter mais confiança nos seus resultados se:

  • Repetir o Grid Search com diferentes sementes aleatórias: Isso ajuda a verificar se os resultados são consistentes e não são influenciados por uma única divisão aleatória dos dados.
  • Comparar os resultados com outras técnicas de otimização: Experimente o Random Search, por exemplo, para ver se ele encontra hiperparâmetros diferentes e com desempenho similar.
  • Analisar a importância das features: Use a técnica de "feature importance" do XGBoost para entender quais features são mais relevantes para o modelo. Isso pode te ajudar a ajustar o espaço de busca do Grid Search para focar em hiperparâmetros que influenciam as features mais importantes.
  • Testar o modelo em um conjunto de dados de teste independente: Depois de encontrar os melhores hiperparâmetros, avalie o modelo em um conjunto de dados que não foi usado para treinamento ou validação. Isso te dará uma ideia mais precisa do desempenho do modelo em dados novos.

Espero ter ajudado!

Abraço ✨

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