【機械学習・手法比較】決定木とナイーブベイズを比較してみた。

公開日: : 最終更新日:2018/07/27 機械学習 , , ,

同じデータを使って、教師有り機械学習手法の 決定木(Decision Tree)ナイーブベイズ(Naive Bayes)を比較してみました。

機械学習用のフリーソフト「Weka」を用いて検証しました。

データ準備

今回用いたデータは以下のようなもので、条件によってテニスをプレイするかどうかを学習によって判断します。

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.0

Temperature
hot 3.0 3.0
mild 3.0 5.0
cool 2.0 4.0
[total] 8.0 12.0

Humidity
high 5.0 4.0
normal 2.0 7.0
[total] 7.0 11.0

Wind
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%となっています。

決定木と比べて、ちょっとだけ精度が高くなっていることが分かります。

以上が決定木とナイーブベイズの比較でした。

関連記事

【Weka】フリーの機械学習ソフトをインストールする方法。

Weka は、GUIで使えるフリーの機械学習ソフトです。 https://ja.wikiped

記事を読む

【画像認識】 Google画像検索結果を取得する方法 【google image download】

今回は、深層学習(DeepLearning)で画像認識をするための画像データの収集を、Google画

記事を読む

【Weka】アソシエーション・ルール(association rule)【機械学習】

フリーの機械学習ツール Weka でアソシエーション・ルール(association rule)を使

記事を読む

【機械学習】 scikit-learn で不正解データを抽出する方法【Python】

Python の scikit-learn ライブラリを使って機械学習でテストデータを識別(2クラス

記事を読む

【深層学習】 TensorFlow と Keras をインストールする【Python】

今回は、Google Colaboratory 上で、深層学習(DeepLearning)フレームワ

記事を読む

【Weka】欠損データを自動的に補完するフィルタを使ってみた。

機械学習で用いるデータについてです。データは完璧なことに越したことはないが、通常は、ある属性の値が入

記事を読む

【機械学習】モンテカルロ法(Monte Carlo method)について。

モンテカルロ法(Monte Carlo method)とは、シュミレーションや数値計算を乱数を用いて

記事を読む

機械学習の手法のまとめ。

機械学習は、「与えられた入出力事例をモデル化する行為」のことで、ディープラーニングなどで注目を集めて

記事を読む

【機械学習】 scikit-learn で精度・再現率・F値を算出する方法【Python】

今回は、2クラス分類で Python の scikit-learn を使った評価指標である、精度(P

記事を読む

【探索】縦型・横型・反復深化法の探索手法の比較。

探索とは、チェスや将棋や囲碁などのゲームをコンピュータがプレイするときに、どの手を指すかを決定するの

記事を読む

【耳コピ】音楽ファイルを楽器ごとに分離する方法【Spleeter:フリー】

今回は、mp3 などの音楽ファイルをボーカル、ベース、ドラムなどの楽器

【Chainer】手書き数字認識をしてみた【Deep Learning】

Chainerを用いて、ニューラルネットワークを構築し、手書き数字認識

【Spyder】引数のあるスクリプトを実行する方法。

Python の統合開発環境(IDE)である Spyder では、簡単

【Anaconda】Prompt 上で Git コマンドを実行する方法。

Anaconda のコマンドプロンプト(Anaconda Prompt

【MT4】日付と時間を指定してPCを自動起動させる方法【DELL】

今回は、日付と時間を指定してPCを自動的に起動させる方法について紹介し

→もっと見る

PAGE TOP ↑