我正在使用np.linalg.lstsq
来计算多元线性回归。我的数据集非常庞大:有 20,000 个自变量 (X) 和 1 个因变量 (Y)。每个自变量有 10,000 个数据。像这样的事情:
X1 X2 X3.. X20,000 Y
data1 -> 10 1.8 1 1 3
data2 -> 20 2.3 200 206 5
.. .. .. .. ..
data10,000-> 300 2398 878 989 998
使用 np.linalg.lstsq
计算回归系数
需要花费大量时间(20-30 分钟)。有人可以根据计算时间告诉我一些更好的解决方案吗?
最佳答案
花费的时间似乎遵循n**2.8
。您可以通过减少数据点的数量来提高速度。
如果将数据采样到仅一千行,则可以在几秒钟内完成计算。然后,您可以使用不同的随机样本重复分析。
为了合并结果,您有多种选择:
- 按照统计互相关中的常见做法,通过残差范数的倒数对它们进行加权(计算速度快,因为它已经在输出中)。
- 测量完整数据集的真实残差(花费不到三秒)并且:
- 保留最好的。
- 通过实际距离的倒数对它们进行加权。
最佳选择取决于您需要的准确性以及数据的性质。如果您只需要对中等噪声进行粗略估计,则单次下采样应该可以工作。请记住,您的决心已经严重不足,因此您的解决方案将会退化。
关于python - 计算海量数据集多元线性回归的性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24287231/