2012-03-10 32 views
2

“批量处理”我的意思是一个静态数据集事实(如在一个CSV)一次处理,以提取知识。 “在线”时,它使用一个直播支持存储:在事件发生时添加(“X购买Y”),并在此实时数据上发生查询(“您将推荐给正在查看y的人?“)。在线(而不是批量处理)数据挖掘软件包

我有(错)实时使用的术语,但我意味着结果必须在一个固定的时间内。 ('''编辑:实时替换在线以上''')


我记住了一个使用实时数据的推荐引擎。然而,我遇到的所有在线资源(如SO问题)都使在实时和批量处理数据挖掘包之间没有区别。我只好逐个搜索:

  • Carrot2从Lucene的/ Solr的以及其他现场数据集(联机)
  • Knime其不计划对静态文件执行(散装)
  • 亨利马乌它运行在Hadoop读取(和预凝胶型Giraph未来)(在线?)
  • 的商业包装与卡桑德拉(在线整合?)

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

有没有理由为什么文献没有区分在线和批量处理软件包?或者是所有的实际数据挖掘实际上是批量操作?

+0

我编辑了你的文章,因为适当的术语恕我直言,是“在线操作”(而不是工作在数据的副本上)。 – 2012-03-11 11:09:09

回答

2

对于某些算法,有在线版本可用。例如,对于本地异常因素LOF,有一个在线变体。我相信也有K-means的在线变体(实际上,原始的MacQueen版本可以被视为“在线”,尽管大多数人通过重复它直到收敛来将其变成离线版本),但是在下面看到问题与k参数。

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

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

因此,通常算法已经在线或离线。而一个软件包将无法将转为脱机算法转为在线算法。

-1

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

+0

关于堆栈溢出的离线资源或工具推荐请求是无关紧要的。如果你回答它们,你特别强调了Stack Overflow是回答这些问题的好地方。不是这样。即使你知道一个很好的答案,也不要回答这些问题,因为大多数答案都会被高度评价(“我个人喜欢......”)。您可以打开关于该问题的标志对话,并在** off-topic **类别下或[help/on-topic]中查看完整的原因。你甚至不应该在评论中回答,因为效果与实际答案类似。 – 2015-10-13 16:03:17

+0

我回答了问题“什么是在线数据挖掘软件包?”和“是否有文献没有区分在线和批量处理软件包的原因?” 。这个问题被标记为+2,所以它很重要。如果你对这个问题有疑问,你为什么要惩罚答案? – 2015-10-14 09:25:35

+0

无论您个人对Stack Overflow应该是什么样的观点以及想要塑造它的愿望,只有拥有正确能力的人才有权对Stack Overflow问题采取行动。似乎你只有声望,但(根据你的个人资料)而不是能力。 – 2015-10-14 09:43:19