見出し画像

特徴量の重要度

scikit-learnのデフォルトで付いてくるランダム木の特徴量解析はあてにならないことが知られている。代わりになる手法として、特徴量を表す列をランダムな順に並べ替えて、評価値の差を見ることによる方法(permutation method)がある。自分で実装しても簡単だが、可視化付きでやってくれるパッケージがある。

https://github.com/parrt/random-forest-importances

graphvizとrfmimpをインストールする。

!sudo apt install graphviz
!pip install rfpimp

例題は演習で最初につかう広告の効果の回帰分析だ。データを読んでおく。

import pandas as pd 
data = pd.read_csv('http://logopt.com/data/Advertising.csv', index_col =0) 
X = data[['TV', 'Radio', 'Newspaper']]
y = data['Sales']
X.head()

>>>
TV Radio Newspaper
1 230.1 37.8 69.2
2 44.5 39.3 45.1
3 17.2 45.9 69.3
4 151.5 41.3 58.5
5 180.8 10.8 58.4

モジュール読み込み。

from rfpimp import *
from sklearn.ensemble import RandomForestRegressor

可視化する。

rf = RandomForestRrgressor(n_estimators=100,
min_samples_leaf=5,
n_jobs=-1,
oob_score=True)
rf.fit(X, y)

imp = importances(rf, X, y, n_samples=-1)
viz = plot_importances(imp)
viz.view()

とまあこれだけだ。冒頭のような絵が描画され、テレビが重要で、次いでラジオ、新聞は効かないことがわかる。




この記事が気に入ったらサポートをしてみませんか?