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%。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章