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