将“成本项”添加到线性回归中,从而使解值最小化

我正在使用 Python 的 optimize.lsq_linear method 运行线性回归,其边界设置在 0% 到 100% 的功耗之间。

x = optimize.lsq_linear(A,b,bounds=[0,100],method='trf')

A 矩阵是稀疏的,并且在很多情况下,某些 X 值对结果的影响非常非常小。有时回归将这些“远离”的 X 值设置为 0,有时它们设置得非常高(接近 100%,大概是因为它们帮助了一些很小的数量),但通常它们设置为 10。我不知道为什么 10 .

在大学的线性代数课上(大约 30 年前!)我依稀记得有人告诉我向回归添加“成本函数”以告诉回归最小化 X 的值,而它们“没有多大帮助” ”。较低的 X 是较低的功耗,这在这里是一件好事。我认为这有时是作为求解器中的一个参数来完成的,但也可以通过向矩阵 A 和向量 b 添加一行来分配“使用更多 x 的成本”来完成。

我记得的唯一可以描述这一点的词是“成本”和“重量”。然而,我所有关于成本的搜索都会产生一些关于解决方案的成本函数的东西,比如由 optimize.lsq_linear 返回的浮点数。我所有关于权重的搜索都会产生一些关于对不同数据集(A 矩阵中的行)进行不同加权的结果,因为某些行可能比其他行更可靠。这些都不是我所追求的。

  • 我所追求的技术名称是什么?
  • 有人可以提供参考或简要回顾一下如何为我的 x 值添加一些“成本”(因此,当增加值的影响可以忽略不计时,x 值会被最小化)?
  • 为什么 optimize.lsq_linear 将“远离”x 值设置为 10?

更新:下面的注释 and reference 指向 Ridge 回归、Lasso 回归和 Elastic-Net 回归。所有都是线性回归方法,在 X 系数的大小上增加了惩罚:Ridge 最小化 X 的平方和,Lasso 最小化 X 的值,Elastic-Net 是 Ridge 和 Lasso 的组合。阅读参考资料后,看起来 Lasso 在这里可能最有趣,因为它处理稀疏矩阵并且更喜欢将更多系数设置为零的解决方案。

我也想知道对系数的惩罚进行加权。我的一些 X 值比其他值使用更多的幂,因此在回归中包含此信息会很好,因此如果使用高效 X 和低效 X 的好处相同,那么回归可以优先选择高效 X。我依稀记得通过向 A 和 b 添加一行来执行此操作的方法,因此没有惩罚的 Ax=b 可能是:

| A11 A12 | * | x1 | = | b1 b2 |
| A21 A22 |   | x2 |   

为每个 x 添加偶数惩罚会添加如下内容:

| A11 A12 | * | x1 | = | b1 b2 0 |
| A21 A22 |   | x2 | 
|  1   1  |

改变惩罚的系数可以添加更多细节,例如如果 x1 的效率比 x2 低 10 倍:

| A11 A12 | * | x1 | = | b1 b2 0 |
| A21 A22 |   | x2 | 
|  10  1  |

更多问题:

  • 我添加行的方法正确吗?
  • 这个方法有名字吗?
  • 能否将这种加权惩罚方法纳入更标准的方法(如 Lasso)中?
  • Lasso 如何使用边界?我所有的 X 系数都需要在 0 到 100 之间。
nanren41 回答:将“成本项”添加到线性回归中,从而使解值最小化

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/4049.html

大家都在问