在线(而不是批量处理)数据挖掘包

时间:2012-03-10 20:02:56

标签: data-mining online-algorithm

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

我(错误)使用了实时这个词,但我意味着结果必须在固定的时间内。 ('''编辑:用在线上方实时替换''')


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

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

什么是在线数据挖掘软件包?

文献是否有理由不区分在线和批量处理包?或者所有实际数据挖掘本质上都是批量操作?

2 个答案:

答案 0 :(得分:2)

对于某些算法,可以使用在线版本。例如,对于本地离群因子LOF,存在在线变体。我相信也有k-means的在线变体(事实上,原始的MacQueen版本可以被视为“在线”,虽然大多数人通过重复它直到收敛将其变成离线版本),但是请看下面的问题使用k参数。

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

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

通常,算法已经在线或离线。并且软件包将无法离线算法转换为在线算法。

答案 1 :(得分:-1)

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