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

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

  • 1 练习1
  • 2 练习2
  • 3 练习3
  • 4 练习4
  • 5 练习5

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

MOA学习-分类器实操学习篇_第1张图片

1 练习1

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

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

再往下,是 stream 数据流,默认是RandomTreeGenerator,用对应的 Edit 改成 WaveformGenerator 数据流,从波形的集合中产生实例。将实例的数量从10 000 000改成1 000 000。最后指定 taskResultFile ,例如 modelNB.moa ,MOA模型会把模型输出到该文件。
MOA学习-分类器实操学习篇_第2张图片
现在点击 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 并把剪切板的内容粘贴到新的配置中,然后执行。

MOA学习-分类器实操学习篇_第3张图片
再将 file:modelHT.moa替换,同样地方法再次运行。
MOA学习-分类器实操学习篇_第4张图片
很明显看到:

  • 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 文本。
MOA学习-分类器实操学习篇_第5张图片
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个样本在保留集上进行一次测试。
MOA学习-分类器实操学习篇_第6张图片
最终的准确率是 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 学习曲线,显示为红色:
MOA学习-分类器实操学习篇_第7张图片

  • 可以看到 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

MOA学习-分类器实操学习篇_第8张图片
可以看到这项任务肯定能够保证产生一个平滑曲线,因为随着时间发展,单个样本对于整体平均的作用越来越不显著。

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

你可能感兴趣的:(机器学习)