Regressão regularizada

Aprendizado Supervisionado com o scikit-learn

George Boorman

Core Curriculum Manager, DataCamp

Por que regularizar?

  • Lembre-se: a regressão linear minimiza uma função de perda

  • Escolhe um coeficiente, $a$, para cada variável independente, mais $b$

  • Coeficientes grandes podem levar a um sobreajuste

  • Regularização: penalização de coeficientes grandes

Aprendizado Supervisionado com o scikit-learn

Regressão ridge

  • Função de perda = função de perda MMQ + $$ \alpha * \sum_{i=1}^{n} {a_i}^2$$

  • O ridge penaliza coeficientes grandes, positivos ou negativos

  • $\alpha$: parâmetro que precisamos escolher

  • A escolha de $\alpha$ é semelhante à escolha de k no KNN

  • Hiperparâmetro: variável usada para otimizar os parâmetros do modelo

  • $\alpha$ controla a complexidade do modelo

    • $\alpha$ = 0 = MMQ (pode levar ao sobreajuste)

    • $\alpha$ muito alto: pode levar ao subajuste

Aprendizado Supervisionado com o scikit-learn

Regressão ridge no scikit-learn

from sklearn.linear_model import Ridge

scores = [] for alpha in [0.1, 1.0, 10.0, 100.0, 1000.0]:
ridge = Ridge(alpha=alpha)
ridge.fit(X_train, y_train) y_pred = ridge.predict(X_test)
scores.append(ridge.score(X_test, y_test))
print(scores)
[0.2828466623222221, 0.28320633574804777, 0.2853000732200006, 
 0.26423984812668133, 0.19292424694100963]
Aprendizado Supervisionado com o scikit-learn

Regressão lasso

  • Função de perda = função de perda MMQ + $$ \alpha * \sum_{i=1}^{n} |a_i|$$
Aprendizado Supervisionado com o scikit-learn

Regressão lasso no scikit-learn

from sklearn.linear_model import Lasso

scores = [] for alpha in [0.01, 1.0, 10.0, 20.0, 50.0]: lasso = Lasso(alpha=alpha) lasso.fit(X_train, y_train) lasso_pred = lasso.predict(X_test) scores.append(lasso.score(X_test, y_test)) print(scores)
[0.99991649071123, 0.99961700284223, 0.93882227671069, 0.74855318676232, -0.05741034640016]
Aprendizado Supervisionado com o scikit-learn

Regressão lasso para seleção de variáveis independentes

  • O lasso pode selecionar variáveis independentes importantes de um conjunto de dados

  • Reduz a zero os coeficientes de variáveis independentes menos importantes

  • As variáveis independentes não reduzidas a zero são selecionadas pelo lasso

Aprendizado Supervisionado com o scikit-learn

Lasso para seleção de variáveis independentes no scikit-learn

from sklearn.linear_model import Lasso

X = diabetes_df.drop("glucose", axis=1).values y = diabetes_df["glucose"].values names = diabetes_df.drop("glucose", axis=1).columns
lasso = Lasso(alpha=0.1)
lasso_coef = lasso.fit(X, y).coef_
plt.bar(names, lasso_coef) plt.xticks(rotation=45) plt.show()
Aprendizado Supervisionado com o scikit-learn

Lasso para seleção de variáveis independentes no scikit-learn

Gráfico de barras dos coeficientes de cada variável independente, todos em torno de zero, exceto o da diabetes, com valor igual a 25

Aprendizado Supervisionado com o scikit-learn

Vamos praticar!

Aprendizado Supervisionado com o scikit-learn

Preparing Video For Download...