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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章