【问题标题】:Using Lasso for non-linear regression (Python)使用 Lasso 进行非线性回归 (Python)
【发布时间】:2017-10-17 06:44:01
【问题描述】:

我有一组独立的数据点X,和一组依赖的点Y,我想找一个模型的形式:

(a0+a1*x1+a2*x2+...+amxm)(am+1*xm+1+am+2*xm+2)

我知道我可以使用 scipy 的 curve_fit,但为了避免过度拟合,我想将 Lasso 用于线性部分(即第一组括号中的部分)。

在 Python 中有没有一种简单的方法来做到这一点?

【问题讨论】:

  • 添加一些示例数据和有关适合您的任务的数据大小的信息。

标签: python non-linear-regression lasso-regression


【解决方案1】:

您可以将套索回归器拟合到整个批次中,将括号相乘得到 2m+2 个系数。然后通过更改变量,您可以再次将其变成线性回归问题。

查看此链接了解更多详情: http://scikit-learn.org/stable/modules/linear_model.html#polynomial-regression

【讨论】:

  • 你说得对,我给出的函数并不是一个很好的例子。我将问题编辑为具有实际的非线性函数,我无法使用您的技巧。谢谢:)
  • 问题是假设第二个括号中的东西不存在,套索会找到最佳参数。现在你仍然可以乘以括号,给你 2m+2 个变量。更棘手的部分是你不会有一个常数,所以你必须在套索中强制常数为零。
  • 我希望有一个现有的解决方案,它结合了curve_fit和套索(它接收一个像curve_fit这样的输入函数,但惩罚像套索这样的系数),但我想我需要采取不同的方法。谢谢你的帮助!
  • 好的。也许你可以先按照我的建议安装套索,然后在减少的变量集上使用curve_fit。不过可以尝试一下,因为无论如何,原始 lasso 可能被证明比 curve_fit 更好。
  • 我做了一些阅读并找到了一种将您的解决方案推广到任何多项式拟合的方法。使用这个你的解决方案适合我的问题,所以如果你想添加它,我会将你的答案标记为解决方案(如果你不这样做,我将它作为第二个答案发布)scikit-learn.org/stable/modules/… 谢谢你帮助!
猜你喜欢
  • 2021-03-11
  • 2019-06-17
  • 2018-07-23
  • 2023-03-05
  • 1970-01-01
  • 2023-03-08
  • 2018-07-31
  • 2013-07-14
相关资源
最近更新 更多