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:
É 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.
Desafio
MédioUm 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.
- Ajuste um
LinearRegressione umRidgecom essealpha. - Imprima o tamanho total dos pesos de cada modelo: some os pesos sem os sinais e arredonde o resultado.
- 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: ridgeExperimente 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
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
1Seu primeiro modelo
Aprendendo com exemplosConjuntos de treino e testeAjustar e preverAvaliar um modeloRecapitulação: classificador de sementes4Regressão logística
Previsões de sim ou nãoO limiar de decisãoPesos como evidênciasVárias classesRevisão: filtro de spam7Sobreajuste
Subajuste e sobreajusteCurvas de aprendizadoRegularizaçãoConjuntos de validaçãoRevisão: ajustando uma árvore2Vizinhos Mais Próximos
Como o k-NN DecideEscolhendo kLimites de DecisãoEscalonamento para VizinhosRevisão: Vizinhos do Vinho5Avaliando Classificadores
A Matriz de ConfusãoPrecisão e RevocaçãoA Pontuação F1Classes DesbalanceadasCurvas ROCRecapitulação: Teste de Triagem8Validação Cruzada
Validação K-FoldComparando Modelos de Forma JustaBusca em GradeRevisão: Consertos de Skate11Projeto: Espécies de Pinguins
Conheça os PinguinsPrepare os DadosEscolha um ModeloAjuste o VencedorColoque o Modelo em Produção3Regressão Linear
Prevendo númerosVárias característicasMedindo errosGráficos de resíduosRevisão: aluguel de bicicletas6Árvores de Decisão
Árvores fazem perguntasLendo uma árvoreProfundidade da árvoreImportância das característicasRevisão: decisões de empréstimoPratique por conta própria: Compilador de Python online