MOA学习-MOA的实际操作篇

1 入门

1.1 启动

(1)切换到根目录下的lib目录
在这里插入图片描述
(2)执行启动命令

java -cp moa.jar -javaagent:sizeofag-1.0.4.jar moa.gui.GUI

在这里插入图片描述

1.2 简单例子

比较两种分类器:朴素贝叶斯分类器和决策树。命令如下:

EvaluatePrequential -l bayes.NaiveBayes -i 1000000 -f 1000
EvaluatePrequential -l trees.HoeffdingTree -i 1000000 -f 1000

执行结果如下:
在这里插入图片描述
注:右下角红色代表当前选中的任务,蓝色是之前选中的

2 分类模型的图形用户界面

2.1 练习1:比较两个分类器准确率

// 代码
EvaluateInterleavedTestThenTrain -l bayes.NaiveBayes -i 1000000 -f 10000
EvaluateInterleavedTestThenTrain -l trees.HoeffdingTree -i 1000000 -f 10000

参数解释:

  • EvaluateInterleavedTestThenTrain:使用交错式“测试-训练”评估法
  • -l:代表使用的分类器
  • -i:生成的样本总个数
  • -f:采样频率,这里代表每处理1万个赝本输出一次模型的评估值

注:这里默认的数据流生成器为 RandomTreeGenerator。执行结果如下:

在这里插入图片描述

2.2 练习2 不同的评估方法

  • 周期性地保留1000个样本用做测试
EvaluatePeriodicHeldOutTest -l trees.HoeffdingTree -n 1000 -i 1000000 -f 10000
  • 交错式“测试-训练”评估法
EvaluateInterleavedTestThenTrain -l trees.HoeffdingTree -i 1000000 -f 10000
  • 结合1000个样本的滑动窗口的先序评估法
EvaluatePrequential -l trees.HoeffdingTree -i 1000000 -f 10000

执行结果如下:
在这里插入图片描述
漂移数据库生成器

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

其中 ConceptDriftStream(概念漂移数据流生成器)的参数有:

  • -s:起始的数据流生成器
  • -d:漂移或变化之后的数据流生成器
  • -p:变化发生的中间位置
  • -w:变化发生的时长

2.3 练习3 设置具有变化速度的数据流

EvaluateInterleavedTestThenTrain -l bayes.NaiveBayes -s (generators.RandomRBFGeneratorDrift -s 0.001) -i 1000000 -f 10000
EvaluateInterleavedTestThenTrain -l trees.HoeffdingTree -s (generators.RandomRBFGeneratorDrift -s 0.001) -i 1000000 -f 10000

其中 EvaluateInterleavedTestThenTrain 的参数有:

  • -s:指定流生成器
    其中 RandomRBFGeneratorDrift(RBF生成器,即 radial basic function generator,径向基函数生成器)的参数有:
  • -s:变化速度

结果如下:
在这里插入图片描述

2.4 练习4 针对上例的数据流,比较三种不同的分类器

  • 具有多数类叶子节点的 Hoeffding 树
EvaluateInterleavedTestThenTrain -l (trees.HoeffdingTree -l MC) -s (generators.RandomRBFGeneratorDrift -s 0.001) -i 1000000 -f 10000

其中,HoeffdingTree 参数 -l MC:代表多数类叶子节点

  • Hoeffding 自适应决策树算法
EvaluateInterleavedTestThenTrain -l trees.HoeffdingAdaptiveTree -s (generators.RandomRBFGeneratorDrift -s 0.001) -i 1000000 -f 10000
  • 基于10个Hoeffding决策树的ADwin装袋算法(OzaBagAdwin)
EvaluateInterleavedTestThenTrain -l meta.OzaBagAdwin -s (generators.RandomRBFGeneratorDrift -s 0.001) -i 1000000 -f 10000

执行结果如下:
在这里插入图片描述

3 用命令行操作

3.1 简易方法

复制图形界面中Configure配置栏的文字。

举例:假设需要运行的任务是:
EvaluatePrequential -l trees.HoeffdingTree -i 1000000 -f 10000

则可以直接写:
java -cp moa.jar -javaagent:sizeofag-1.0.4.jar moa.DoTask “EvaluatePrequential -l trees.HoeffdingTree -i 1000000 -f 10000”

3.2 例子1

第一个任务是 LearnModel(学习模型)。-l 参数指定学习模型,在这里是 HoeffdingTree类。-s参数指定需要从中学习的数据流,这里是generators.WaveformGenerator,这个数据流生成器产生了一个3类学习问题,即需要识别3种类型的波形。-m 可选参数指定了最多能用来训练的样本数量,这里100万个样本。-O 可选参数指定了模型最终导出的文件。

java -cp moa.jar -javaagent:sizeofag-1.0.4.jar moa.DoTask LearnModel -l trees.HoeffdingTree -s generators.WaveformGenerator -m 1000000 -O model1.moa

3.3 例子2

把模型在一个不同的随机种子生成的样本上运行,然后评估其准确率。EvaluateModel 任务的参数加载上一步生成的模型,用2号随机种子生成一个新的波,然后在100万个数据样本上测试。

java -cp moa.jar -javaagent:sizeofag-1.0.4.jar moa.DoTask “EvaluateModel -m file:model1.moa -s (generators.WaveformGenerator -i 2) -i 1000000”

3.4 例子3

将例子1和例子2合并,避免产生一个额外的文件。

java -cp moa.jar -javaagent:sizeofag-1.0.4.jar moa.DoTask “EvaluateModel -m (LearnModel -l trees.HoeffdingTree -s generators.WaveformGenerator -m 1000000) -s (generators.WaveformGenerator -i 2) -i 1000000”

3.5 例子4

EvaluatePeriodicHeldOutTest 任务在训练模型的过程中一直周期性地使用保留测试模型性能,并保存结果快照。使用 WaveformGenerator 产生的数据来训练 HoeffdingTree 分类器,把最初的10万个样本用于测试,把1000万个样本用于训练,并且每处理100万个样本进行一次测试,最后导出结果到一个csv文件。

java -cp moa.jar -javaagent:sizeofag-1.0.4.jar moa.DoTask “EvaluatePeriodicHeldOutTest -l trees.HoeffdingTree -s generators.WaveformGenerator -n 100000 -i 10000000 -f 1000000” > dsresult.csv

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章