LoginSignup
1
2

More than 1 year has passed since last update.

機械学習結果を解釈する(PFI編)

Posted at

機械学習を解釈する

機械学習を利用して仕事をしているが、例えばテーブルデータに対して、何らかのモデルを適用して、分類や回帰を行うこと自体は、ライブラリの助けを借りればそれほど難しくない。ただ、予測精度がいくら高くても、「どうしてこうなるの?」「この特徴量を動かしたら結果がどのように変わるの?」という質問には答えにくいところがある。この「結果に対する理由づけ」は近年重要になってきており、私はその技術を学びたかった。

そのとき、出会ったのがこの本。

めっちゃ良いので、ぜひ読んでください。これでこのエントリを終えても良いのだが、自分の勉強のため、その中で一番最初に出てくる PFI (Permutation Feature Importance) について、簡単に説明を試みる。

Permutation Feature Importance とは

例えば次のようなデータを考えてみる。

X1 X2 Y
1 3 10
2 2 20
3 5 30
4 3 40
5 1 50

X1, X2 から Y を予測するモデルを構築する。
実際にはデータはもっとたくさんあるものと思って欲しい。
Y = 10 * X1 という関係がありそうだ。一方で、X2 と Y の関係ははっきりしない。

このとき、このデータに対してロジスティック回帰なり、ランダムフォレストなり、Gradient Boosting なりの機械学習モデルを適用すれば、おそらくそのモデルは X1 を重視し、X2 をほとんど無視して Y を予測しようとするだろう。

そのことをどう確かめたらよいか?

X1,X2といった説明変数を1つずつランダムにシャッフルして、予測を行い、正解データとの食い違い(損失)を見るというのが一つの方法である。

たとえば X2 を次のようにシャッフルする。

X1 X2 Y
1 2 10
2 4 20
3 1 30
4 5 40
5 3 50

だが、もともとX2とYの関係ははっきりしなかったので、こうやってランダムにシャッフルしたうえで予測を行なっても、正解データとの食い違い具合(損失)はたいして変わらないと予想できる(実際に試してみるとそうなる)。

一方でX1を次のようにシャッフルするとどうなるか?

X1 X2 Y
2 2 10
5 4 20
1 1 30
3 5 40
4 3 50

いままで Y = 10 * X1 という関係があるように見えていて、それに基づいてモデルが作られていたのに、X1 の並びがランダムになったので、この関係を使って Y を予測できなくなってしまった。そのため、予測時に正解データの食い違い具合(損失)は大きくなることが予想できる(実際そうなる)。

こうやって、説明変数一つ一つについて、ランダムシャッフル前後の損失を比較して、その差(あるいは比)が大きいものほど、予測上、重要な変数だと考えることができる。

これが、PFI(Permutation Feature Importance) である。直感的でわかりやすい。

終わりに

数式やコードを持ち出さずに簡単な言葉だけでアイディアを説明してみた。繰り返しになるが、詳細は最初に紹介した本を読んでみてほしい。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2