大数据的第一步(ñ=1010N=1010, )p = 2000p=2000

机器算法验证 r 机器学习 数据挖掘 大数据
2022-02-06 00:25:37

假设您正在分析一个每天数十亿次观察的庞大数据集,其中每个观察都有几千个稀疏且可能冗余的数值和分类变量。假设有一个回归问题,一个不平衡的二元分类问题,以及一个“找出哪些预测变量最重要”的任务。我对如何解决这个问题的想法是:

在逐渐变大(随机)的数据子样本上拟合一些预测模型,直到:

  1. 拟合和交叉验证模型在计算上变得困难(例如,我的笔记本电脑速度过慢、R 内存不足等),或者

  2. 训练和测试 RMSE 或精度/召回值稳定。

如果训练和测试错误没有稳定 (1.),请使用更简单的模型和/或实现模型的多核或多节点版本并从头开始。

如果训练和测试误差稳定(2.):

  • 如果(即,我仍然可以在上运行算法,因为它还不是太大),尝试通过扩展特征空间或使用更复杂的模型并从头开始来提高性能。NsubsetNXsubset

  • 如果是“大”并且运行进一步分析的成本很高,请分析变量重要性并结束。Nsubset

我计划最初在 R 中使用 、 、 和 等包biglmspeedglm然后multicore根据ff需要使用更复杂的算法和/或多节点(在 EC2 上)。

这听起来像一个合理的方法吗?如果是,你有什么具体的建议或建议吗?如果没有,你会尝试什么来代替这种大小的数据集?

3个回答

您应该查看针对这种大小的数据集进行回归和分类的在线方法。这些方法可以让您使用整个数据集,而无需将其加载到内存中。

您还可以查看 Vowpal Wabbit (VW):

https://github.com/JohnLangford/vowpal_wabbit/wiki

它使用核心外的在线方法,因此它应该能够处理这种大小的数据集。您可以进行回归和分类,它支持稀疏格式。您还可以在 VW 中执行惩罚版本(例如套索式回归/分类),这可以提高模型的准确性。

我建议使用 Hadoop 和 RMR(R 中 Map Reduce 的特定包)。使用这种策略,您可以在具有负担得起的配置的商品计算机上运行大型数据集(可能在两个小时内您就可以安装并运行 Hadoop 和 RMR (RHadoop))。

事实上,如果您有不止一台计算机,您可以创建一个集群,从而减少处理时间。

我给你一些支持我的建议的链接:

  • 链接将引导您进入在单节点集群(一台计算机)上安装 Hadoop 的教程。
  • 链接和此链接将向您展示如何在您的 Hadoop 集群上安装 RMR。
  • 最后,在这里您可以找到一个使用 RHadoop 进行逻辑回归的示例。

因此,我的建议是遵循这些准则,因为如果您的数据量很大,这当然是值得的。

这更像是一个评论而不是一个答案,但我不能将它作为评论发布(需要 50 个代表)..

您是否尝试在数据集上使用 PCA?它可以帮助您减少变量空间并找到变量从回归模型中排除的可能方向。这样做,模型将更容易计算。在这里,您可以找到关于将 PCA 与分类变量一起使用的有趣讨论:主成分分析可以应用于包含连续变量和分类变量的数据集吗?

另外,我想您使用 R 的原因有很多(我也使用 R),但使用 SAS 或 STATA 等软件可能更容易。它们在大数据方面表现更好,您不必处理多核和并行计算。

最后,尝试考虑使用数据集中尽可能多的行是否有意义。这是人口数据集、准人口数据集还是采样数据集?与使用整个数据相比,对数据集进行良好采样可能会获得更好的结果。看看这篇文章:采样在“大数据”时代是否相关?

希望这可以帮助