在没有事先了解班级数量的情况下实时分类

时间:2015-05-27 22:46:46

标签: real-time cluster-analysis

是否有一个实现的算法(优先使用python / R或java),可以对来自未知发生器的输入数据进行分类,绝对没有先验知识或假设。

例如:

设G是2d向量的生成器,每秒生成一个向量。

我们所知道的,没有别的,这个向量可以分成空间中的簇(欧几里德距离)。

问题:如何实时对我的数据进行分类,以便在每次迭代时,算法都会提出群集?

3 个答案:

答案 0 :(得分:2)

我也正在搜索与Data stream clustering相关的内容,我发现了一些论文和代码:

This paper约为MOA(大规模在线分析),声明它实现了上述部分内容(StreamKM ++,CluStream,ClusTree,Den-Stream,D-Stream和CobWeb)。我相信D-Stream正在进行中工作/一厢情愿(不是他们网站上发布的预发行版的一部分)。 MOA是用Java编写的,here是streamMOA包。

this存储库中的代码似乎是D-Stream的Python实现,但是according to the author,它很慢。

此外,stream是使用R进行数据流聚类研究的框架。

答案 1 :(得分:1)

我认为你在询问" Stream mining"这里。

阅读这篇文章

第10章:流聚类算法概述。 Charu C. Aggarwal,IBM T. J. Watson Research Center,Yorktown Heights,NY

这可以在2014年的书中找到

DATA CLUSTERING-算法和应用,由Charu C. Aggarwal和Chandan K. Reddy编辑。

在那一章中," CluStream"描述了框架。这个项目是从2002年开始的,它基于1997年的BIRCH算法,它是一个" Micro-Clustering"做法。该算法即时创建索引结构。

考虑到BIRCH的实现很少, 可能没有可用的开源CluStream算法/框架。

这里有一个Github repo,其中有一个用Java实现的BIRCH - 尽管我还没有尝试过这个代码,而且这个代码不适用于"流挖掘"。

所有这些只是出现在我的雷达上,因为我最近刚参加了关于聚类分析的Coursera MOOC。

答案 2 :(得分:0)

没有假设免费方法。

你要求魔法发生。

  1. 绝不盲目使用群集结果。不要在流上使用群集。相反,在部署之前分析并更正任何群集结果

  2. 注意隐藏的假设。例如,假设群集是凸的,基于距离(为什么欧几里德距离是coorect选择?),具有相同的大小或延伸,被分开(通过什么?)或形状。 无论何时设计方法,都要对有趣的内容做出假设。

  3. 没什么假设,任何东西都是"群集"!