基本上,有两种常见的方法可以针对大型数据集进行学习(当您遇到时间/空间限制时):
- 作弊:) - 仅使用“可管理”子集进行训练。由于收益递减规律,准确度的损失可能可以忽略不计——模型的预测性能通常在所有训练数据纳入其中之前很久就趋于平缓。
- 并行计算 - 将问题分成更小的部分,并在单独的机器/处理器上解决每个部分。虽然您需要算法的并行版本,但好消息是许多常见算法自然是并行的:最近邻算法、决策树等。
还有其他方法吗?是否有任何经验法则何时使用每个?每种方法的缺点是什么?
基本上,有两种常见的方法可以针对大型数据集进行学习(当您遇到时间/空间限制时):
还有其他方法吗?是否有任何经验法则何时使用每个?每种方法的缺点是什么?
流挖掘是一个答案。它也被称为:
大规模在线学习
而不是将所有数据集放入内存并从中进行训练。他们将其中的大块放入内存中,并从这些大块流中训练分类器/集群。请参阅以下链接。
MOA:海量在线分析
《海量数据集挖掘》一书,来自斯坦福大学。它使用 MapReduce 作为工具。
videolectures.net 中的视频。搜索该站点中存在的类似视频。
您可以像在小批量学习中那样使用多个子集(例如随机梯度下降),而不是只使用一个子集。这样,您仍然可以使用所有数据。
像 bagging 或 blending 这样的集合——没有数据被浪费,问题自动变得微不足道,并且可能有显着的准确性/鲁棒性增益。