MOA学习-MOA的实际操作篇
MOA学习-MOA的实际操作篇
1 入门1.1 启动1.2 简单例子
2 分类模型的图形用户界面2.1 练习1:比较两个分类器准确率2.2 练习2 不同的评估方法2.3 练习3 设置具有变化速度的数据流2.4 练习4 针对上例的数据流,比较三种不同的分类器
3 用命令行操作3.1 简易方法3.2 例子13.3 例子23.4 例子33.5 例子4
4 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
4 MOA下载
跳转到以前记录过的博客