是否有一个实现的算法(优先使用python / R或java),可以对来自未知发生器的输入数据进行分类,绝对没有先验知识或假设。
例如:
设G是2d向量的生成器,每秒生成一个向量。
我们所知道的,没有别的,这个向量可以分成空间中的簇(欧几里德距离)。
问题:如何实时对我的数据进行分类,以便在每次迭代时,算法都会提出群集?
答案 0 :(得分:2)
我也正在搜索与Data stream clustering相关的内容,我发现了一些论文和代码:
Density-Based Clustering for Real-Time Stream Data提出了D-Stream框架(2008 version称为Stream data clustering based on grid density and attraction
);有一个DD-Stream我无法通过贾在A grid and density-based clustering algorithm for processing data stream
找到pdf。
A Fast and Stable Incremental Clustering Algorithm由Steven Young等人撰写。重点关注聚类作为无监督学习过程;
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)
没有假设免费方法。
你要求魔法发生。
绝不盲目使用群集结果。不要在流上使用群集。相反,在部署之前分析并更正任何群集结果。
注意隐藏的假设。例如,假设群集是凸的,基于距离(为什么欧几里德距离是coorect选择?),具有相同的大小或延伸,被分开(通过什么?)或形状。 无论何时设计方法,都要对有趣的内容做出假设。
没什么假设,任何东西都是"群集"!