Python scikit-learn4 決定木分析

はじめに

皆さんこんにちは、ALEXです。今回はscikit-learn編「決定木」分析です。これまでirisのデータセットを使ってcikit-learnの基礎的な分析手法を学びました。

scikit-leran2 単回帰分析

scikit-leran3 重回帰分析

scikit-leran4 k-means法

これら4つの使い方を理解していただければscikit-learnの中上級レベルのマシンラーニングに挑戦できる準備がそろったということでしょう。ただ、単純にコードを書くだけではなくて、「どうしてそうなるのだろう?」という考え方を理解することも大切かと思います。

 

決定木分析とは

機械学習では決定木は予測モデルであって、ある事項を観察結果し、その結果からその事項の目標値に関する結論を導くものでる。内部節点は変数に対応し、子節点への枝はその変数が取り得る値を示します。。 葉は、根からの経路によって表される変数値に対して、目的変数の予測値を表します。

データから決定木を作手法を決定木学習 、あるいは単に決定木と呼びます。

決定木による分類モデルはその分類にいたる過程が容易に解釈できるとい利点があるのでため、決定木はデータマイニングでよく用いられます。その場合、決定木は、葉が分類を表し、枝がその分類に至るまでの特徴の集まりを表すような木構造を示します。

決定木のアルゴリズム

  • ID3 (Iterative Dichotomiser 3)
  • C4.5
  • CART (Classification and Regression Trees)
  • CHAID (Chi-squared Automatic Interaction Detection)

Scikit-learnではCART をサポートしています。本記事でもCART を用いたプログラムで解説します。

 

データ読み込み、プログラミング

今回も、scikit-learn 付属のデータセットでIris を使います。がく、花弁の幅、長さを説明変数 (教師データ) 、アヤメの品種目的変数 (正解データ) として扱い、分類する決定木を作成します。

今回のコードの完成版は以下の通りです。

それではセクションごとに解説します。section7のgraphvizのインストールが難所でした。

・scikit-learnのライブラリからアイリスのデータをインポートしてロードします。

 

・pandasモジュールをインポートしてデータをPandasのDaraFrameに格納します。

 

・Scikit-learnライブラリからデータを教師データとテストデータに分けます。比率は8:2とします。

・モデルを構築します。

・ピックルモジュールでデータを直列化します。

・graphvizを使って決定木の画像を生成します。graphviz、pydotplusはpipコマンドでインストールできますが、端末によりインストールできない場合があります。追って、救済策を執筆します。

・画像を表示します。

決定木を作成することができました。

 

まとめ

scikit-learnでIRISのデータから決定木を作成することができました。本当にscikit-learnは便利なツールです。ただし、モデル構築の内容をしっかり理解して使う必要があるかと思います。