sklearn.linear_model
.HuberRegressor¶
- class sklearn.linear_model.HuberRegressor¶
Modelo de regresión lineal que es robusto a valores atípicos(outliers).
El regresor Huber (Huber Regressor) optimiza la pérdida cuadrárica para las muestras en las que
|(y - X'w) / sigma| < epsilon
y la pérdida absoluta para las muestras en las que|(y - X'w) / sigma| > epsilon
, donde w y sigma son parámetros a optimizar. El parámetro sigma asegura que si y se escala hacia arriba o hacia abajo en un determinado factor, no es necesario reescalar epsilon para conseguir la misma robustez. Nótese que esto no tiene en cuenta el hecho de que las diferentes características de X pueden ser de diferentes escalas.Esto asegura que la función de pérdida no está fuertemente influenciada por los valores atípicos, sin ignorar completamente su efecto.
Más información en el Manual de usuario
Nuevo en la versión 0.18.
- Parámetros
- epsilonfloat, mayor que 1.0, default=1.35
El parámetro epsilon controla el número de muestras que deben clasificarse como valores atípicos. Cuanto más pequeño sea el epsilon, más robusto será ante los valores atípicos.
- max_iterint, default=100
Número máximo de iteraciones que
scipy.optimize.minimize(method="L-BFGS-B")
debe ejecutar.- alphafloat, default=0.0001
Parámetro de regularización.
- warm_startbool, default=False
Esto es útil si hay que reutilizar los atributos almacenados de un modelo utilizado previamente. Si se establece en False, los coeficientes se reescribirán en cada llamada a fit. Ver el Glosario.
- fit_interceptbool, default=True
Si se ajusta o no el intercepto. Se puede establecer en False si los datos ya están centrados alrededor del origen.
- tolfloat, default=1e-05
La iteración se detendrá cuando
max{|proj g_i | i = 1, ..., n}
<=tol
donde pg_i es el i-ésimo componente del gradiente proyectado.
- Atributos
- coef_arreglo, forma (n_features,)
Características obtenidas mediante la optimización de la pérdida de Huber.
- intercept_float
Sesgo.
- scale_float
El valor por el cual
|y - X'w - c|
se reduce.- n_iter_int
Número de iteraciones que
scipy.optimize.minimize(method="L-BFGS-B")
debe ejecutar.Distinto en la versión 0.20: En SciPy <= 1.0.0 el número de iteraciones de lbfgs puede exceder
max_iter
. Ahoran_iter_
informará como máximo demax_iter
.- outliers_arreglo, forma (n_samples,)
Una máscara booleana que se establece como True cuando las muestras se identifican como valores atípicos.
Referencias
- 1
Peter J. Huber, Elvezio M. Ronchetti, Robust Statistics Concomitant scale estimates, pg 172
- 2
Art B. Owen (2006), A robust hybrid of lasso and ridge regression. https://statweb.stanford.edu/~owen/reports/hhu.pdf
Ejemplos
>>> import numpy as np >>> from sklearn.linear_model import HuberRegressor, LinearRegression >>> from sklearn.datasets import make_regression >>> rng = np.random.RandomState(0) >>> X, y, coef = make_regression( ... n_samples=200, n_features=2, noise=4.0, coef=True, random_state=0) >>> X[:4] = rng.uniform(10, 20, (4, 2)) >>> y[:4] = rng.uniform(10, 20, 4) >>> huber = HuberRegressor().fit(X, y) >>> huber.score(X, y) -7.284... >>> huber.predict(X[:1,]) array([806.7200...]) >>> linear = LinearRegression().fit(X, y) >>> print("True coefficients:", coef) True coefficients: [20.4923... 34.1698...] >>> print("Huber coefficients:", huber.coef_) Huber coefficients: [17.7906... 31.0106...] >>> print("Linear Regression coefficients:", linear.coef_) Linear Regression coefficients: [-1.9221... 7.0226...]
Métodos
Ajusta el modelo de acuerdo a los datos de entrenamiento dados.
Obtiene los parámetros para este estimador.
Predice utilizando el modelo lineal.
Devuelve el coeficiente de determinación \(R^2\) de la predicción.
Establece los parámetros de este estimador.
- fit()¶
Ajusta el modelo de acuerdo a los datos de entrenamiento dados.
- Parámetros
- Xarray-like, forma (n_samples, n_features)
Vector de entrenamiento, donde n_samples es el número de muestras y n_features es el número de características.
- yarray-like, forma (n_samples,)
Vector objetivo relativo a X.
- sample_weightarray-like, forma (n_samples,)
Ponderación dada a cada muestra.
- Devuelve
- selfobject
- 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 subobjetos contenidos que son estimadores.
- Devuelve
- paramsdict
Nombres de parámetros mapeados a sus valores.
- predict()¶
Predice utilizando el modelo lineal.
- Parámetros
- Xarray-like o matriz dispersa, forma (n_samples, n_features)
Muestras.
- Devuelve
- Carreglo, forma (n_samples,)
Devuelve los valores predichos.
- 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 de cuadrados de los residuos
((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 dey
, sin tener en cuenta las características de entrada, obtendría una puntuación \(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 en su lugar 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 la muestra.
- Devuelve
- scorefloat
\(R^2\) de
self.predict(X)
con respecto ay
.
Notas
La puntuación \(R^2\) utilizada al llamar a
score
en un regresor utilizamultioutput='uniform_average'
desde la versión 0.23 para mantener la consistencia 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 los parámetros de este estimador.
El método funciona tanto con estimadores simples como en objetos anidados (como
Pipeline
). Estos últimos tienen parámetros de la forma<component>__<parameter>
para que sea posible actualizar cada componente de un objeto anidado.- Parámetros
- **paramsdict
Parámetros del estimador.
- Devuelve
- selfinstancia del estimador
Instancia del estimador.