2015年10月14日 星期三

weka.classifiers.trees.Id3

weka.classifiers.trees.Id3 為簡單決策樹學習器,
訓練時建好以屬性為判斷節點的決策樹,測試時依屬性值決定案例的流向,遇到樹葉時,案例將歸屬走到該處之多數決類別。
可提供案例集不錯表現值供標竿比較之用。

Id3 學習決策樹時,由樹根往樹葉,每一層皆挑選適當屬性作節點判斷,讓分叉後的類別分布變得更純。
衡量類別分布變純程度,乃計算類別分布的資訊量(entropy),資訊量愈小表示分布愈純,單一類別案例出現愈多。
衡量屬性的類別變純能力,則計算屬性的增量(gain)=套用屬性前的類別分布資訊量 - 套用屬性後的綜合類別分布資訊量。
綜合類別分布資訊量依各分叉案例數作加權匯整。屬性的增量愈大,變純能力愈好。
但為避免過度擬合,挑分叉太多屬性,實際用增量比(gain ratio)=增量/分叉固有資訊量,作屬性挑選依據。
屬性分叉愈多,分叉固有資訊量愈大。只有增量愈大,同時分叉固有資訊量不能太大的屬性,其增量比才會愈大,成為新節點屬性。
建樹過程一直持續到剩餘案例的類別分布只剩純一類,或任一屬性的增量皆負,無法靠添加新屬性節點讓純度提升為止。

> java -cp weka.jar;. weka.classifiers.trees.Id3  -t data\weather.nominal.arff

Id3

outlook = sunny
|  humidity = high: no
|  humidity = normal: yes
outlook = overcast: yes
outlook = rainy
|  windy = TRUE: no
|  windy = FALSE: yes


Time taken to build model: 0.01 seconds
Time taken to test model on training data: 0 seconds

=== Error on training data ===

Correctly Classified Instances          14              100      %
Incorrectly Classified Instances         0                0      %
Kappa statistic                          1
Mean absolute error                      0
Root mean squared error                  0
Relative absolute error                  0      %
Root relative squared error              0      %
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          12               85.7143 %
Incorrectly Classified Instances         2               14.2857 %
Kappa statistic                          0.6889
Mean absolute error                      0.1429
Root mean squared error                  0.378
Relative absolute error                 30      %
Root relative squared error             76.6097 %
Total Number of Instances               14


=== Confusion Matrix ===

 a b   <-- classified as
 8 1 | a = yes
 1 4 | b = no


如下 weather.nominal.arff 案例集的14個案例利用4個文字屬性,預測文字屬性。
outlook temperature humidity windy play
sunny hot high FALSE no
sunny hot high TRUE no
overcast hot high FALSE yes
rainy mild high FALSE yes
rainy cool normal FALSE yes
rainy cool normal TRUE no
overcast cool normal TRUE yes
sunny mild high FALSE no
sunny cool normal FALSE yes
rainy mild normal FALSE yes
sunny mild normal TRUE yes
overcast mild high TRUE yes
overcast hot normal FALSE yes
rainy mild high TRUE no
參考: 1.weka.classifiers.trees.Id3 code | doc

沒有留言: