Entendendo a saída de uma grid search

Ajuste de Hiperparâmetros em Python

Alex Scriven

Data Scientist

Analisando a saída

Vamos analisar as saídas do GridSearchCV.

Três grupos de propriedades do GridSearchCV:

  • Um log de resultados
    • cv_results_
  • Os melhores resultados
    • best_index_, best_params_ e best_score_
  • "Informações extras"
    • scorer_, n_splits_ e refit_time_
Ajuste de Hiperparâmetros em Python

Acessando propriedades do objeto

 

As propriedades são acessadas com notação de ponto.

Por exemplo:

grid_search_object.property

Onde property é a propriedade que você quer obter

Ajuste de Hiperparâmetros em Python

A propriedade .cv_results_

A propriedade cv_results_:

Leia em um DataFrame para imprimir e analisar:

cv_results_df = pd.DataFrame(grid_rf_class.cv_results_)

print(cv_results_df.shape)

(12, 23)

  • As 12 linhas correspondem aos 12 quadrados da nossa grade, ou 12 modelos executados
Ajuste de Hiperparâmetros em Python

As colunas 'time' de .cv_results_

As colunas time indicam o tempo para ajustar (e avaliar) o modelo.

Lembra da validação cruzada 5-fold? Ela roda 5 vezes e armazena a média e o desvio padrão dos tempos em segundos.

colunas de tempo

Ajuste de Hiperparâmetros em Python

As colunas 'param_' de .cv_results_

 

As colunas param_ guardam os parâmetros testados naquela linha, uma coluna por parâmetro

colunas param

Ajuste de Hiperparâmetros em Python

A coluna 'param' de .cv_results_

A coluna params contém um dicionário com todos os parâmetros:

pd.set_option("display.max_colwidth", -1)
print(cv_results_df.loc[:, "params"])

coluna params

Ajuste de Hiperparâmetros em Python

As colunas 'test_score' de .cv_results_

 

As colunas test_score trazem as pontuações no conjunto de teste para cada fold, além de estatísticas resumidas:

test score

Ajuste de Hiperparâmetros em Python

A coluna 'rank_test_score' de .cv_results_

 

A coluna de ranking, ordenando o mean_test_score do melhor ao pior:

rank test score

Ajuste de Hiperparâmetros em Python

Extraindo a melhor linha

 

Podemos selecionar facilmente o melhor quadrado da grade a partir de cv_results_ usando a coluna rank_test_score

best_row = cv_results_df[cv_results_df["rank_test_score"] == 1]
print(best_row)

melhor linha

Ajuste de Hiperparâmetros em Python

As colunas 'train_score' de .cv_results_

As colunas test_score são repetidas para training_scores.

Alguns pontos importantes:

  • return_train_score deve ser True para incluir as colunas de treino.

  • Não há coluna de ranking para as pontuações de treino, pois nos importam os resultados no teste

Ajuste de Hiperparâmetros em Python

O melhor quadrado da grade

 

As informações do melhor quadrado da grade ficam resumidas nestas três propriedades:

  • best_params_, o dicionário de parâmetros que gerou a melhor pontuação.

  • best_score_, a melhor pontuação.

  • best_index_, a linha em cv_results_.rank_test_score que foi a melhor.

Ajuste de Hiperparâmetros em Python

A propriedade best_estimator_

 

A propriedade best_estimator_ é um estimador construído com os melhores parâmetros da grid search.

No nosso caso, é um estimador Random Forest:

type(grid_rf_class.best_estimator_)

sklearn.ensemble.forest.RandomForestClassifier

Você também pode usar esse objeto diretamente como estimador!

Ajuste de Hiperparâmetros em Python

A propriedade best_estimator_

print(grid_rf_class.best_estimator_)

saída do print do melhor estimador

Ajuste de Hiperparâmetros em Python

Informações extras

Algumas informações extras estão disponíveis nas propriedades:

  • scorer_

Qual função de pontuação foi usada no conjunto de validação. (definimos AUC)

  • n_splits_

Quantos splits de validação cruzada. (Definimos 5)

  • refit_time_

Segundos usados para reajustar o melhor modelo em todo o conjunto de dados.

Ajuste de Hiperparâmetros em Python

Vamos praticar!

Ajuste de Hiperparâmetros em Python

Preparing Video For Download...