-Python- 決定木

決定きは,データを複数のクラスに分類する教師あり学習の1つで,樹木モデルという木構造を利用した分類アルゴリズムです.樹木モデルは,分類を実現するための分岐処理の集まりで,各分岐では分類対象データの属性に従って分類が行われます.
決定木の学習は,学習データから樹木モデルを生成することです.何を基準に分岐を行うかで,決定木はいくつかの手法に分類することができます.例えば,分類後の集合の不純度に着目したCARTや,情報量(エントロピー)に基づいて決定するC4.5/C5.0などがあります.

決定木のメリット

  • 分類ルールを樹木モデルとして可視化できるので,分類結果の解釈が比較的容易
  • 生成した分類ルールを編集することができる
  • 学習のための計算コストが低い

決定木のデメリット

  • 過学習となる傾向がある
  • 扱うデータの特性によっては樹木モデルを生成することが難しい


以前の投稿においても決定木で分類器を作っていましたが,分類器生成時にパラメータを指定していませんでした.そこで,下記のようにパラメータを設定してみます.以前のソースコード

 
classifir = tree.DecisionTreeClassifier()
 

を,以下のように書き換えます.

 
classifir = tree.DecisionTreeClassifier(max_depth = 3)
 

上記の変更では,樹木モデルの最大深さを示す max_depth を指定しています.変更前(デフォルト)ではCARTが用いられます.なお, criterion = "entropy" と指定するとC4.5が用いられます.

上記のように修正したスクリプトを実行すると以下のようになります.

Accuracy: 
 0.8601398601398601
 
Confusion matrix: 
 [[60 15]
 [ 5 63]]
 
Precision: 
 0.9230769230769231
 
Recall: 
 0.8
 
F-measure: 
 0.8571428571428571

決定木のデメリットである過学習を避けるためには,決定木単独で利用せずに,アンサンブル学習を組み合わせて使用されることが多々あります.