-
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 elpartial_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 enTrue
. 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
- ‘constante’:
-
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 menostol
porn_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, mientraspartial_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 alcanceaverage
. Entoncesaverage=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 decoef_
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)
y (v ) es la suma total de cuadrados
** 2).sum()((y_true -
. 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_true.mean()) ** 2).sum()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ónden_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 usamultioutput="uniform_average"
desde la versión 0.23 para mantener la coherencia con el valor predeterminado der2_score
. Esto influye en lascore
método de todos los regresores de salida múltiple (excepto paraMultiOutputRegressor
).
-
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
SGD: Sanciones