python中最快的线性回归实现



我正在执行逐步模型选择,逐步删除具有方差膨胀因子超过某个阈值的变量。

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

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

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

更新1:似乎scikit learn的线性回归实现是scipy实现的包装器。

更新2:通过scikit学习线性回归的Scipy OLS在我非常有限的测试中是statmodels OLS的两倍…

scikit-learn SGDRegressor类是最快的,但可能比简单的LinearRegression更难调优。

我会给每一个尝试,看看他们是否满足你的需求。我还建议对你的数据进行子采样——如果你有很多次演出,但它们都是来自同一分布的样本,你可以在几千个样本上训练/调整你的模型(取决于特征的数量)。这将导致更快地探索您的模型空间,而不会在"重复/无趣"数据上浪费大量时间。

一旦你找到一些候选模型,然后你可以在整个数据集上尝试它们。

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

PyMC本身不实现rjMCMC,但它可以实现。还要注意,PyMC 3使用它的新glm子模块使拟合回归模型变得非常容易。

最新更新