class sklearn.linear_model.SGDRegressor(loss="squared_loss", *, penalty='l2', alpha=0.0001, l1_ratio=0.15, fit_intercept=True, max_iter=1000, tol=0.001, shuffle=True, verbose=0, epsilon=0.1, random_state=None, learning_rate="invscaling", eta0=0.01, power_t=0.25, early_stopping=False, validation_fraction=0.1, n_iter_no_change=5, warm_start=False, average=False) [source]

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

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

El regularizador es una penalización agregada a la función de pérdida que reduce los parámetros del modelo hacia el vector cero utilizando la norma euclidiana al cuadrado L2 o la norma absoluta L1 o una combinación de ambas (Elastic Net). Si la actualización del parámetro 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 matrices densas y numerosas de valores de punto flotante para las características.

Leer más en el Guía del usuario.

Parámetros
lossstr, 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 ‘pérdida_cuadrada’ se refiere al ajuste ordinario por mínimos cuadrados. ‘huber’ modifica ‘squared_loss’ para centrarse menos en corregir los valores atípicos cambiando de pérdida cuadrada a lineal más allá de una distancia de épsilon. ‘epsilon_insensitive’ ignora los errores menos 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 el mismo pero se convierte en pérdida al cuadrado más allá de la tolerancia de épsilon.

Se pueden encontrar más detalles sobre las fórmulas de pérdidas en el Guía del usuario.

penalty{‘l2’, ‘l1’, ‘elasticnet’}, default=’l2’

La penalización (también conocida como término de regularización) que se utilizará. El valor predeterminado es ‘l2’, que es el regularizador estándar para los modelos SVM lineales. ‘l1’ y ‘elasticnet’ pueden traer escasez al modelo (selección de características) que no se puede lograr con ‘l2’.

alphafloat, default=0.0001

Constante que multiplica el plazo 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 está configurado en ‘óptimo’.

l1_ratiofloat, default=0.15

El parámetro de mezcla Elastic Net, con 0 <= l1_ratio <= 1. l1_ratio = 0 corresponde a la penalización L2, l1_ratio = 1 a L1. Solo se usa si penalty es ‘elasticnet’.

fit_interceptbool, default=True

Si la intersección debe estimarse o no. Si es False, se supone 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). Solo afecta el comportamiento en el fit método, y no el partial_fit método.

Nuevo en la versión 0.19.

tolfloat, 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 barajarse o no después de cada época.

verboseint, default=0

El 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’. Para ‘huber’, determina el umbral en el que se vuelve menos importante obtener la predicción exactamente correcta. Para los insensibles a épsilon, cualquier diferencia entre la predicción actual y la etiqueta correcta se ignora si es menor que este umbral.

random_stateint, RandomState instance, default=None

Se usa para mezclar los datos, cuando shuffle se establece en True. Pase un int para una salida reproducible a través de múltiples llamadas a funciones. Ver Glosario.

learning_ratestring, default=’invscaling’

El programa de ritmo de aprendizaje:

  • ‘constante’: eta = eta0
  • ‘óptimo’: eta = 1.0 / (alpha * (t + t0)) donde t0 es elegido por una heurística propuesta por Leon Bottou.
  • ‘invscaling’: eta = eta0 / pow(t, power_t)
  • ‘adaptativo’: eta = eta0, siempre que el entrenamiento siga disminuyendo. Cada vez que n_iter_no_change épocas consecutivas no logran disminuir la pérdida de entrenamiento en tol o no aumentan 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: Opción ‘adaptativa’ agregada

eta0double, default=0.01

La tasa de aprendizaje inicial para los horarios “constante”, “invscaling” o “adaptativo”. 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 debe utilizar la parada anticipada para finalizar el entrenamiento cuando la puntuación de validación no mejora. Si se establece en Verdadero, automáticamente apartará una fracción de los datos de entrenamiento como validación y terminará el entrenamiento cuando la puntuación de validación devuelva el score El método no mejora en al menos tol por n_iter_no_change épocas consecutivas.

Nuevo en la versión 0.20: Se agregó la opción ‘early_stopping’

validation_fractionfloat, default=0.1

La proporción de datos de entrenamiento que se deben reservar como conjunto de validación para la detención anticipada. Debe estar entre 0 y 1. Solo se usa si early_stopping es verdad.

Nuevo en la versión 0.20: Se agregó la opción ‘validation_fraction’

n_iter_no_changeint, default=5

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

Nuevo en la versión 0.20: Se agregó la opción ‘n_iter_no_change’

warm_startbool, default=False

Cuando se establece en True, reutiliza la solución de la llamada anterior para que encaje como inicialización; de lo contrario, simplemente borra la solución anterior. Ver el glosario.

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

averagebool or int, default=False

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

Atributos
coef_ndarray of shape (n_features,)

Pesos asignados a las características.

intercept_ndarray of shape (1,)

El término de intercepción.

average_coef_ndarray of shape (n_features,)

Pesos promediados asignados a las funciones. Solo disponible si average=True.

En desuso desde la versión 0.23: Atributo average_coef_ quedó obsoleto en la versión 0.23 y se eliminará en 1.0 (cambio de nombre de 0.25).

average_intercept_ndarray of shape (1,)

El término de intersección promediado. Solo disponible si average=True.

En desuso desde la versión 0.23: Atributo average_intercept_ quedó obsoleto en la versión 0.23 y se eliminará en 1.0 (cambio de nombre de 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 peso realizadas durante el entrenamiento. Igual que (n_iter_ * n_samples).

Ver también

Ridge, ElasticNet, Lasso, sklearn.svm.SVR

Ejemplos de

>>> 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()

Convierta la matriz de coeficientes a un formato de matriz densa.

fit(X, y[, coef_init, intercept_init, …])

Ajustar modelo lineal con Descenso de gradiente estocástico.

get_params([deep])

Obtenga parámetros para este estimador.

partial_fit(X, y[, sample_weight])

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

predict(X)

Predecir usando el modelo lineal

score(X, y[, sample_weight])

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

set_params(** kwargs)

Establecer y validar los parámetros del estimador.

sparsify()

Convierta la matriz de coeficientes a formato disperso.

densify() [source]

Convierta la matriz de coeficientes a un formato de matriz densa.

Convierte el coef_ miembro (volver) a un numpy.ndarray. Este es el formato predeterminado de coef_ y es necesario para el ajuste, por lo que llamar a este método solo es necesario en modelos que previamente se han esparcido; de lo contrario, es una operación no operativa.

Devoluciones
uno mismo

Estimador ajustado.

fit(X, y, coef_init=None, intercept_init=None, sample_weight=None) [source]

Ajustar modelo lineal con Descenso de gradiente estocástico.

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

Datos de entrenamiento

yndarray of shape (n_samples,)

Valores objetivo

coef_initndarray of shape (n_features,), default=None

Los coeficientes iniciales para iniciar la optimización.

intercept_initndarray of shape (1,), default=None

La intersección inicial para iniciar en caliente la optimización.

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

Pesos aplicados a muestras individuales (1. para no ponderados).

Devoluciones
selfreturns an instance of self.
get_params(deep=True) [source]

Obtenga parámetros para este estimador.

Parámetros
deepbool, default=True

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

Devoluciones
paramsdict

Nombres de parámetros asignados a sus valores.

partial_fit(X, y, sample_weight=None) [source]

Realice una época de descenso de gradiente estocástico en 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 costo después de llamarla una vez. El usuario debe ocuparse de cuestiones como la convergencia de objetivos y la detención anticipada.

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

Subconjunto de datos de entrenamiento

ynumpy array of shape (n_samples,)

Subconjunto de valores objetivo

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

Pesos aplicados a muestras individuales. Si no se proporciona, se asumen pesos uniformes.

Devoluciones
selfreturns an instance of self.
predict(X) [source]

Predecir usando el modelo lineal

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

Valores objetivo previstos por elemento en X.

score(X, y, sample_weight=None) [source]

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

El coeficiente (R ^ 2 ) Se define como ((1 – frac {u} {v}) ), dónde (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 negativa (porque el modelo puede ser arbitrariamente peor). Un modelo constante que siempre predice el valor esperado de y, sin tener en cuenta las funciones de entrada, obtendría un (R ^ 2 ) puntuación de 0,0.

Parámetros
Xarray-like of shape (n_samples, n_features)

Muestras de prueba. Para algunos estimadores, esto puede ser una matriz de kernel precalculada o una lista de objetos genéricos en su lugar con forma (n_samples, n_samples_fitted), dónde n_samples_fitted es el número de muestras utilizadas en el ajuste del estimador.

yarray-like of shape (n_samples,) or (n_samples, n_outputs)

Valores verdaderos para X.

sample_weightarray-like of shape (n_samples,), default=None

Pesos de muestra.

Devoluciones
scorefloat

(R ^ 2 ) de self.predict(X) wrt. y.

Notas

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

set_params(**kwargs) [source]

Establecer y validar los parámetros del estimador.

Parámetros
**kwargsdict

Parámetros del estimador.

Devoluciones
selfobject

Instancia de estimador.

sparsify() [source]

Convierta la matriz de coeficientes a formato disperso.

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

los intercept_ miembro no se convierte.

Devoluciones
uno mismo

Estimador ajustado.

Notas

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

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

Ejemplos usando sklearn.linear_model.SGDRegressor

Latencia de predicción

Latencia de predicción

SGD: Sanciones

SGD: Sanciones