regresion programar paso multiple lineal ejemplo codigo python numpy scipy mathematical-optimization linear-regression

programar - regresion lineal python pandas



RegresiĆ³n lineal restringida en Python (3)

Tengo un problema clásico de regresión lineal de la forma:

y = X b

donde y es un vector de respuesta X es una matriz de variables de entrada y b es el vector de parámetros de ajuste que estoy buscando.

Python proporciona b = numpy.linalg.lstsq( X , y ) para resolver problemas de esta forma.

Sin embargo, cuando uso esto, tiendo a obtener valores extremadamente grandes o extremadamente pequeños para los componentes de b .

Me gustaría realizar el mismo ajuste, pero restringir los valores de b entre 0 y 255.

Parece que scipy.optimize.fmin_slsqp() es una opción, pero me pareció extremadamente lento para el tamaño del problema que me interesa ( X es algo así como 3375 by 1500 y, con suerte, incluso más grande).

  1. ¿Hay otras opciones de Python para realizar ajustes de mínimos cuadrados restringidos?
  2. ¿O existen rutinas de Python para realizar la Regresión de Lazo o Regresión de Ridge o algún otro método de regresión que penalice los valores de coeficiente b grandes?


Usted menciona que encontrará que la Regresión de Lasso o la Regresión de Cresta son aceptables. Estos y muchos otros modelos lineales restringidos están disponibles en el paquete scikit-learn . Consulta la sección de modelos lineales generalizados .

Por lo general, la restricción de los coeficientes implica algún tipo de parámetro de regularización (C o alfa), algunos de los modelos (los que terminan en CV) pueden usar la validación cruzada para establecer estos parámetros automáticamente. También puede restringir aún más los modelos para usar solo coeficientes positivos, por ejemplo, hay una opción para esto en el modelo Lasso.