weka.classifiers.functions.MultilayerPerceptron 為多層感知機學習器。
使用具備輸入層、隱藏層、及輸出層的類神經結構,以倒傳遞法學習各層之間的連結權重,於輸出層進行類別或數值預測。
若遇名目屬性,將先進行二值化處理再學習及預測。
參數說明:
-L <learning rate> 依據下降梯度的多少百分比更新權重,稱為學習速率,介於[0,1]之間,預設值 0.3。
-M <momentum> 參考上回權重更新量的多少百分比更新本回權重,稱為更新動量,介於[0,1]之間,預設值 0.2。
-N <number of epochs> 訓練迭代次數,預設值 500。
-V <percentage size of validation set> 連續變差終止訓練用的驗證集大小比例,介於[0,100],預設值0。
-S <seed> 亂數產生器種子,值應>=0,預設值為0。
-E <threshold for number of consequetive errors> 網路終止前驗證集允許的連續錯誤門檻,值應>0,預設值20。
-G 開啟圖形介面,預設不開啟圖形介面。
-A 不要自動建立網路連結,只在開啟圖形介面(-G)才有作用。
-B 不要自動使用【名目轉成二元】屬性過濾器,預設使用【名目轉成二元】屬性過濾器。
-H <comma seperated numbers for nodes on each layer> 建立網路的隱藏層。
0表示不要隱藏層,預設值是a。決定隱藏層逐層的節點個數值可以是
i表示輸入層屬性個數, o表示輸出層類別數, t表示i+o總數, a表示i及o平均值。
-C 不要對數值類別輸出作正規化,預設數值類別輸出會作正規化
-I 不要對屬性輸入值作正規化,預設屬性輸入值會作正規化,名目屬性值將介於[-1,1]之間
-R 不允許重設網路
-D 學習速率會衰減,預設不衰減
>java -cp weka.jar;. weka.classifiers.functions.MultilayerPerceptron -t data\weather.numeric.arff
-L 0.3 -M 0.2 -N 500 -V 0 -S 0 -E 20 -H a
Options: -L 0.3 -M 0.2 -N 500 -V 0 -S 0 -E 20 -H a
Sigmoid Node 0
Inputs Weights
Threshold -3.248835441689124
Node 2 5.706344521860183
Node 3 2.443270263208691
Node 4 2.6425576499015655
Node 5 2.5103414057156117
Sigmoid Node 1
Inputs Weights
Threshold 3.247940047055843
Node 2 -5.7047440571074866
Node 3 -2.3959635449403223
Node 4 -2.61941341516743
Node 5 -2.57892674553124
Sigmoid Node 2
Inputs Weights
Threshold -1.4298110453038173
Attrib outlook=sunny 1.2796074137730873
Attrib outlook=overcast 2.5993304643376662
Attrib outlook=rainy -2.482189408449902
Attrib temperature -0.991784436689735
Attrib humidity -4.132575972523981
Attrib windy -0.8030823939514043
Sigmoid Node 3
Inputs Weights
Threshold -0.7740672340804496
Attrib outlook=sunny -1.9100370742566128
Attrib outlook=overcast 2.3822068707682824
Attrib outlook=rainy 0.2349921312574373
Attrib temperature -0.8639638424331715
Attrib humidity -0.8117295111072012
Attrib windy 3.0923597946788437
Sigmoid Node 4
Inputs Weights
Threshold -0.7812523749731839
Attrib outlook=sunny -2.0149350612947305
Attrib outlook=overcast 2.4850160661055654
Attrib outlook=rainy 0.2429746779978898
Attrib temperature -0.9010443938018432
Attrib humidity -0.8326891162034927
Attrib windy 3.255120039808521
Sigmoid Node 5
Inputs Weights
Threshold -0.7574102682219431
Attrib outlook=sunny -1.9605922799976891
Attrib outlook=overcast 2.481930135373603
Attrib outlook=rainy 0.2838381715677166
Attrib temperature -0.8613350411165092
Attrib humidity -0.775628050353589
Attrib windy 3.169910152935346
Class yes
Input
Node 0
Class no
Input
Node 1
註: 學到的神經網路如下圖,其中,黃色兩個節點由上而下分別為Node 0, Node 1。
紅色4個節點由上而下分別為Node 2, Node 3, Node 4, Node 5。
隱藏層會有4個節點的理由為參數-H a,而 a=(i + o)/2=(6 + 2)/2=4。
Time taken to build model: 0.1 seconds
Time taken to test model on training data: 0.01 seconds
=== Error on training data ===
Correctly Classified Instances 14 100 %
Incorrectly Classified Instances 0 0 %
Kappa statistic 1
Mean absolute error 0.036
Root mean squared error 0.0454
Relative absolute error 7.7533 %
Root relative squared error 9.4618 %
Total Number of Instances 14
=== Confusion Matrix ===
a b <-- classified as
9 0 | a = yes
0 5 | b = no
=== Stratified cross-validation ===
Correctly Classified Instances 11 78.5714 %
Incorrectly Classified Instances 3 21.4286 %
Kappa statistic 0.5116
Mean absolute error 0.265
Root mean squared error 0.4627
Relative absolute error 55.6497 %
Root relative squared error 93.7923 %
Total Number of Instances 14
=== Confusion Matrix ===
a b <-- classified as
8 1 | a = yes
2 3 | b = no
如下 weather.numeric.arff 案例集的14個案例利用2個文字屬性及2個數字屬性,預測文字屬性。
outlook | temperature | humidity | windy | play |
sunny | 85 | 85 | FALSE | no |
sunny | 80 | 90 | TRUE | no |
rainy | 65 | 70 | TRUE | no |
sunny | 72 | 95 | FALSE | no |
rainy | 71 | 91 | TRUE | no |
overcast | 83 | 86 | FALSE | yes |
rainy | 70 | 96 | FALSE | yes |
rainy | 68 | 80 | FALSE | yes |
overcast | 64 | 65 | TRUE | yes |
sunny | 69 | 70 | FALSE | yes |
rainy | 75 | 80 | FALSE | yes |
sunny | 75 | 70 | TRUE | yes |
overcast | 72 | 90 | TRUE | yes |
overcast | 81 | 75 | FALSE | yes |
參考:
1.weka.classifiers.functions.MultilayerPerceptron
code |
doc
沒有留言:
張貼留言