【機械学習・手法比較】決定木とナイーブベイズを比較してみた。
同じデータを使って、教師有り機械学習手法の 決定木(Decision Tree)とナイーブベイズ(Naive Bayes)を比較してみました。
機械学習用のフリーソフト「Weka」を用いて検証しました。
Contents
データ準備
今回用いたデータは以下のようなもので、条件によってテニスをプレイするかどうかを学習によって判断します。
Class 列が「Y」ならテニスをプレイし、「N」ならプレイしないことを表しています。
決定木(Decision Tree)
まず、決定木で検証します。
Weka の分類器選択で、「trees」->「J48」を選択します。
分類器出力結果は以下のとおりです。
=== 実行情報 ===
スキーマ:weka.classifiers.trees.J48 -C 0.25 -M 2
データ名: play-tennis
インスタンス数:14
属性数:5
Outlook
Temperature
Humidity
Wind
Class
テストモード:10-フォールド 交差検証=== 分類器モデル (学習セット) ===
J48 pruned tree
——————Outlook = sunny
| Humidity = high: N (3.0)
| Humidity = normal: Y (2.0)
Outlook = overcast: Y (4.0)
Outlook = rain
| Wind = weak: Y (3.0)
| Wind = strong: N (2.0)Number of Leaves : 5
Size of the tree : 8
モデルビルド所要時間: 0.01 秒
=== 階層化交差検証 ===
=== Summary ===Correctly Classified Instances 7 50 %
Incorrectly Classified Instances 7 50 %
Kappa statistic -0.0426
Mean absolute error 0.4167
Root mean squared error 0.5984
Relative absolute error 87.5 %
Root relative squared error 121.2987 %
Total Number of Instances 14=== Detailed Accuracy By Class ===
TP Rate FP Rate Precision Recall F-Measure ROC Area Class
0.4 0.444 0.333 0.4 0.364 0.633 N
0.556 0.6 0.625 0.556 0.588 0.633 Y
Weighted Avg. 0.5 0.544 0.521 0.5 0.508 0.633=== Confusion Matrix ===
a b <– classified as
2 3 | a = N
4 5 | b = Y
Precision(適合率、正確性)が約54%、Recall(再現率、網羅性)が約50%となっています。あまり、良い結果ではありませんね。
ちなみに、分類器の木構造は以下のようになりました。
この木構造を見ると、最初に属性「Outlook」で分類するのが、一番情報が整理され、エントロピーが小さくなることなどが分かったりします。
ナイーブベイズ(Naive Bayes)
次に、ナイーブベイズで検証してみました。
Weka の分類器選択で、「bayes」->「NaiveBayes」を選択します。
分類器出力結果は以下のとおりです。
=== 実行情報 ===
スキーマ:weka.classifiers.bayes.NaiveBayes
データ名: play-tennis
インスタンス数:14
属性数:5
Outlook
Temperature
Humidity
Wind
Class
テストモード:10-フォールド 交差検証=== 分類器モデル (学習セット) ===
Naive Bayes Classifier
Class
Attribute N Y
(0.38) (0.63)
=============================
Outlook
sunny 4.0 3.0
overcast 1.0 5.0
rain 3.0 4.0
[total] 8.0 12.0Temperature
hot 3.0 3.0
mild 3.0 5.0
cool 2.0 4.0
[total] 8.0 12.0Humidity
high 5.0 4.0
normal 2.0 7.0
[total] 7.0 11.0Wind
weak 3.0 7.0
strong 4.0 4.0
[total] 7.0 11.0
モデルビルド所要時間: 0 秒
=== 階層化交差検証 ===
=== Summary ===Correctly Classified Instances 8 57.1429 %
Incorrectly Classified Instances 6 42.8571 %
Kappa statistic -0.0244
Mean absolute error 0.4374
Root mean squared error 0.4916
Relative absolute error 91.8631 %
Root relative squared error 99.6492 %
Total Number of Instances 14=== Detailed Accuracy By Class ===
TP Rate FP Rate Precision Recall F-Measure ROC Area Class
0.2 0.222 0.333 0.2 0.25 0.578 N
0.778 0.8 0.636 0.778 0.7 0.578 Y
Weighted Avg. 0.571 0.594 0.528 0.571 0.539 0.578=== Confusion Matrix ===
a b <– classified as
1 4 | a = N
2 7 | b = Y
Precision(適合率、正確性)が約53%、Recall(再現率、網羅性)が約57%となっています。
決定木と比べて、ちょっとだけ精度が高くなっていることが分かります。
以上が決定木とナイーブベイズの比較でした。
関連記事
-
【PyTorch】畳込みニューラルネットワークを構築する方法【CNN】
今回は、PyTorch を使って畳込みニューラルネットワーク(CNN)を構築する方法について紹介しま
-
【機械学習】決定木(decision tree)について。
教師あり学習の一つである決定木(desicion tree)について勉強したことを書いていきます。
-
【Chainer】手書き数字認識をしてみた【Deep Learning】
Chainerを用いて、ニューラルネットワークを構築し、手書き数字認識を行ったときのメモです。
-
【機械学習】 scikit-learn で精度・再現率・F値を算出する方法【Python】
今回は、2クラス分類で Python の scikit-learn を使った評価指標である、精度(P
-
【TensorFlow】GPUを認識しない時の対処方法【Python】
TensorFlow で GPU を認識させようとしたときにハマってしまったので、その対処方法のメモ
-
【機械学習】パーセプトロン(Perceptron)について。
パーセプトロンは、教師あり学習の中でも、入出力モデルベース(eager learning:働き者の学
-
【Weka】欠損データを自動的に補完するフィルタを使ってみた。
機械学習で用いるデータについてです。データは完璧なことに越したことはないが、通常は、ある属性の値が入
-
【転移学習】学習済みVGG16 による転移学習を行う方法【PyTorch】
今回は、PyTorch を使って、学習済みのモデル VGG16 を用いて転移学習をしてみました。
-
【Weka】フリーの機械学習ソフトをインストールする方法。
Weka は、GUIで使えるフリーの機械学習ソフトです。 https://ja.wikiped
-
機械学習の手法のまとめ。
機械学習は、「与えられた入出力事例をモデル化する行為」のことで、ディープラーニングなどで注目を集めて