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

时间:2014-06-18 13:43:23

标签: python numpy machine-learning linear-regression

我正在使用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  

使用regression coefficient计算np.linalg.lstsq需要花费大量时间(20-30分钟)。任何人都可以根据计算时间告诉我一些更好的解决方案吗?

2 个答案:

答案 0 :(得分:0)

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

如果您将数据下采样到只有一千行,则可以在几秒钟内完成计算。然后,您可以使用不同的随机样本重复分析。

为了合并结果,您有以下几种选择:

  • 通常用于统计中的互相关,并用残差范数的倒数加权(计算速度快,因为它已经在输出中)。
  • 测量完整数据集的实际残差(只需不到3秒),并且:
    • 保持最佳状态。
    • 按实际距离的倒数加权。

最佳选择取决于您需要多少准确度以及数据的性质。如果您只需要对中等噪声进行总估计,那么单个下采样应该可行。请记住,您已经非常认真,因此您的解决方案将会退化。

答案 1 :(得分:0)

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

基本思路是将数据映射到轴的低维度集合,而不是20,000

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