2

“批量处理”是指一次处理所有事实的静态数据集(如在 CSV 中)以提取知识。在“在线”时,它使用实时支持存储:事实在发生时添加(“X 购买 Y”),并在此实时数据上发生查询(“您会向正在查看 y 的人推荐什么?” )。

我(错误地)使用了“实时”一词,但我并不是说结果必须在固定时间内出现。('''编辑:上面的实时替换为在线''')


我想到了一个使用实时数据的推荐引擎。但是,我遇到的所有在线资源(例如 SO 问题)都没有区分实时数据挖掘包和批量处理数据挖掘包。我不得不单独搜索:

  • 从 Lucene/Solr 和其他实时数据集(在线)读取的 Carrot2
  • Knime 对静态文件(批量)执行计划执行
  • Mahout 在 Hadoop(以及未来基于 Pregel 的 Giraph)上运行(在线?)
  • 与 Cassandra 集成的商业软件包(在线?)

什么是在线数据挖掘包?

文献没有区分在线和批量处理包有什么原因吗?还是所有实际的数据挖掘本质上都是批量操作?

4

2 回答 2

2

对于某些算法,有可用的在线版本。例如,对于局部异常值因子 LOF,有一个在线变量。相信也有k-means的线上变种(其实MacQueen原来的版本也可以看成“线上”,虽然大部分人都是通过反复迭代直到收敛变成线下的版本),不过问题见下文与 k 参数。

然而,在线操作通常会带来巨大的性能成本。直到每小时在快照上运行完整算法而不是不断更新结果的速度更快。想想互联网搜索引擎。大多数大型搜索引擎仍然不允许“在线”查询,而是查询可能在一天或更早之前构建的最后一个索引。

此外,在线操作需要大量的额外工作。计算距离矩阵很容易,通过添加和删除列来在线更新它并同步所有相关结果要困难得多。通常,大多数数据挖掘结果都太复杂而无法执行此操作。例如,计算数据流的平均值很容易。但是'''通常没有已知的解决方案来更新结果而不重新运行 - 昂贵的 - 过程'''。在其他情况下,您甚至需要更改算法参数。所以在某个时候,可能会形成一个新的集群。然而,k-means 并不意味着出现新的集群。所以本质上,你不能只写一个在线版本的 k-means。这将是一个不同的算法,因为它需要动态修改输入参数“k”。

所以通常,算法已经在线或离线。并且一个软件包将无法离线算法变成在线算法。

于 2012-03-11T11:17:57.610 回答
0

在线数据挖掘算法意味着它们实时计算结果,并且通常意味着算法是增量的。也就是说,模型每次看到新的训练实例时都会更新,不需要使用批处理算法进行定期重新训练。许多机器学习库,如 Weka,都提供了批处理算法的增量版本。还要检查moa项目和spark 流。文献确实对两者进行了区分,尽管大多数“传统”机器学习算法在没有基础设施和计算优化的情况下无法在在线模式下工作。

于 2015-10-13T14:22:46.917 回答