決定木 (Decision Tree)



機械学習

分類(classification)

ニューラルネットワーク(NN)

クラスタリング

強化学習

敵対的生成ネットワーク

公開日:2020/2/22         

前提知識
 ・pythonとは


決定木(Decision Tree)の使い方を実例を踏まえて説明します。題材は、ある昆虫の身長と体重からその個体がオスかメスかを分類します。



■決定木の考え方
決定木は一言でいうと条件分岐のフローチャートです。例えば以下の様に分布している2種類のデータをうまく分類したいと思います。



これは以下の様に複数の条件分けによって分類する事ができます。


■pythonによるシミュレーション
scikit-learnというデータ分析に特化したライブラリの中にDecision treeがありますので、それを使います。

 ・pythonバージョン:Ver3.8で確認
 ・必要ライブラリ:numpy,matplotlib,scikit-learn (インストール方法はこちら)
 ・必要ファイルtree.zip(プログラムファイル, 訓練データ)

結果は以下のとおり。一応分類はできましたが形はいびつで、オーバーフィッティング(過学習)している状態であると言えます。



■決定木適合パラメータ
過学習を防ぐ等、より最適に分類するためのパラメータを設定する事ができます。また、決定木を可視化できるようにもプログラムを修正しました。

 ・必要ライブラリ:pydotplus , graphviz (pipでインストールしてもエラーが発生する場合はこちら)
 ・プログラムファイルtree2.zip(プログラムファイル)
 ・パラメータ
  criterion='entropy' 分割手法をエントロピーに設定
  max_depth=4   決定木の深さの最大値を4

結果は以下のとおり。過学習を減らした形になりましたが正しく分類できないデータもうまれました。


また、決定木を可視化した結果は以下のとおり。










サブチャンネルあります。⇒ 何かのお役に立てればと

関連記事一覧



機械学習

分類(classification)

ニューラルネットワーク(NN)

クラスタリング

強化学習

敵対的生成ネットワーク