python - 计算海量数据集多元线性回归的性能问题

标签 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  

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

最佳答案

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

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

为了合并结果,您有多种选择:

  • 按照统计互相关中的常见做法,通过残差范数的倒数对它们进行加权(计算速度快,因为它已经在输出中)。
  • 测量完整数据集的真实残差(花费不到三秒)并且:
    • 保留最好的。
    • 通过实际距离的倒数对它们进行加权。

最佳选择取决于您需要的准确性以及数据的性质。如果您只需要对中等噪声进行粗略估计,则单次下采样应该可以工作。请记住,您的决心已经严重不足,因此您的解决方案将会退化。

关于python - 计算海量数据集多元线性回归的性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24287231/

相关文章:

python - 使用 numpy/scipy 计算连续向量之间距离的最快方法

python - 保护 Flask 上的 POST 请求

python - 使用 pyspark 从字典中映射数据框中的值

python - numpy.isnan(value) 与 value == numpy.nan 不同吗?

python - 具有不同数据类型的 Numpy 数组表现得很奇怪

python - 这些 X 和 Y 变量如何在线性回归中使用?

python - Twine 无法识别 --repository-url 标志

python - 比较 n 维 numpy 数组中的值

python - 有没有更有效的方法将多行字符串转换为 numpy 数组?

machine-learning - 将 NLP 转换为 SQL 有哪些方法?