大数据集多元线性回归计算中的性能问题

2024-09-28 16:19:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我用np.linalg.lstsq来计算多元线性回归。我的数据集很大:有20000个自变量(X)和1个因变量(Y)。每个自变量有10000个数据。像这样:

                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计算regression coefficient需要花费大量时间(20-30分钟)。有谁能根据计算时间告诉我一些更好的解决办法吗?在


Tags: 数据np时间线性x1x2因变量regression
2条回答

使用PCA来减少输入数据因子的数量。这是很好的,因为您可以指定要保留的方差百分比。如果你能摆脱90%以上的数据并保留大部分重要功能,我不会感到惊讶。在

基本思想是将数据映射到低于20000维的轴上

对于现成的实现,请查看http://mdp-toolkit.sourceforge.net/。在

花费的时间似乎是n**2.8。可以通过减少数据点的数量来提高速度。在

如果您将数据的采样减少到1000行,您可以在几秒钟内完成计算。然后可以用不同的随机样本重复分析。在

为了合并结果,您有几个选项:

  • 就像统计学中的互相关一样,用残差范数的倒数来加权它们(计算速度快,因为它已经在输出中了)。在
  • 测量完整数据集的实际残差(不到3秒),并:
    • 保留最好的。在
    • 用实际距离的倒数来衡量它们的重量。在

最好的选择取决于您需要多大的准确性,以及数据的性质。如果你只需要一个中等噪声的粗略估计,一次下采样就可以了。请记住,你已经严重缺乏决心,所以你的解决方案将退化。在

相关问题 更多 >