Scikit Learn - Regresión de crestas
La regresión de crestas o regularización de Tikhonov es la técnica de regularización que realiza la regularización L2. Modifica la función de pérdida sumando la penalización (cantidad de contracción) equivalente al cuadrado de la magnitud de los coeficientes.
$$ \ Displaystyle \ sum \ limits_ {j = 1} ^ m \ left (Y_ {i} -W_ {0} - \ Displaystyle \ sum \ limits_ {i = 1} ^ nW_ {i} X_ {ji} \ right ) ^ {2} + \ alpha \ displaystyle \ sum \ limits_ {i = 1} ^ nW_i ^ 2 = pérdida _ {-} función + \ alpha \ displaystyle \ sum \ limits_ {i = 1} ^ nW_i ^ 2 $$sklearn.linear_model.Ridge es el módulo utilizado para resolver un modelo de regresión donde la función de pérdida es la función lineal de mínimos cuadrados y la regularización es L2.
Parámetros
La siguiente tabla consta de los parámetros utilizados por Ridge módulo -
No Señor | Descripción de parámetros |
---|---|
1 | alpha - {float, array-like}, shape (n_targets) Alpha es el parámetro de ajuste que decide cuánto queremos penalizar al modelo. |
2 | fit_intercept - booleano Este parámetro especifica que se debe agregar una constante (sesgo o intersección) a la función de decisión. No se utilizará ninguna intersección en el cálculo, si se establece en falso. |
3 | tol - flotante, opcional, predeterminado = 1e-4 Representa la precisión de la solución. |
4 | normalize - Booleano, opcional, predeterminado = Falso Si este parámetro se establece en Verdadero, el regresor X se normalizará antes de la regresión. La normalización se realizará restando la media y dividiéndola por la norma L2. Sifit_intercept = False, este parámetro será ignorado. |
5 | copy_X - Booleano, opcional, predeterminado = Verdadero De forma predeterminada, es verdadero, lo que significa que se copiará X. Pero si se establece en falso, X puede sobrescribirse. |
6 | max_iter - int, opcional Como sugiere el nombre, representa el número máximo de iteraciones tomadas para los solucionadores de gradientes conjugados. |
7 | solver - str, {'auto', 'svd', 'cholesky', 'lsqr', 'sparse_cg', 'sag', 'saga'} ' Este parámetro representa qué solucionador usar en las rutinas computacionales. A continuación se muestran las propiedades de las opciones de este parámetro
|
8 | random_state - int, instancia de RandomState o None, opcional, predeterminado = ninguno Este parámetro representa la semilla del número pseudoaleatorio generado que se usa mientras se barajan los datos. Las siguientes son las opciones:
|
Atributos
La siguiente tabla consta de los atributos utilizados por Ridge módulo -
No Señor | Atributos y descripción |
---|---|
1 | coef_ - matriz, forma (n_features,) o (n_target, n_features) Este atributo proporciona los vectores de peso. |
2 | Intercept_- flotar | matriz, forma = (n_destinos) Representa el término independiente en función de decisión. |
3 | n_iter_ - matriz o Ninguno, forma (n_targets) Disponible solo para el solucionador 'sag' y 'lsqr', devuelve el número real de iteraciones para cada objetivo. |
Ejemplo de implementación
La siguiente secuencia de comandos de Python proporciona un ejemplo simple de implementación de Ridge Regression. Estamos usando 15 muestras y 10 funciones. El valor de alfa es 0,5 en nuestro caso. Hay dos métodos a saberfit() y score() utilizado para ajustar este modelo y calcular la puntuación respectivamente.
from sklearn.linear_model import Ridge
import numpy as np
n_samples, n_features = 15, 10
rng = np.random.RandomState(0)
y = rng.randn(n_samples)
X = rng.randn(n_samples, n_features)
rdg = Ridge(alpha = 0.5)
rdg.fit(X, y)
rdg.score(X,y)
Salida
0.76294987
El resultado muestra que el modelo de regresión de crestas anterior dio una puntuación de alrededor del 76 por ciento. Para mayor precisión, podemos aumentar el número de muestras y características.
Ejemplo
Para el ejemplo anterior, podemos obtener el vector de peso con la ayuda del siguiente script de Python:
rdg.coef_
Salida
array([ 0.32720254, -0.34503436, -0.2913278 , 0.2693125 , -0.22832508,
-0.8635094 , -0.17079403, -0.36288055, -0.17241081, -0.43136046])
Ejemplo
Del mismo modo, podemos obtener el valor de la intercepción con la ayuda de la siguiente secuencia de comandos de Python:
rdg.intercept_
Salida
0.527486