¿Sabes qué es la regularización en machine learning y en qué consiste? En este post te explicaremos algunos aspectos generales que es necesario tener en cuenta a la hora de ejecutar procesos de regularización.
Regularización en machine learning
Cuando diseñamos un modelo para configurar, queremos que sea capaz de generalizar los datos, es decir, que sea capaz de predecir correctamente datos que no ha visto anteriormente. Cuando nuestro modelo no es capaz de alcanzar este performance, suele ser porque el modelo sufre de overfitting o underfitting. Hay muchas variantes por las que un modelo sufre dichos problemas y hay distintas soluciones para afrontarlo.
Una de ellas son los métodos de regularización en machine learning, que permiten reducir el error de generalización de los datos, pero no el error del entrenamiento. Dentro de los métodos de regularización hay muchos tipos, pero nosotros vamos a ver uno de ellos, que está estrechamente ligado a las regresiones lineales.
Regularización en los mínimos cuadrados
Cuando entrenamos un modelo queremos restringir sus parámetros de forma que aprenda a generalizar mejor de los datos; para ello, simplemente añadimos un término de penalización:
Básicamente, hemos cogido la función de los mínimos cuadrados y le hemos añadido un término de penalización:
- λ > 0: parámetro de regularización.
- g (w) > 0: función de penalización.
Hay una función muy típica usada para g (w) con las que tratarás en el campo del machine learning: ridge regression.
Ridge Regression – L2
Ridge regression, también conocida como regularización L2, hace referencia a cuando añadimos una penalización equivalente al cuadrado de los coeficientes w:
Por tanto:
Así que ridge regression pone una penalización en los coeficientes w. El término λ regulariza los coeficientes de manera que, si los coeficientes toman grandes valores, la función de optimización se penaliza.
Si λ → 0, se asemeja a la regresión lineal.
Si → ∞: 0v, algo pequeño sumado a ∞ es prácticamente ∞.
Influencia del parámetro a en ridge regression
#Regularización en machine learning
from sklearn.preprocessing import PolynomialFeatures
import matplotlib.pyplot as plt
from sklearn.linear_model import Linear Regression
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import Ridge
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams ['figure.figsize'] = (20.0, 10.0)
Generamos datos aleatorios usando numpy:
#Regularización en machine learning
np.random.seed (42)
#Número de datos
m = 20
X = 3 * np.random.rand (m, 1)
#Creamos y añadimos un poco de aleatoriedad
y = 1 + 0.5 * X + np.random.rand (m, 1) / 1.5
#Puntos para la predicción
X_test = np.linspace (0, 3, 100).reshape (100, 1)
Iteramos sobre todos los valores de alpha que queremos analizar:
#Regularización en machine learning
def plot_model (model_class, polynomial, alphas):
#Iteramos sobre los valores de alpha y actualizamos el modelo
for alpha, style in zip (alphas, ("b-", "g--", "r:", "y.-", "g.")):
model = model_class (alpha, random_state = 42) if alpha > 0 else Linespace...
#Si es polinomial:
if polynomial:
model = Pipeline (|
("poly_features", PolynomialFeatures (degree = 10),
("std_scaler", StandardScaler ()),
("regul_reg", none)))
model.fit (X, y)
#Predicción en los puntos de X_test
y_test_regul = model.predict (X_test)
lw = 2 if alpha > 0 else 1
plt.plot (X_test, y_test_regul, style, linewidth = lw, label = " %alpha")
#Graficamos los datos que hemos usado para entrenar
plt.plot (X, y, "b.", linewidth = 3)
plt.legend (loc = "upper left", fontsize = 5)
plt.xlabel ("x_15", fontsize = 10)
plt.axis ((0, 3, 0, 4))
plt.figure ()
plt.subplot (121)
#Regularización en machine learning
alphas = (0, 10**, -5, 1, 10, 100)
#Entrenamos y calculamos LinearRegression
plot_model (Ridge, polynomial = False, alphas = alphas)
#Añadimos el nombre al eje y
plt.ylabel ("$y$", rotation = 0, fontsize = 18)
plt.supplot (122)
#Entrenamos y calculamos polinomial
plt.model (Ridge, polynomial = True, alphas = alphas)
plt.show ()
Ahora que tienes una noción general sobre la regularización en machine learning, puedes seguir aprendiendo sobre Big Data para convertirte en un experto en el sector. Podrás acceder a una de las disciplinas más demandadas y mejor pagadas en todo el mercado laboral en pocos meses gracias al Big Data, Inteligencia Artificial & Machine Learning Full Stack Bootcamp. Esta es una formación íntegra y de alta intensidad en la que adquirirás los conocimientos teóricos y prácticos imprescindibles para obtener el trabajo de tus sueños. ¡Entra ya para solicitar información y anímate a cambiar tu futuro!