Python中的受限线性回归

2024-06-06 14:28:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个classic linear形式的回归问题:

y = X b

其中y是响应向量X是输入变量的矩阵,而b是我正在搜索的拟合参数的向量。

Python提供b = numpy.linalg.lstsq( X , y )来解决此表单的问题。

然而,当我使用这个时,我倾向于为b的组成部分得到非常大或非常小的值。

我想执行同样的拟合,但是将b的值限制在0到255之间。

看起来scipy.optimize.fmin_slsqp()是一个选项,但我发现对于我感兴趣的问题的大小来说,它的速度非常慢(X类似于3375 by 1500,希望甚至更大)。

  1. 有没有其他的Python选项来执行受约束的最少 正方形适合吗?
  2. 或者,是否有用于执行Lasso Regression或岭回归或其他回归方法的python例程 哪一个惩罚较大的b系数值?

Tags: numpy表单参数选项矩阵scipy向量形式
3条回答

scipy-optimize-leastsq-with-bound-constraints 在SO上给出leatsq_界,即scipy leastsq +绑定约束,如0<;=x&u i<;=255。
(Scipy leatsq包装MINPACK,广泛使用的 Levenberg–Marquardt algorithm a、 k.a.阻尼最小二乘法。
实现边界的方法有很多种;至少我认为边界是最简单的。)

你提到你会发现套索回归或脊回归是可以接受的。在scikit-learn包中提供了这些和许多其他约束线性模型。查看section on generalized linear models

通常约束系数涉及某种正则化参数(C或alpha)——一些模型(以CV结尾的模型)可以使用交叉验证来自动设置这些参数。您还可以进一步约束模型,使其仅使用正系数——例如,套索模型上有一个这样的选项。

相关问题 更多 >