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