前回の記事は複数の決定木を作成するランダムフォレストを説明しました。決定木のモデルを分からない人があるかもしれません。今回の記事は決定木を説明します。
決定木とは
決定木((Decision Tree:デシジョン ツリー)は予測や分類を目的として使われる教師あり機械学です。段階的にデータを分割していき、木のような分析結果を出力する」ものです。モデルをツリーで表現できるので、どの説明変数が目的変数にどのように効いているのかが視覚的な手法です。目標は、1つのグループ内のすべての要素が同じカテゴリに属するようにデータをグループに分割することです。
決定木分析の長所
- 説明変数と目的変数にどのように効いているのかが視覚的に分かりやすいというメリットがあります。
- 数値データとカテゴリデータも対応できるモデルです。
- 正規化のデータ準備が必要ではありません。
- 過剰適合しやすく汎化性能が低いです。
- 「分類」にも「回帰」にも利用可能です。
主要な決定木分析のアルゴリズム
複数ある機械学習アルゴリズムによって異なります。以下に、そのアルゴリズムの一覧を記載します。
種類 | 分岐に利用する情報 | 分岐数 | 目的変数の型 | 説明変数の型 | 特徴 |
CHAID | カイ2乗値 | 3分岐以上可能 | カテゴリカル変数 | 数値変数・カテゴリカル変数 | 学習アルゴリズムの中で、最も古いものとして知られています。CARTやC5.0では過学習させてから枝刈りを行いますが、CHAIDでは過学習が起こるまえに木構造の生長を止めます。 |
CART | ジニ係数 | 2分岐まで | 数値変数・カテゴリカル変数 | 数値変数・カテゴリカル変数 | CARTは、C5.0と並び、決定木を構築する代表的なアルゴリズムとして用いられています。CARTでは、過学習を避け、正確な予測モデルを構築するために、いったん木を生長させた後に枝刈りを行います。 |
ID3 | エントロピー | 2分岐まで | カテゴリカル変数 | 数値変数・カテゴリカル変数 | 「繰り返し2分木生成器」と呼ばれる学習アルゴリズムです。最も単純な機械学習アルゴリズムとしても知られています。ヒストリカル変数に対して情報量を用いて、木を構築します。 |
C4.5 | エントロピー | 3分岐以上可能 | カテゴリカル変数 | 数値変数・カテゴリカル変数 | ID3の改善版となる学習アルゴリズムです。メモリ効率が良く、意思決定ツリーが小さく、またboostingと呼ばれる技術により高精度であることが利点です。 |
C5.0 | エントロピー | 3分岐以上可能 | カテゴリカル変数 | 数値変数・カテゴリカル変数 | C4.5の改善版で、決定木を構築する代表的なアルゴリズムのひとつです。C4.5に比べ、より効率的にメモリを使用することでパフォーマンスの改善が行われています。CARTとよく似ていますが、CARTでは常に2分木構造の決定木を生成しますが、C5.0では3分岐以上の木を生成することができます。 |
では、Pythonの scikit-learnで決定木のモデル作成し、dtreevizで可視化します。
from sklearn.datasets import load_iris from sklearn import tree
clf = tree.DecisionTreeClassifier(max_depth=2) # limit depth of tree iris = load_iris() clf.fit(iris.data, iris.target)
from dtreeviz.trees import dtreeviz
viz = dtreeviz( clf, iris.data, iris.target, target_name=’variety’, feature_names=iris.feature_names, class_names=[str(i) for i in iris.target_names], )
viz.view() |
4 thoughts on “決定木分析”
Comments are closed.
Pingback: PythonでCatBoostの解説 | S-Analysis
Pingback: LightGBMの解説 - S-Analysis
Pingback: エクストラツリー(ExtraTree)の解説 - S-Analysis
Pingback: NGBoostの解説 - S-Analysis