Help us understand the problem. What is going on with this article?

RandomForest も dtreeviz してみる

More than 1 year has passed since last update.

決定木は人間にとって判断基準がわかりやすい判別・回帰の手法です。
そのため判断基準を可視化したくなることが多いのですが、dtreeviz というとてもわかりやすい可視化ライブラリが公開されたそうなので、決定木系の RandomForest で簡単に試してみます。

決定木について知りたい方は下記の記事が参考になります。
https://qiita.com/3000manJPY/items/ef7495960f472ec14377

実行環境

Google Colaboratory を使用します。

まず決定木で試す

下記のページを参考にさせていただいており、そのままですが決定木を実行してみます。
https://qiita.com/calderarie/items/e4321bff95ac3042601b

まず dtreeviz をインストールします。

! pip install dtreeviz

scikit-learn 付属の iris のデータセットを使用します。3種類の花ごとの花弁の長さなどのデータとなっており、特徴をみて種類を分類できるかを試すことができます。

from sklearn.datasets import load_iris
from sklearn import tree
from dtreeviz.trees import dtreeviz

iris = load_iris()
clf = tree.DecisionTreeClassifier(max_depth=2)
clf.fit(iris.data, iris.target)

これで決定木を得ることができました。
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

image.png

花弁の幅を条件にして判別が行われ、setosa, versicolor と分類が定められる決定木の内容が可視化されます。

RandomForest の場合

RandomForest は複数の決定木を使用して、学習データ以外のデータに対する精度を向上させる手法です。
以下が参考になります。

https://techblog.gmo-ap.jp/2017/10/02/%E6%A9%9F%E6%A2%B0%E5%AD%A6%E7%BF%92%E3%81%AE%E5%AE%9F%E8%B7%B5%E5%85%A5%E9%96%80%E3%83%BCrandom-forest%E3%81%AE%E8%A6%81%E7%B4%84/

といっても実行するだけなら簡単です。

from sklearn.ensemble import RandomForestClassifier

clf = RandomForestClassifier(n_estimators=150)
clf.fit(iris.data, iris.target)

複数の決定木がありますが、今回は先頭の決定木を可視化します。

estimators = clf.estimators_
viz = dtreeviz(
    estimators[0],
    iris.data, 
    iris.target,
    target_name='variety',
    feature_names=iris.feature_names,
    class_names=[str(i) for i in iris.target_names],
) 

viz

出力したい決定木を決めれば同様に出力できます。

image.png

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした