向量自回归模型与scikit学习拟合



我正在尝试使用scikit learn中包含的广义线性模型拟合方法来拟合向量自回归(VAR)模型。线性模型的形式为y=Xw,但系统矩阵X有一个非常特殊的结构:它是块对角的,所有块都是相同的。为了优化性能和内存消耗,模型可以表示为Y=BW,其中BX的一个块,YW现在是矩阵而不是向量。LinearRegression、Ridge、RidgeCV、Lasso和ElasticNet类很容易接受后一种模型结构。然而,由于Y是二维的,拟合LassoCV或ElasticNetCV失败。

我发现https://github.com/scikit-learn/scikit-learn/issues/2402通过这次讨论,我认为LassoCV/ElasticNetCV的行为是有意的。除了手动执行交叉验证之外,还有什么方法可以优化alpha/rho参数吗?

此外,scikit学习中的贝叶斯回归技术也期望y是一维的。有办法解决这个问题吗?

注:我使用scikit学习0.14(稳定)

使用此回归公式获得的性能和内存优化有多关键?考虑到你的配方破坏了scikit的学习,我不会真的称之为优化。。。我建议:

  1. 运行未优化的版本并等待(如果可能)。

  2. Git提取了以下代码,据说可以解决您的问题。你在scikit learn github项目中发布的对话中提到了这一点。有关构建scikit的说明,请参阅此处。然后,您可以将分支的scikit学习位置添加到python路径中,并使用修改后的库代码执行回归。一定要公布你的经历和你遇到的任何问题;我相信scikit的开发人员会很感激的。

要预测矩阵而不是向量,Lasso和ElasticNet的MultiTask*对应项是:

http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.MultiTaskLasso.htmlhttp://scikit-learn.org/stable/modules/generated/sklearn.linear_model.MultiTaskElasticNet.html

相关内容

  • 没有找到相关文章

最新更新