python中最快的线性回归实现

python中最快的线性回归实现,python,scipy,scikit-learn,statsmodels,pymc,Python,Scipy,Scikit Learn,Statsmodels,Pymc,我正在进行一个逐步的模型选择,逐步降低方差膨胀系数超过某个阈值的变量 为了做到这一点,我在数百MB到10 Gig的数据集上运行了很多次OLS 对于较大的数据集,OLS的最快实现是什么?Statsmodel OLS实现似乎在使用numpy来反转矩阵。基于梯度下降的方法会更快吗?scikit learn的实现是否特别快 或者使用pymc的基于mcmc的方法是最快的 更新1:似乎LinearRegression的scikit学习实现是scipy实现的包装器 更新2:在我非常有限的测试中,通过sciki

我正在进行一个逐步的模型选择,逐步降低方差膨胀系数超过某个阈值的变量

为了做到这一点,我在数百MB到10 Gig的数据集上运行了很多次OLS

对于较大的数据集,OLS的最快实现是什么?Statsmodel OLS实现似乎在使用numpy来反转矩阵。基于梯度下降的方法会更快吗?scikit learn的实现是否特别快

或者使用pymc的基于mcmc的方法是最快的

更新1:似乎LinearRegression的scikit学习实现是scipy实现的包装器


更新2:在我非常有限的测试中,通过scikit学习的Scipy OLS线性回归的速度是STATSOLS模型的两倍

scikit learn SGDRegressor类(iirc)是最快的,但可能比简单的线性回归更难调整

我会尝试一下,看看它们是否满足你的需要。我还建议对您的数据进行二次采样-如果您有许多GIG,但它们都是来自同一分布的样本,您可以在几千个样本上训练/调整您的模型(取决于功能的数量)。这将导致更快地探索模型空间,而不会在“重复/无趣”数据上浪费大量时间


找到几个候选模型后,您可以在整个数据集上尝试这些模型。

逐步方法不是执行模型选择的好方法,因为它们完全是临时的,并且高度依赖于您运行逐步过程的方向。最好使用基于标准的方法,或其他生成模型概率的方法。也许最好的方法是使用可逆跳跃MCMC,它适用于整个模型空间的模型,而不仅仅是特定模型的参数空间


PyMC本身并不实现RJCMC,但它可以实现。还要注意的是,PyMC 3使使用其来拟合回归模型变得非常容易。

您有多少行/观察值和多少列/解释变量?大约100个观察值和百万行很好。我也可以使用其他一些方法,比如elasticnet,但我有我的理由。