MOA:大规模在线分析,一个数据流分类和聚类框架
摘要:MOA是一种从演化数据流在线学习的算法实现平台和环境。通过相关设置,可以比较不同针对真实数据集的算法。它包含一系列用来分类和聚类的离线和在线的算法以及一些评估工具。理论学者和实践者都可以从中获益。此外,它还可以进行扩展。
一 介绍
如今数据以高速从各式各样的数据源诞生。实际上所有的数据可以被看做数据流。 由于数据流高速到达,因此针对其的算法在空间和时间方面有所限制。为了突破这种限制,跟传统的批处理方法比较,算法必需要满足一些需求,它们是: 1、只能一次观察一个实例; 2、使用有限的内存容量; 3、在有限时间内计算;
4、时刻准备预测。
数据流学习算法是一种很重要的流处理算法:在反复循环中,学习模型不断地更新以便反映从数据流中获取的实例。它们不能超过它们的内存空间和时间边界。处理到达的实例后,算法总是能够输出一个模型。在数据流领域,典型的学习任务是:分类、边界分析和聚类。
由于存在许多流学习算法,通过实验进行完整地比较是至关重要的。大部分文献中,新出的算法在评估方面做得都不够到位,它们大都只在小数据流集上做实验,这与实际情况往往不符,也不能使人信服。
在传统批处理方法中,引入评估框架是为了处理比较这个问题,WEKA就是一个框架类型。而数据流学习相对是一个比较新的领域,关于其的评估实践较少被研究。
为了这个目的,我们引入了一个叫做MOA的框架用来评估数据流学习算法。MOA是建立在WEKA的基础上的。MOA可以用来评估数据流分类和聚类,并允许挖掘大数据流。MOA框架的主要贡献有:
1、分析和比较不同的算法和不同的数量流设置;
2、可以创建和使用基准设置,用来反复比较数据流挖掘算法;
3、它是开源的框架,容易在数据流种子、算法和评估方法方面得到扩充。
下面是论文的组织结构:首先介绍MOA的通用框架,以及如何用它对演化数据流进行分类和聚类。第五部分指出其他包括源代码和教程在内的资料所在。第六部分总结论文。
二、系统体系结构
首先选择数据种子,然后配置一种学习算法(比如分类算法或者聚类算法),最后选择一种评估方法用来分析希望的情景。分类和聚类在算法尤其是评估方法方面有好多不同之处,因此在下面分别加以阐述。针对分类和聚类任务,用户可以在这三个方面进行扩展,可以增加著名的数据产生器、算法和评估方法。MOA用户可以通过命令行或者图形接口进行实验。
通常,MOA运行定义三种仿真环境,由于从数据流学习,内存往往不能被忽略。三种环境分别是: 1、传感器网络
这种环境代表内存最受限制的情况,内存通常只有100K。由于内存被限制得很小,在效率方面往往会出现有意思的测试情况。
2、手持电脑
这种情况算法拥有32M大小空间。这用来仿真一些消费电子设备的容量。 3、服务器
这种环境仿真用来现代的手持/桌面电脑或者服务器来处理数据流。这里内存分配给算法400M大小空间。
三、分类 四、聚类
MOA的数据流聚类模块有以下特性: 包含针对演化数据流的流聚类的数据产生器; 一系列最先进的数据流聚类算法;
针对数据流聚类算法的评估措施;
用来分析结果和比较不同设置下的流聚类算法的可视化工具。
剩下的部分分别介绍流聚类组件。首先选择和配置一个数据种子,其次选择一种流聚类算法(其设置被固定),再次选择一系列评估措施,最后就是运行实验来获取分析结果。详细叙述如下:
4.1 数据种子和数据产生器
针对流聚类算法,我们增加了一些支持诸如簇的出现和消失的簇演化事件的仿真。 通常,可以设置数据集维度、大小、簇大小、漂移速度、衰减幅度以及噪声速率等。事件包含在数据模型下的一些变动,比如簇的增长,簇的诞生或者创建新簇。使用事件频率和个体事件权重,可以学习不同聚类方法在各种设置下的行为和性能。最后针对数据产生器的设置可以被保存和加载,这样可以有机会提供一个数据流数据集基准用来重复比较。通过实
现ClusteringStream接口可以增加新的数据种子和产生器。
4.2 数据流聚类算法
现在的MOA包含以下数据流聚类算法 StreamKM++ ClusStream ClusTree Den-Stream D-Stream CobWeb
可以通过实现接口Clusterer.java接口的的类来扩展算法集。 这个接口的主要方法有:
void resetLearningImpl():初始化聚类学习器
Void trainOnInstanceImpl(Instance):用来一个训练新实例的方法
Clustering getClusteringResult():一个种用来获得现在聚类结果(用来评估或者可视化)的方法。
下面是一些评估测量(包括内部测量和外部测量): 4.3 数据流聚类评估措施
过去几十年,针对簇评估已经有许多人开发和提出了许多方法。针对这些测量,一种通用的分类方法就是所谓的内部测量和外部测量。内部测量只考虑簇的属性,比如簇内点与点之间的距离或者两个不同簇之间的距离。MOA包含一个可以在内部和外部测量方面扩展的集合,这种测量可以同时运用到micro(微)和macro(宏)聚类。
为了扩展额外的或者著名的评估测量,可以通过实现Measure 接口实现,它的主要方法有:
void evaluateClustering(Clustering clustering,Clustering trueClustering): double getLastValue():一种用来输出最后评估测量结果的方法
double getMaxValue(),getMinValue(),getMean(): 获取测量分布跟多统计信息的一种方法
4.4 可视化和分析
一旦评估过程启动后,给定了一些用来分析输出的选项:
a)数据流可以被停止以及当前的聚类结果可以作为一个数据集传递给WEKA浏览器,以便做进一步的分析和挖掘;
b)评估措施(以配置的时间间隔运行),可以以.csv格式存储起来,可以获取离线的图形和表格;
c)最后但并非最不重要的,不管是聚类结果还是对应的评估措施,在我们的框架中都可以在线可视化。
我们的框架允许同步配置和评估两种针对直接对比算法的不同设置,比如针对相同数据流的不同算法和带有不同噪声等级的同一种算法等等。 可视化组件运行可视化数据流以及聚类结果,可以并行地选择针对各种维度设置的维度以及针对不同设置下的对比试验。 五、网站、教程和文档 六、结论
我们的目标是建立一个类似WEKA框架的针对数据流分类和聚类的实验环境。我们的流学习框架提供一个数据产生器的集合、算法和评估措施。实践者可以通过比较真实世界语义中的不同算法而受益,从而选择最适合的解决方案。对于研究学者,我们的框架也可以深入观察不同方法的优势和劣势,同时允许通过存储、共享、重复使用数据种子设置而创建基准。源代码的发布和发行遵循GNU GPL协议。在MOA中,尽管现在我们仅仅关注分类和聚类,我们计划扩展我们的框架,最终包括回归,以及频繁项学习等。