よっしーの私的空間

機械学習を中心に興味のあることについて更新します

PDP/ICEを使用した回帰問題の機械学習モデルの大局的解釈方法

pdpboxライブラリを使用して、回帰問題を解いた機械学習モデルの大局的解釈を行う。

1.データセット

今回はsklearnのボストン住宅価格データセットを例に実装してみる。データセットの概要は以下の通り。

  • 目的変数:ボストンの地域別住宅価格
  • 説明変数:以下13個の特徴量1
特徴の名前 説明
CRIM 人口 1 人当たりの犯罪発生数
ZN 25,000 平方フィート以上の住居区画の占める割合=「広い家の割合」
INDUS 小売業以外の商業が占める面積の割合
CHAS チャールズ川に関わるダミー変数 (1: 川の周辺, 0: それ以外)
NOX 一酸化窒素の濃度
RM 住居の平均部屋数
AGE 1940 年より前に建てられた物件の割合 =「古い家の割合」
DIS ボストン市の5 つの雇用施設からの距離 (重み付け済) =「主要施設への距離」
RAD 高速道路へのアクセスのしやすさ
TAX $10,000 ドルあたりの固定資産税率
PTRATIO 町毎の生徒と教師の比率
B 町毎の黒人 (Bk) の比率
LSTAT 低所得者人口の割合

2.実装

2.1.Lightgbmを用いた簡易的なモデルを作成

from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
import pandas as pd
import lightgbm as lgb

boston = load_boston()
x_train, x_test, y_train, y_test = train_test_split(boston.data, boston.target, test_size=0.3)

#LGB用のデータに変形
lgb_train = lgb.Dataset(x_train, y_train)
lgb_eval = lgb.Dataset(x_test, y_test)

params = {
    'objective': 'regression',
    'boosting_type': 'gbdt',
    'metric': 'mae'
    }

model = lgb.train(
    params = params, 
    train_set = lgb_train,
    valid_sets= [lgb_eval,lgb_train],
)

2.2.PDP/ICEの実装

# pdpboxはpandas.DataFrameしか受け付けない
test_df = pd.DataFrame(x_test, columns=boston.feature_names)

# 特徴量毎にpdp/iceを描画
for col in train_df.columns:
    pdp_boston = pdp.pdp_isolate(
        model=model, dataset=test_df, model_features=test_df.columns, feature=col
    )
    fig, axes = pdp.pdp_plot(pdp_boston, col, plot_lines=True, frac_to_plot=1.0, plot_pts_dist=True)

特徴量毎に以下のような図が描画される。


上図より、一酸化窒素の濃度が0.7までは住宅価格にあまり影響がなく、0.7以上あたりから住宅価格を下げる要因と機械学習モデルが判断していることが分かる。

2.3.PDP(2変数)の実装

ついでに2変数の相互作用を等高線として図示する方法もまとめておく。

import itertools
columns = test_df.columns
combinations = itertools.combinations(columns, 2)

for combination in combinations:
    interaction = pdp.pdp_interact(model=model, dataset=test_df, model_features=test_df.columns, features=combination)
    fig, axes = pdp.pdp_interact_plot(pdp_interact_out=interaction, feature_names=combination)

特徴量の組み合わせ毎に以下のような図が描画される。


上図より、固定資産税率が350を超えたあたりから住宅価格にあまり影響がなく、犯罪発生率の方が影響していることが分かる。