Menu
CoddyTech

Regularização

Parte da seção Aprendizado supervisionado do Journey de Machine Learning da Coddy. Lição 34 de 58.

Um modelo linear com sobreajuste se apoia em pesos grandes para se ajustar a cada linha ruidosa. A regressão Ridge cobra uma penalidade por pesos grandes, e alpha define o preço.

Aqui estão 20 guitarras usadas, seis características escaladas que preveem o preço:

Seis linhas, um peso por característica da guitarra, em função de alpha de 0.01 a 1000. A condição começa em 116, a marca em 104, a idade em menos 83; todas se aproximam de 0 à medida que alpha aumenta

É uma troca em relação a LinearRegression, cujos pesos eram [-83. 116. 104. 27. 17. 15.]:

from sklearn.linear_model import Ridge

ridge = Ridge(alpha=100)
ridge.fit(X_train, y_train)
print(np.round(ridge.coef_))

Isso imprime:

[-14.  18.  16.  10.   5.   8.]

Um alpha maior, pesos menores e menos sobreajuste. Se for grande demais, o modelo apresenta subajuste.

challenge icon

Desafio

Médio

Um site de hospedagem prevê os preços por noite dos chalés com base em 8 características, usando apenas 16 chalés. O programa lê alpha; o código inicial divide e padroniza os dados.

  1. Ajuste um LinearRegression e um Ridge com esse alpha.
  2. Imprima o tamanho total dos pesos de cada modelo: some os pesos sem os sinais e arredonde o resultado.
  3. Imprima o R quadrado de cada conjunto de teste (3 casas decimais) e o melhor modelo, como abaixo.

Para outra região e 5:

Total weight size: plain 90, ridge 53
Test R squared: plain -0.471, ridge 0.642
Better on new cottages: ridge

Experimente você mesmo

import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LinearRegression, Ridge
from sklearn.metrics import r2_score

alpha = float(input())

# Não altere as linhas abaixo: 28 casas de temporada, 8 características e o preço por noite em euros
cottages = pd.read_csv("cottages.csv")
features = ["size_m2", "bedrooms", "lake_m", "age_years", "town_km", "sauna", "road_noise_db", "forest_m"]
X = cottages[features]
y = cottages["price"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.4, random_state=0)
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)

# Escreva seu código abaixo
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Aprendizado supervisionado

Pratique por conta própria: Compilador de Python online