MOA网站结构分析

MOA网站地址:http://moa.cs.waikato.ac.nz/

注:文章为作者科研分析所得,请注意版权问题,引用时请告知原作者或做说明。

摘要:本文对MOA(Massive Online Analysis)的官方网站内容及MOA项目代码结构进行分析。截至2014年9月20日,MOA的最新版本是Release 2014.04,需要Weka3.7以上版本的支持。文章根据网站的一级标题、二级标题、三级标题进行逐级分析。

关键字:MOA;网站结构;Weka

 

Weka软件(Waikato Environment for Knowledge Analysis)具有一套用于数据挖掘任务的机器学习算法,这些算法既可以直接应用于一个数据集,也可以由我们自己编写的Java代码调用。Weka包含用于数据预处理、分类、回归、聚类、关联原则以及可视化的工具,它也适用于开发新的机器学习机制[1]。当在Java项目中装载好Weka.jar、Weka-src.jar之后,就可以继承Weka中现有的类开始编写新的算法。

MOA[2]是Massive Online Analysis的缩写,它是基于Weka的一个项目,提供挖掘数据流的环境,由Weka的机器学习组(MachineLearning Group)开发研究,属于COSI(center for open software innovation,Waikato大学在计算机科学理论和实践方面的领军研究中心)支持的项目。MOA是最流行的数据流挖掘开源方法,有非常活跃的社区(blog[3])。MOA具有一系列机器学习算法(分类、回归、聚类、离群检测及推荐系统)和评价工具。与Weka相似的,MOA也是用java语言编写的。

MOA官方主页为:http://moa.cms.waikato.ac.nz/,主要包括Download、Overview、Details、Blog、Extensions、Team、Datasets七个主目录。另外,在主页的下方提供了一些下载、文档、帮助等的快捷入口。下面,我们从七个方面,对MOA做简要的分析。

1  Downloads

此页面提供MOA相关软件和文档下载,具体情况介绍如下:

(1)相应软件

最新的MOA版本是MOA Release 2014.04,网站提供了插件下载地址。此外,还提供了其他扩展软件的下载页面,以及MOA源码仓库(Mercurial仓库)[4][5]

(2)之前版本

之前使用的版本主要包括:

MOA Release 2013.11;

MOA Release 2013.08;

MOA Release 2012.08;

MOA Release 2012.03;

MOA Release 2011.10。

(3)Maven集成

可以将MOA纳入maven项目管理,通过在项目的pom.xml文件中添加如下依赖:

nz.ac.waikato.cms.moa

moa 

2014.04

(4)教程

教程主要包括对MOA的介绍、对MOA文档的介绍、对MOA聚类的介绍以及对ADAMS和MOA的介绍。其中,对MOA的介绍是在2012年3月编写的,主要介绍如何启动MOA的图形界面并说明图形界面各部分的功能、分类图形用户接口、命令行使用方法、对前文的练习题给出简单的答案。对MOA文档的介绍是在2012年3月编写的,主要给出使用API的简单例子程序,并详细说明了编写一个新分类器的方法,并附有代码说明。对MOA聚类的介绍是在2013年10月编写的,主要介绍了、数据流聚类的设置方法、如何微调自己的流聚类方法、如何比较2种数据流算法。对ADMAS和MOA是在2012年11月编写的。

(5)文档

给出视频介绍、说明文档及用户手册。MOA Data Stream Mining文档主要介绍了挖掘数据流的相关算法,MOA Manual文档主要介绍了用户使用MOA界面的手册。

(6)API

这是MOA项目API的连接地址。

2  Overview

这一部分是对MOA的一个概述内容,主要包括使用MOA和MOA与Weka的交互性。

MOA是Weka相关的项目,使用Java编写,可进一步扩展以解决更多问题。MOA的目标是给挖掘数据流内容的实验提供一个标准方法,它提供了三方面的功能:可存储(真实和合成)数据流的设置,便于重复实验;比较一系列著作中的现有算法和方法;为新的流、算法和评价方法提供一个简单的可扩展框架。

2.1  启动MOA

网站二级标目录,这一部分讲述了MOA的启动和使用过程,具体过程如下所示:

1.      从网站的链接地址http://sourceforge.net/projects/moa-datastream/上下载MOA;

2.      在命令行输入java -cp moa.jar -javaagent:sizeofag.jar moa.gui.GUI命令启动MOA图像用户界面;

3.      在GUI界面点击“configure”设置需要执行的任务,点击“Run”去运行任务。几个任务能够同时运行,且如果一个任务需要文本输出,它能够在GUI界面的中间显示,并保持到磁盘总;

4.      列举一个实例,用1百万条数据比较贝叶斯分类器和决策树分类器,并在GUI界面查看运行结果。输入的命令为:EvaluatePrequential -i 1000000 -f 10000 -l bayes.NaiveBayes;EvaluatePrequential -i 1000000 -f10000 -l trees.HoeffdingTree。需要注意的是,这里使用的prequential评价方法不同于标准的交叉验证技术,这是一个在线评价方法,每次一个新实例到达,首先用新实例去测试和训练。

5.      我们也可以从ARFF文件中获得流数据,可以的数据集可以从第7部分的数据集中得到,相应的命令行如下所示:EvaluatePrequential -s (ArffFileStream -f elec.arff)。另外,我们也可以用概念转化生成流数据。

6.      如果你想继续了解MOA的使用方法,可以看教程1和教程2,以及MOS手册和数据流挖掘文档,有相应的网站链接地址。

3  Details

MOA可以实时处理大数据的流挖掘问题以及大规模的机器学习问题。MOA可以用新的挖掘算法、新的流产生器或者评价方法进行扩展,其目标是为流挖掘社区提供一个标准组建。目前,MOA可以支持流分类、流聚类、离群检测、推荐系统算法。当然,MOA也可以拓展到其他数据流挖掘任务,比如频率模式挖掘、变化检测以及概念漂移。当我们想把一个新的学习算法拓展到MOA平台时,这里提供了两种情况的解决方案,包括添加新的流分类算法及流聚类算法的两种情况。

3.1  分类

网站二级目录,主要讲述了使用GUI进行MOA分类任务,这一部分可以参考第2.1部分启动MOA。另外,此目录下还包括了命令行、分类器、流数据、使用Weka的内容。

3.1.1  命令行

网站三级目录,这一部分用讲述了在命令行使用如何使用命令运行MOA程序,详细情况请看下面几个例子。

第一个例子是用MOA项目训练一个数据流树型分类器并且创建一个模型,最终创建一个名字为model1.moa的包含决策规则的模型,其具体命令如下所示:

java -cp moa.jar -javaagent:sizeofag.jar moa.DoTask\

  LearnModel -l trees.HoeffdingTree \

  -sgenerators.WaveformGenerator -m 1000000 -O model1.moa

对于命令做如下简要解释,其中moa.DoTask类是在命令行运行任务的主类,他接收具有合适参数的任务名,这个任务是一个学习模型任务。对于其他的使用到的参数,做如下简要分析:

u  -l 参数是指定的学习器,在这里是指数据流学习器;

u  -s 参数是指定的需要学习的流数据,在这里是指生成器。WaveformGenerator是指定的,它是一个数据流生成器,能够产生一个识别三种波形的三类学习问题。

u  -m 选项指定了训练学习器的最大数目,在这里为1百万。

u  -O 选择指定了输出结果模型的文档

下一个例子是评价模型的精确度,具体命令如下所示:

java -cp moa.jar -javaagent:sizeofag.jarmoa.DoTask \

 "EvaluateModel -m file:model1.moa \

  -s(generators.WaveformGenerator -i 2) -i 1000000"

评价命令运行以后,会输出如下所示内容:

classified instances = 1,000,000

classifications correct (percent) = 84.474

Kappa Statistic (percent) = 76.711

3.1.2  分类器

网站三级目录,主要简要讲述了在MOA项目中运行的分类器,如下所示:

(1)贝叶斯分类器

NaiveBayes

Naive Bayes Multinomial

(2)决策树分类器

Decision Stump

Hoeffding Tree

Hoeffding Option Tree

Hoeffding Adaptive Tree

(3)元分类器

Bagging

Boosting

Bagging using ADWIN

Bagging using Adaptive-Size Hoeffding Trees

Preceptron Stacking of Restricted Hoeffding Trees

Leveraging Bagging

(4)功能分类器

Perceptron

SGD: Stochastic Gradient Descent

SPegasos

(5)漂移分类器

SingleClassifierDrift

另外,综述了一些静态流分类器和动态流分类器,具体内容如下所示。

(6)静态流分类器:

MajorityClass

NaiveBayes

DecisionStump

HoeffdingTree

HoeffdingOptionTree

AdaHoeffdingOptionTree

HoeffdingAdaptiveTree

OzaBag

OzaBoost

OCBoost

(7)动态流分类器:

OzaBagASHT

OzaBagADWIN

LevragingBag

Perceptron

SGD

Spegasos

SingleClassifierDrift

3.1.3  流数据

网站三级目录,综述了MOA中可用于生成流的类,总结如下所示:

(1)ArffFileStream:读取ARFF文件中的流

参数说明:

-f 加载ARFF文件

-c 数据的类索引,0表示没有,-1表示文件中最后一个属性

(2)ConceptDriftStream:将概念漂移添加到流实例的一个生成器

实例:

ConceptDriftStream -s (generators.AgrawalGenerator-f 7)

  -d(generators.AgrawalGenerator -f 2) -w 1000000 -p 900000

参数说明:

-s 流

-d 概念漂移流

-p 概念漂移转化的中心位置

-w 概念漂移转化的长度

(3)ConceptDriftRealStream:

(4)FilteredStream:过滤器流

(5)AddNoiseFilter:在一个流中添加随机噪音到实例中

(6)generators.AgrawalGenerator:生成10种不同的预定义加载函数中的一种

(7)generators.HyperplaneGenerator:

(8)generators.LEDGenerator:

(9)generators.LEDGeneratorDrift

(10)generators.RandomRBFGenerator:

(11)generators.RandomRBFGeneratorDrift:

(12)generators.RandomTreeGenerator:

(13)generators.SEAGenerator:

(14)generators.STAGGERGenerator:

(15)generators.WaveformGenerator:

(16)generators.WaveformGeneratorDrift:

3.1.4  使用WEKA

到目前为止,我们很容易使用WEKA中的MOA分类器和流以及MOA中的WEKA分类器。在WEKA和MOA中使用增量式分类器最主要的不同是使用的评价方法。Weka分类器可以使用增量式和非增量式的方式,而在MOA中使用Weka分类器需要用到下面的类:

(1)WEKAClassifier:

来自WEKA中使用分类器的一个分类器,举例说明如下所示:

WEKAClassifier -l weka.classifiers.trees.J48

           -w 10000 -i 1000 -f 100000

参数说明:

-l 训练分类器

-w 训练学习器窗口大小

-i 训练学习器第一个窗口大小

-f 模型建立之间的实例数目

(2)SngleClassifierDrift:

在分类器中用wrapper处理概念转移的一个类,举例说明如下所示:

SingleClassifierDrift -d EDDM

    -lweka.classifiers.bayes.NaiveBayesUpdateable

参数说明:

-l 训练分类器

-d 使用的漂移检测方式,有DDM或者是EDDM

在WEKA Explorer、知识流接口或者是命令行接口中,使用weka.classifiers.meta.MOA元分类器,你能够很容易能够把MOA分类器作为增量式分类器。这个元分类器仅仅是MOA分类器的一个封装器,能将WEKA方式转化为MOA中一个。

3.2  流聚类

这一部分讲述了流聚类相关问题,主要包括数据获取和数据生成器、流聚类算法和流聚类评价方法。想要详细了解流聚类的相关内容,可参考这部分内容。

3.3  离群检测

这一部分讲述了在GUI界面中进行MOA离群检测研究的相关内容,详细了解MOA中离群检测的相关内容,可参考这部分内容。

3.4  推荐系统算法

这一部分讲述了在GUI界面中进行MOA推荐系统算法研究的相关内容,详细了解MOA中推荐系统算法的相关内容,可参考这部分内容。

4  Blog

介绍MOA项目开发的主要事件和相关文章,文章是根据发布时间由新到就排序的,感兴趣的读者可以根据自己的喜爱进行相关阅读。

5  Extensions

这一部分首先讲述了拓展MOA的方法,然后综述了新的MOA拓展及当前可以的MOA拓展,下面我们对三方面的拓展做简要分析。

(1)拓展MOA的方法

拓展的命令行方法,即java-cp extension.jar:moa.jar -javaagent:sizeofag.jar moa.gui.GUI,

(2)新的MOA拓展

网络自动聚类2(SAE2)和无标度网络分类(SFNClassife),并给出了相应网站地址。

(3)可用的MOA拓展

当前可以的MOA拓展主要包括频繁模式挖掘、分类与回归、Stream SentimentAnalysis分析,下面我们对可用的MOA拓展这几个方面做简要分析。

频率模式挖掘:

u  MOA-IncMine,计算数据流中的闭频繁项,2008。

u  MOA-AdaGraphMiner,从随时间变化的流中挖掘图模式,Albert Bifet。

u  MOA-Moment,通过流滑动窗口挖掘闭频繁项,2004。

分类与回归:

u  IBLStreams (Instance Based Learner on Streams),在流数据上基于实例的学习器,2012。

u  MOA-TweetReader,Albert Bifet。

u  Classifiers & Drift Detection Methods。

u  MODL split criterion and GK class summary,2012。

u  iOVFDT (Incrementally Optimized Very Fast Decision Tree),2012。

u  Anytime Nearest Neighbor Classifier,2010。

u  Social Adaptive Ensemble 2 (SAE2) and Scale-free Network Classifier(SFNClassifier),网络自动聚类和无标度网络分类,2014.

流情感分析(StreamSentiment Analysis):

u  Framework for Sentiment Analysis of a Stream of Texts (2012 HarvestProject)。

5.1  MOA相关项目

网站第二级目录内容,主要介绍了与MOA相关的项目和包。

(1)ADAMS – a different take onworkflows

the Advanced Data mining And Machine LearningSystem,一个高级的数据挖掘与机器学习系统,是一个能够快速构建和维护现实中复杂的知识流的新型工作流引擎。当前最新版本为 0.4.6,有相应网站的连接地址,2014-06-23。

(2)Framework for Sentiment Analysis ofa Stream of Texts (2012 Harvest Project)

这个项目能够构建一个在线实时系统,用于分析将要带来的文本流数据,并且能够用一个小型应用程序可视化其主要特点,有相应的网站链接地址。

(3)Pocket Data Mining PDM

这个项目主要描述了在移动分布式环境中对流数据的协同挖掘算法,有相应的视频链接地址。

(4)Dariusz Brzeziński MOA extensions

这个包的主要内容是作者DariuszBrzeziński在读硕士期间编写的,主要讲述了MOA分布的一些拓展内容。这些拓展内容主要包括移除属性的过滤器、数据分块评价方法、精确加权聚类可执行算法和精确多样化聚类的可执行性。有相应网站和作者的链接地址。

(5)Thomas Lotze MOA extensions

这个MOA拓展包主要包括一个两类测试集合的预测生成器,有相应网站的链接地址。

(6)ADMIRE project

the Advanced Data Mining and Integration Researchfor Europe (ADMIRE) project,将MOA用于先进数据挖掘和集成研究的欧洲项目,有相应网站的链接地址。

6  Team

这一部分主要是MOA机器学习项目的研究人员的名单,另外目录下包括Publication和Contact两个子目录,下面简单介绍这两个子目录。

6.1  Publications

这一部分主要涵盖了MOA相关的一些发表文章,并且网页上方为几篇文章的简单PPT,想要了解MOA最新的研究成果等,你可以参考这一部分的内容。

6.2  Contact

MOA网站为用户和开发者提供了相应的论坛和邮件地址,如果你想知道更多关于MOA的相关信息,或者是有相关问题需要交流解答等,你可以参考这一部分的内容。

7  Datasets

介绍了4种数据集,并给出了下载地址。

(1)Forest Covertype数据集

UCI Machine Learning Repository Normalized Dataset,Date Donated: 1998-08-01。

(2)Poker-Hand数据集

UCI Machine Learning Repository Normalized Dataset,Date Donated: 2007-01-01。

(3)Electricity数据集

Orignianl Dataset, Normalized Dataset, DataDonated: 2004-5-31。

(4)Airlines Dataset数据集

Data Donated: 2009。


 

参考文献

[1]

http://www.cs.waikato.ac.nz/ml/weka/

[2]

http://moa.cs.waikato.ac.nz/

[3]

http://moa.cms.waikato.ac.nz/blog/

[4]

https://code.google.com/p/moa/

[5]

https://code.google.com/p/moa/source/checkout


你可能感兴趣的:(科研求职)