Regularización
Parte de la sección Aprendizaje supervisado del Journey de Machine Learning de Coddy. Lección 34 de 58.
Un modelo lineal sobreajustado se apoya en pesos grandes para ajustarse a cada fila ruidosa. La regresión Ridge impone una penalización por los pesos grandes, y alpha fija el precio.
Aquí hay 20 guitarras usadas y seis características escaladas que predicen el precio:
Es un intercambio desde LinearRegression, cuyos pesos eran [-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_))Esto imprime:
[-14. 18. 16. 10. 5. 8.]Un alfa más grande, pesos más pequeños, menos sobreajuste. Si es demasiado grande, el modelo presenta subajuste.
Desafío
IntermedioUn sitio vacacional predice los precios por noche de las cabañas a partir de 8 características, usando solo 16 cabañas. El programa lee alpha; el código inicial divide y escala los datos.
- Ajusta un
LinearRegressiony unRidgecon esealpha. - Imprime el tamaño total de los pesos de cada modelo: suma sus pesos sin signo y redondea el resultado.
- Imprime el R cuadrado de prueba de cada uno (3 decimales) y el mejor modelo, como se muestra abajo.
Para otra región y 5:
Total weight size: plain 90, ridge 53
Test R squared: plain -0.471, ridge 0.642
Better on new cottages: ridgePruébalo tú mismo
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())
# No cambies las líneas siguientes: 28 casas de vacaciones, 8 características y el precio por noche en 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)
# Escribe tu código a continuación
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Aprendizaje supervisado
1Tu primer modelo
Aprender de ejemplosConjuntos de entrenamiento y pruebaAjustar y predecirEvaluar un modeloRepaso: clasificador de semillas4Regresión logística
Predicciones de sí o noEl umbral de decisiónLos pesos como evidenciaVarias clasesRepaso: filtro de spam7Sobreajuste
Subajuste y sobreajusteCurvas de aprendizajeRegularizaciónConjuntos de validaciónRepaso: Ajustar un árbol2Vecinos más cercanos
Cómo decide k-NNCómo elegir kFronteras de decisiónEscalado para los vecinosRepaso: vecinos del vino5Medición de clasificadores
La matriz de confusiónPrecisión y exhaustividadLa puntuación F1Clases desequilibradasCurvas ROCRepaso: prueba de detección8Validación cruzada
Validación K-FoldComparación justa de modelosBúsqueda en cuadrículaRepaso: reparaciones de monopatines11Proyecto: especies de pingüinos
Conoce a los pingüinosPrepara los datosElige un modeloAjusta el modelo ganadorPublica el modelo3Regresión lineal
Predicción de númerosVarias característicasMedición de erroresGráficos de residuosRepaso: alquiler de bicicletas6Árboles de decisión
Los árboles hacen preguntasLeer un árbolProfundidad del árbolImportancia de las característicasRepaso: decisiones de préstamosPractica por tu cuenta: Compilador de Python online