Ajuste de hiperparâmetros em Python

Ajuste de Hiperparâmetros em Python

Alex Scriven

Data Scientist

Introdução

 

Por que fazer este curso?

  • Novos algoritmos complexos com muitos hiperparâmetros
  • Ajustar pode levar muito tempo
  • Aprofunda o entendimento além das configurações padrão

Você pode se surpreender com o que há por baixo do capô!

Ajuste de Hiperparâmetros em Python

O conjunto de dados

 

O conjunto de dados trata de inadimplência em cartão de crédito.

Contém variáveis da história financeira de consumidores em Taiwan. São 30.000 usuários e 24 atributos.

Nosso alvo é se houve inadimplência no empréstimo

Já foi pré-processado e, às vezes, usaremos amostras menores para demonstrar um conceito

Mais informações sobre o conjunto de dados estão aqui:

https://archive.ics.uci.edu/ml/datasets/default+of+credit+card+clients

Ajuste de Hiperparâmetros em Python

Visão geral de parâmetros

 

O que é um parâmetro?

  • Componentes do modelo aprendidos durante o treino
  • Você não os define manualmente (na verdade, nem pode!)
  • O algoritmo descobre isso para você
Ajuste de Hiperparâmetros em Python

Parâmetros na Regressão Logística

Um modelo simples de regressão logística:

log_reg_clf = LogisticRegression() 
log_reg_clf.fit(X_train, y_train)

print(log_reg_clf.coef_)
array([[-2.88651273e-06, -8.23168511e-03,  7.50857018e-04,
         3.94375060e-04,  3.79423562e-04,  4.34612046e-04,
         4.37561467e-04,  4.12107102e-04, -6.41089138e-06,
        -4.39364494e-06,  cont... ]])
Ajuste de Hiperparâmetros em Python

Parâmetros na Regressão Logística

Organize os coeficientes:

# Get the original variable names
original_variables = list(X_train.columns)

# Zip together the names and coefficients zipped_together = list(zip(original_variables, log_reg_clf.coef_[0])) coefs = [list(x) for x in zipped_together]
# Put into a DataFrame with column labels coefs = pd.DataFrame(coefs, columns=["Variable", "Coefficient"])
Ajuste de Hiperparâmetros em Python

Parâmetros na Regressão Logística

 

Agora ordene e imprima os três maiores coeficientes

coefs.sort_values(by=["Coefficient"], axis=0, inplace=True, ascending=False)
print(coefs.head(3))

tabela de coeficientes

Ajuste de Hiperparâmetros em Python

Onde encontrar parâmetros

 

Para encontrar parâmetros, precisamos de:

  1. Saber um pouco sobre o algoritmo
  2. Consultar a documentação do Scikit-Learn

Os parâmetros estarão na seção "Attributes", e não em "parameters"!

Ajuste de Hiperparâmetros em Python

Parâmetros em Random Forest

E os algoritmos baseados em árvore?

Random forest não tem coeficientes, mas decisões nos nós (qual atributo e valor de corte).

# A simple random forest estimator
rf_clf = RandomForestClassifier(max_depth=2)
rf_clf.fit(X_train, y_train)

# Pull out one tree from the forest chosen_tree = rf_clf.estimators_[7]

Para simplificar, mostraremos o produto final (uma imagem) da árvore de decisão. Fique à vontade para explorar os pacotes usados (graphviz & pydotplus).

Ajuste de Hiperparâmetros em Python

Fluxo de decisões de uma única árvore de Random Forest

Ajuste de Hiperparâmetros em Python

Extraindo decisões dos nós

Podemos extrair detalhes do nó à esquerda, o segundo de cima:

# Get the column it split on
split_column = chosen_tree.tree_.feature[1]
split_column_name = X_train.columns[split_column]

# Get the level it split on split_value = chosen_tree.tree_.threshold[1]
print("This node split on feature {}, at a value of {}" .format(split_column_name, split_value))

"Este nó dividiu na feature PAY_0, no valor 1.5"

Ajuste de Hiperparâmetros em Python

Vamos praticar!

Ajuste de Hiperparâmetros em Python

Preparing Video For Download...