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

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

同じデータを使って、教師有り機械学習手法の 決定木(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.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%となっています。

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

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

関連記事

【PyTorch】畳込みニューラルネットワークを構築する方法【CNN】

今回は、PyTorch を使って畳込みニューラルネットワーク(CNN)を構築する方法について紹介しま

記事を読む

【探索】ダイクストラ法・最良優先探索・Aアルゴリズムの比較。

縦型探索や横型探索では、機械的に順序を付け、最小ステップでゴールを目指します。 つまり、

記事を読む

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

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

記事を読む

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

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

記事を読む

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

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

記事を読む

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

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

記事を読む

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

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

記事を読む

【機械学習】決定木(decision tree)について。

教師あり学習の一つである決定木(desicion tree)について勉強したことを書いていきます。

記事を読む

【転移学習】学習済みVGG16 による転移学習を行う方法【PyTorch】

今回は、PyTorch を使って、学習済みのモデル VGG16 を用いて転移学習をしてみました。

記事を読む

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

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

記事を読む

【Cubase】イヤホンから音がでないときの対処方法。

Cubase でイヤホンから音がでなくなったときの対処方法のメモです。

【Cubase】特定のトラックを無効にする方法。

今回は、Cubaseで特定のトラックのみを無効にする方法について紹介し

【転移学習】学習済みVGG16 による転移学習を行う方法【PyTorch】

今回は、PyTorch を使って、学習済みのモデル VGG16 を用い

【PyTorch】畳込みニューラルネットワークを構築する方法【CNN】

今回は、PyTorch を使って畳込みニューラルネットワーク(CNN)

【PyTorch】ニューラルネットワークを構築する方法【NN】

今回は、PyTorch を使って、ニューラルネットワーク(NN)を構築

→もっと見る

PAGE TOP ↑