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étodopartial_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 enTrue
. 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 menostol
duranten_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 quepartial_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 elaverage
. 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)
.
Ver también
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
Convierte la matriz de coeficientes en formato de arreglo denso.
Ajustar el modelo lineal con el Descenso Gradiente Estocástico.
Obtiene los parámetros para este estimador.
Realiza una época de descenso de gradiente estocástico en las muestras dadas.
Predice utilizando el modelo lineal
Devuelve el coeficiente de determinación \(R^2\) de la predicción.
Establece y valida los parámetros del estimador.
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 decoef_
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 dey
, 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)
, donden_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 ay
.
Notas
El valor \(R^2\) utilizado al llamar a
score
en un regresor utilizamultioutput='uniform_average'
desde la versión 0.23 para mantener la coherencia con el valor predeterminado der2_score
. Esto influye en el métodoscore
de todos los regresores de salida múltiple (excepto paraMultiOutputRegressor
).
- 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.