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

  • auto - Dejó elegir el solucionador automáticamente en función del tipo de datos.

  • svd - Para calcular los coeficientes de cresta, este parámetro utiliza una descomposición de valores singulares de X.

  • cholesky - Este parámetro utiliza el estándar scipy.linalg.solve() función para obtener una solución de forma cerrada.

  • lsqr - Es el más rápido y utiliza la rutina dedicada de mínimos cuadrados regularizados scipy.sparse.linalg.lsqr.

  • sag - Utiliza proceso iterativo y un descenso de gradiente medio estocástico.

  • saga - También utiliza un proceso iterativo y un descenso de gradiente medio estocástico mejorado.

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:

  • int - En este caso, random_state es la semilla utilizada por el generador de números aleatorios.

  • RandomState instance - En este caso, random_state es el generador de números aleatorios.

  • None - En este caso, el generador de números aleatorios es la instancia de RandonState utilizada por np.random.

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