MOA学习-分类器实操学习篇

MOA学习-分类器实操学习篇

本节内容将通过图形界面。使用MOA来学习几种分类器模型,并以不同方式对其进行评估。初始MOA GUI窗口下图所示。

在这里插入图片描述

1 练习1

点击 Configure 设置一个任务。可以通过最上方的下拉菜单改变任务类型,我们这里是 LearnModel

可以看见其默认的 learner 学习模型是 NaiveBayes ,可以点击 Edit ,从顶部的下拉菜单中选择不同的学习模型,但是现在保留 NaiveBayes

再往下,是 stream 数据流,默认是RandomTreeGenerator,用对应的 Edit 改成 WaveformGenerator 数据流,从波形的集合中产生实例。将实例的数量从10 000 000改成1 000 000。最后指定 taskResultFile ,例如 modelNB.moa ,MOA模型会把模型输出到该文件。
在这里插入图片描述
现在点击 OK ,然后点击 Run 启动这项任务。中间面板会显示文字输出,这个任务中每过10 000输出一次。刚刚运行的任务是:

LearnModel -l bayes.NaiveBayes
	 -s generators.WaveformGenerator
	 -m 1000000 -O modelDB.moa

提示如果你快速连续点击Run两次,就会生成同时运行的任务。

点击 Configure ,把学习模型改成 Hoeffding 树,并且输出到文件 modelHT.moa

LearnModel -l trees.HoeffdingTree
	 -s generators.WaveformGenerator
	 -m 1000000 -O modelHT.moa

然后运行,现在有两个模型存储在磁盘,即 modelNB.moamodelHT.moa

接下来用 WaveformGenerator 生成1 000 000个新实例来评估朴素贝叶斯模型,可以通过以下任务命令完成:

EvaluateModel -m file:modelDB.moa
	 -s (generators.WaveformGenerator -i 2) -i 1000000

-i 2 给波形生成器设置了一个不同的随机种子。在 Configure 面板中设置其他参数,在顶部,吧任务设置成 EvaluateModel ,然后把数据流模型配置成 WaveformGenerator ,以及把 instanceRandomSeed 设置成2,但令人遗憾的是暂时无法从文件中读取模型。

问题还是可以解决的。先点击 确定 返回到MOA主页面,点击右键选择 Copy configuration to clipborad ,编辑内容继续写下 -m file:modelDB.moa ,然后选择 Enter configuration 并把剪切板的内容粘贴到新的配置中,然后执行。

在这里插入图片描述
再将 file:modelHT.moa替换,同样地方法再次运行。
在这里插入图片描述
很明显看到:

  • NaiveBayes 模型正确分类的比例是80.4%左右
  • Hoeffding 树模型的正确分类的比例是84.4%左右
  • 根据Kappa统计,Hoeffding 的性能更好

2 练习2

在MOA中可以嵌套命令行,比如,LearnModelEvaluateModel 的步骤可以合并为一行,避免额外产生一个文件。但是只能编辑 Configure 命令行。

EvaluateModel -m (LearnModel -l meta.OzaBag 
	-s generators.WaveformGenerator -m 1000000) 
	-s (generators.WaveformGenerator -i 2) -i 1000000

通过复制该命令,点击右键选择 Enter configuration ,将其粘贴为 Configure 文本。
在这里插入图片描述
OzaBag 的正确率是 85.8%左右。

3 练习3

EvaluatePeriodicHeldOutTest -l trees.HoeffdingTree 
	-s generators.WaveformGenerator 
	-n 100000 -i 10000000 -f 1000000

其中,EvaluatePeriodicHeldOutTest 任务训练模型时,在一个保留测试集上周期性地截取性能快照。上面命令是在 WaveformGenerator 的 10 000 000 个样本上,训练 HoeffdingTree 分类器。首先保留前 100 000 个样本作为测试集;之后每 1 000 000个样本在保留集上进行一次测试。
在这里插入图片描述
最终的准确率是 84.9% ,最终的Kappa统计是77.35%

4 练习4

先序评估法首先在任一实例上评估,然后用作训练。这里是一个 EvaluatePrequential 任务,在 WaveformGenerator 的 1 000 000 个样本上训练一个 HoeffdingTree 分类器,之后每 10 000 个样本创建一个 100 行的csv文件:

EvaluatePrequential -l trees.HoeffdingTree 
	-s generators.WaveformGenerator 
	-i 1000000 -f 10000
EvaluatePrequential -l bayes.NaiveBayes 
	-s generators.WaveformGenerator 
	-i 1000000 -f 10000

选择 HoeffdingTree 学习曲线,显示为红色:
在这里插入图片描述

  • 可以看到 Hoeffding 树的性能在前面会低于朴素贝叶斯,并不是一直领先。
  • Hoeffding 树的最终Kappa统计是 75.89%。
  • 朴素贝叶斯的最终Kappa统计是 70.45%。

5 练习5

默认情况下,先序评估法显示具有1000个实例的滑动窗口的性能,从而创建了一个跳跃的锯齿状的学习曲线。在 Configure 面板中的评估器:你可以看到使用的是 WindowClassificationPerformanceEvaluator,窗口大小为1000。作为替代,选择 BasicClassificationPerformanceEvaluator,从数据流的第一样本开始,使用每一个样本进行评估:

EvaluatePrequential -l trees.HoeffdingTree 
	-s generators.WaveformGenerator 
	-e BasicClassificationPerformanceEvaluator 
	-i 1000000 -f 10000
EvaluatePrequential -l bayes.NaiveBayes 
	-s generators.WaveformGenerator 
	-e BasicClassificationPerformanceEvaluator 
	-i 1000000 -f 10000

在这里插入图片描述
可以看到这项任务肯定能够保证产生一个平滑曲线,因为随着时间发展,单个样本对于整体平均的作用越来越不显著。

  • 同样地,Hoeffding 树的性能在前面会低于朴素贝叶斯,并不是一直领先。
  • Hoeffding 树的最终Kappa统计是 74.50%。
  • 朴素贝叶斯的最终Kappa统计是 70.72%。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值