ML | Regresor de cresta usando sklearn

Un regresor Ridge es básicamente una versión regularizada de un regresor lineal. es decir, a la función de costo original del regresor lineal le agregamos un término regularizado que obliga al algoritmo de aprendizaje a ajustarse a los datos y ayuda a mantener los pesos lo más bajos posible. El término regularizado tiene el parámetro ‘alfa’ que controla la regularización del modelo, es decir, ayuda a reducir la varianza de las estimaciones. 
Función de Costo para Ridge Regressor. 
 

\begin{equation*} J(\Theta)=\frac{1}{m}(X \Theta-Y)^{2}+\alpha \frac{1}{2}(\Theta)^{2} \end{equation*}

Aquí, 
el primer término es la función de costo de nuestra regresión lineal básica y el segundo término es nuestro nuevo término de pesos regularizados que usa la norma L2 para ajustar los datos. Si el ‘alfa’ es cero, el modelo es el mismo que la regresión lineal y el valor ‘alfa’ más grande especifica una regularización más fuerte. 
Nota: Antes de usar el regresor de Ridge, es necesario escalar las entradas, porque este modelo es sensible al escalado de las entradas. Por lo tanto, realizar el escalado a través de StandardScalar de sklearn será beneficioso. 
Código: código de Python para implementar Ridge Regressor. 
 

Python3

# importing libraries
from sklearn.linear_model import Ridge
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_boston
from sklearn.preprocessing import StandardScaler
  
# loading boston dataset
boston = load_boston()
X = boston.data[:, :13]
y = boston.target
  
print ("Boston dataset keys : \n", boston.keys())
  
print ("\nBoston data : \n", boston.data)
  
# scaling the inputs
scaler = StandardScaler()
scaled_X = scaler.fit_transform(X)
  
# Train Test split will be used for both models
X_train, X_test, y_train, y_test = train_test_split(scaled_X, y,
                                                    test_size = 0.3)
  
# training model with 0.5 alpha value
model = Ridge(alpha = 0.5, normalize = False, tol = 0.001, \
              solver ='auto', random_state = 42)
model.fit(X_train, y_train)
  
# predicting the y_test
y_pred = model.predict(X_test)
  
# finding score for our model
score = model.score(X_test, y_test)
print("\n\nModel score : ", score)

Producción : 
 

Boston dataset keys : 
 dict_keys(['feature_names', 'DESCR', 'data', 'target'])

Boston data : 
 [[6.3200e-03 1.8000e+01 2.3100e+00 ... 1.5300e+01 3.9690e+02 4.9800e+00]
 [2.7310e-02 0.0000e+00 7.0700e+00 ... 1.7800e+01 3.9690e+02 9.1400e+00]
 [2.7290e-02 0.0000e+00 7.0700e+00 ... 1.7800e+01 3.9283e+02 4.0300e+00]
 ...
 [6.0760e-02 0.0000e+00 1.1930e+01 ... 2.1000e+01 3.9690e+02 5.6400e+00]
 [1.0959e-01 0.0000e+00 1.1930e+01 ... 2.1000e+01 3.9345e+02 6.4800e+00]
 [4.7410e-02 0.0000e+00 1.1930e+01 ... 2.1000e+01 3.9690e+02 7.8800e+00]]


Model score :  0.6819292026260749

Una versión más nueva de RidgeCV viene con validación cruzada incorporada para un alfa, por lo que definitivamente es mejor. Solo pase la array de algunos valores de rango alfa y automáticamente elegirá el valor óptimo para ‘alfa’.
Nota: ‘tol’ es el parámetro que mide la caída de pérdida y asegura que el modelo se detenga en esa posición de valor proporcionada o se detenga en (valor mínimo global).
 

Publicación traducida automáticamente

Artículo escrito por ankushkuwar05 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *