sklearn.linear_model.SGDRegressor

class sklearn.linear_model.SGDRegressor

Modelo lineal ajustado minimizando una pérdida empírica regularizada con SGD

SGD son las siglas de Stochastic Gradient Descent: el gradiente de la pérdida se estima cada muestra a la vez y el modelo se actualiza por el camino con un programa de fuerza decreciente (también conocido como tasa de aprendizaje).

El regularizador es una penalización añadida a la función de pérdida que encoge los parámetros del modelo hacia el vector cero utilizando la norma euclidiana cuadrada L2 o la norma absoluta L1 o una combinación de ambas (red elástica). Si la actualización de los parámetros cruza el valor 0.0 debido al regularizador, la actualización se trunca a 0.0 para permitir el aprendizaje de modelos dispersos y lograr la selección de características en línea.

Esta implementación funciona con datos representados como arreglo de numpy denso de valores de punto flotante para las características.

Más información en el Manual de usuario.

Parámetros
losscadena de caracteres, default=”squared_loss”

La función de pérdida que se utilizará. Los valores posibles son “squared_loss”, “huber”, “epsilon_insensitive”, o “squared_epsilon_insensitive”

La “squared_loss” se refiere al ajuste ordinario por mínimos cuadrados. “huber” modifica “squared_loss” para centrarse menos en la corrección de los valores atípicos, pasando de la pérdida cuadrada a la lineal a partir de una distancia de épsilon. “epsilon_insensible” ignora los errores menores que epsilon y es lineal más allá de eso; esta es la función de pérdida utilizada en SVR. “squared_epsilon_insensitive” es lo mismo pero se convierte en pérdida cuadrada más allá de una tolerancia de épsilon.

Puedes encontrar más detalles sobre las fórmulas de pérdidas en la Manual de usuario.

penalty{“l2”, “l1”, “elasticnet”}, default=”l2”

La penalización (término de regularización) que se utilizará. Por defecto es “l2” que es el regularizador estándar para los modelos SVM lineales. “l1” y “elasticnet” pueden aportar una dispersión al modelo (selección de características) que no se consigue con “l2”.

alphafloat, default=0.0001

Constante que multiplica el término de regularización. Cuanto mayor sea el valor, más fuerte será la regularización. También se utiliza para calcular la tasa de aprendizaje cuando se establece en learning_rate se establece en “optimal”.

l1_ratiofloat, default=0.15

El parámetro de mezcla de la red elástica, con 0 <= l1_ratio <= 1. l1_ratio=0 corresponde a la penalización L2, l1_ratio=1 a la L1. Sólo se utiliza si penalty es “elasticnet”.

fit_interceptbool, default=True

Si el intercepto debe ser estimado o no. Si es False, se asume que los datos ya están centrados.

max_iterint, default=1000

El número máximo de pasadas sobre los datos de entrenamiento (también conocido como épocas o epochs). Sólo afecta al comportamiento del método fit, y no al método partial_fit.

Nuevo en la versión 0.19.

tolflotante, default=1e-3

El criterio de parada. Si no es None, el entrenamiento se detendrá cuando (loss > best_loss - tol) para n_iter_no_change épocas consecutivas.

Nuevo en la versión 0.19.

shufflebool, default=True

Si los datos de entrenamiento deben ser aleatorizados o no después de cada época.

verboseint, default=0

Nivel de verbosidad.

epsilonfloat, default=0.1

Epsilon en las funciones de pérdida insensibles a épsilon; sólo si loss es “huber”, “epsilon_insensitive”, o “squared_epsilon_insensitive”. En el caso de “huber”, determina el umbral a partir del cual es menos importante acertar la predicción. En el caso de insensible a épsilon, cualquier diferencia entre la predicción actual y la etiqueta correcta se ignora si es menor que este umbral.

random_stateentero, instancia de RandomState, default=None

Se utiliza para barajar los datos, cuando shuffle se establece en True. Pase un int para una salida reproducible a través de múltiples llamadas a la función. Consulta Glosario.

learning_ratecadena de caracteres, default=”invscaling”

El programa de la tasa de aprendizaje:

  • “constant”: eta = eta0

  • “optimal”: eta = 1.0 / (alpha * (t + t0)) donde t0 se elige mediante una heurística propuesta por Leon Bottou.

  • “invscaling”: eta = eta0 / pow(t, power_t)

  • “adaptive”: eta = eta0, siempre que el entrenamiento siga disminuyendo. Cada vez que n_iter_no_change consecutivo no consigue disminuir la pérdida asociada al entrenamiento en tol o no consigue aumentar la puntuación de validación en tol si early_stopping es True, la tasa de aprendizaje actual se divide por 5.

    Nuevo en la versión 0.20: Added “adaptive” option

eta0double, default=0.01

La tasa de aprendizaje inicial para las programaciones “constant”, “invscaling” o “adaptative”. El valor predeterminado es 0.01.

power_tdouble, default=0.25

El exponente de la tasa de aprendizaje de escala inversa.

early_stoppingbool, default=False

Si se utiliza la parada temprana para terminar el entrenamiento cuando la puntuación de validación no está mejorando. Si se establece como True, se apartará automáticamente una fracción de los datos de entrenamiento como validación y se terminará el entrenamiento cuando la puntuación de validación devuelta por el método score no mejore en al menos tol durante n_iter_no_change épocas consecutivas.

Nuevo en la versión 0.20: Opción “early_stopping” añadida

validation_fractionfloat, default=0.1

La proporción de los datos de entrenamiento que se establecen como conjunto de validación para la parada anticipada. Debe estar entre 0 y 1. Sólo se utiliza si early_stopping es True.

Nuevo en la versión 0.20: Opción “validation_fraction” añadida

n_iter_no_changeint, default=5

Número de iteraciones sin mejora que hay que esperar antes de la parada anticipada.

Nuevo en la versión 0.20: Opción “n_iter_no_change” añadida

warm_startbool, default=False

Cuando se establece a True, reutiliza la solución de la llamada anterior para ajustar como inicialización, de lo contrario, solamente borrará la solución anterior. Ver Glosario.

Llamar repetidamente a fit o partial_fit cuando warm_start es True puede dar lugar a una solución diferente que cuando se llama a fit una sola vez debido a la forma en que se barajan los datos. Si se utiliza una tasa de aprendizaje dinámico, la tasa de aprendizaje se adapta en función del número de muestras ya vistas. Llamar a fit reinicia este contador, mientras que partial_fit resultará en el aumento del contador existente.

averagebool o int, default=False

Si se establece como True, calcula el promedio de los ponderados SGD en todas las actualizaciones y almacena el resultado en el atributo coef_. Si se establece como un int mayor que 1, el promedio comenzará una vez que el número total de muestras vistas alcance el average. Así, average=10 se empieza a promediar después de ver 10 muestras.

Atributos
coef_ndarray de forma (n_features,)

Ponderaciones asignadas a las características.

intercept_ndarray de forma (1,)

Término de intercepción.

average_coef_ndarray de forma (n_features,)

Pesos promediados asignados a las características. Sólo está disponible si average=True.

Obsoleto desde la versión 0.23: El atributo average_coef_ quedó obsoleto en la versión 0.23 y se eliminará en la 1.0 (cambio de nombre de la 0.25).

average_intercept_ndarray de forma (1,)

El término de intercepción promediado. Sólo está disponible si average=True.

Obsoleto desde la versión 0.23: El atributo average_intercept_ quedó obsoleto en la versión 0.23 y se eliminará en la 1.0 (cambio de nombre de la 0.25).

n_iter_int

El número real de iteraciones antes de alcanzar el criterio de parada.

t_int

Número de actualizaciones de ponderación realizadas durante el entrenamiento. Igual que (n_iter_ * n_samples).

Ejemplos

>>> import numpy as np
>>> from sklearn.linear_model import SGDRegressor
>>> from sklearn.pipeline import make_pipeline
>>> from sklearn.preprocessing import StandardScaler
>>> n_samples, n_features = 10, 5
>>> rng = np.random.RandomState(0)
>>> y = rng.randn(n_samples)
>>> X = rng.randn(n_samples, n_features)
>>> # Always scale the input. The most convenient way is to use a pipeline.
>>> reg = make_pipeline(StandardScaler(),
...                     SGDRegressor(max_iter=1000, tol=1e-3))
>>> reg.fit(X, y)
Pipeline(steps=[('standardscaler', StandardScaler()),
                ('sgdregressor', SGDRegressor())])

Métodos

densify

Convierte la matriz de coeficientes en formato de arreglo denso.

fit

Ajustar el modelo lineal con el Descenso Gradiente Estocástico.

get_params

Obtiene los parámetros para este estimador.

partial_fit

Realiza una época de descenso de gradiente estocástico en las muestras dadas.

predict

Predice utilizando el modelo lineal

score

Devuelve el coeficiente de determinación \(R^2\) de la predicción.

set_params

Establece y valida los parámetros del estimador.

sparsify

Convierte la matriz de coeficientes en formato disperso.

densify()

Convierte la matriz de coeficientes en formato de arreglo denso.

Convierte el miembro coef_ (de vuelta) en un numpy.ndarray. Este es el formato predeterminado de coef_ y se requiere para el ajuste, por lo que invocar este método sólo es necesario en los modelos que han sido previamente dispersados (sparsified); de lo contrario, es un no-op.

Devuelve
self

Estimador ajustado.

fit()

Ajustar el modelo lineal con el Descenso Gradiente Estocástico.

Parámetros
X{array-like, sparse matrix}, forma (n_samples, n_features)

Datos de entrenamiento

yndarray de forma (n_samples,)

Valores objetivo

coef_initndarray de forma (n_features,), default=None

Los coeficientes iniciales para iniciar la optimización en caliente.

intercept_initndarray de forma (1,), default=None

La intercepción inicial la optimización en caliente.

sample_weightarray-like, forma (n_samples,), default=None

Ponderaciones aplicadas a las muestras individuales (1. para las no ponderadas).

Devuelve
selfdevuelve una instancia de sí misma.
get_params()

Obtiene los parámetros para este estimador.

Parámetros
deepbool, default=True

Si es True, devolverá los parámetros para este estimador y los sub objetos contenidos que son estimadores.

Devuelve
paramsdict

Nombres de parámetros mapeados a sus valores.

partial_fit()

Realiza una época de descenso de gradiente estocástico en las muestras dadas.

Internamente, este método utiliza max_iter = 1. Por lo tanto, no se garantiza que se alcance un mínimo de la función de coste después de llamarlo una vez. Cuestiones como la convergencia del objetivo y la parada anticipada deben ser manejadas por el usuario.

Parámetros
X{array-like, sparse matrix}, forma (n_samples, n_features)

Subconjunto de los datos de entrenamiento

yarreglo numpy de forma (n_samples,)

Subconjunto de los valores objetivos

sample_weightarray-like, forma (n_samples,), default=None

Ponderaciones aplicadas a las muestras individuales. Si no se proporciona, se suponen ponderados uniformes.

Devuelve
selfdevuelve una instancia de sí misma.
predict()

Predice utilizando el modelo lineal

Parámetros
X{array-like, sparse matrix}, forma (n_samples, n_features)
Devuelve
ndarray de forma (n_samples,)

Valores objetivo predichos por elemento en X.

score()

Devuelve el coeficiente de determinación \(R^2\) de la predicción.

El coeficiente \(R^2\) se define como \((1 - \frac{u}{v})\), donde \(u\) es la suma residual de cuadrados ((y_true - y_pred) ** 2).sum() y \(v\) es la suma total de cuadrados ((y_true - y_true.mean()) ** 2).sum(). La mejor puntuación posible es 1.0 y puede ser negativo (porque el modelo puede ser arbitrariamente peor). Un modelo constante que siempre predice el valor esperado de y, sin tener en cuenta las características de entrada, obtendría un valor \(R^2\) de 0.0.

Parámetros
Xarray-like de forma (n_samples, n_features)

Muestras de prueba. Para algunos estimadores puede ser una matriz de núcleo precalculada o una lista de objetos genéricos con forma (n_samples, n_samples_fitted), donde n_samples_fitted es el número de muestras utilizadas en el ajuste para el estimador.

yarray-like de forma (n_samples,) o (n_samples, n_outputs)

Valores verdaderos para X.

sample_weightarray-like de forma (n_samples,), default=None

Ponderaciones de muestra.

Devuelve
scorefloat

\(R^2\) de self.predict(X) con respecto a y.

Notas

El valor \(R^2\) utilizado al llamar a score en un regresor utiliza multioutput='uniform_average' desde la versión 0.23 para mantener la coherencia con el valor predeterminado de r2_score. Esto influye en el método score de todos los regresores de salida múltiple (excepto para MultiOutputRegressor).

set_params()

Establece y valida los parámetros del estimador.

Parámetros
**kwargsdict

Parámetros del estimador.

Devuelve
selfobject

Instancia de estimador.

sparsify()

Convierte la matriz de coeficientes en formato disperso.

Convierte el miembro coef_ en una matriz scipy.sparse, que para los modelos L1-regularizados puede ser mucho más eficiente en cuanto a memoria y almacenamiento que la representación numpy.ndarray habitual.

El miembro intercept_ no se convierte.

Devuelve
self

Estimador ajustado.

Notas

Para los modelos no dispersos, es decir, cuando no hay muchos ceros en coef_, esto puede en realidad aumentar el uso de la memoria, así que utilice este método con cuidado. Una regla general es que el número de elementos cero, que puede ser calculado con (coef_ == 0).sum(), debe ser más del 50% para que esto proporcione beneficios significativos.

Después de invocar a este método, el ajuste posterior con el método partial_fit (si lo hay) no funcionará hasta que llames a densify.

Ejemplos usando sklearn.linear_model.SGDRegressor