人気記事なぜこの記事を書いたのか?決定木をベースにしたアルゴリズムのほとんどに特徴量重要度という指標が存在する。データに対する知識が少ない場合はこの指標を見て特徴量に対する洞察深めることができる。KaggleではEDAのときにとりあえず重要度を見てみるなんてこともするようだ。この特徴量重要度にはバイアスが存在していて、特定の条件下では信用出来ないことがある。いった条件を広く知ってほしいということでこの記事を書いた。この記事では人工データを生成しバイアスを再現してみた。いったバイアスに対処したという論文を見つけたので軽く紹介する。おまけとしてgainベース以外の特徴量重要度についても紹介する。決定木の学習方法を理解している不安な方はこちらに目を通してほしい(わからなくなった時点でok)限定する枠組みここでは以下の枠組みに限定して特徴量重要度のバイアスを確認した。決定木をベースにした判別器としてランダムフォレストを採用(仕組みが簡単なため)LightGBMといった手法でもバイアスは生じると思いますが誰か検証してくると嬉しい(ついでにどうやって特徴量重要度を算出しているのとかも知りたい)特徴量重要度とは?実験的にバイアスを検証する前に特徴量重要度がどうやって算出されているのか復習する。知っている方は飛ばしてもらって構わない。決定木を用いる機械学習の手法では各特徴量が判別(もしくは回帰)にどれぐたい寄与したかの目安として特徴量重要度を算出できる。これから先、決定木の学習方法、ランダムフォレストの概要については知っている前提で話を進めるので、不安な方は一回こちらの記事に目を通してほしいqiita.com決定木の学習が終わった時点ですべてのノードについて、不純度、どの特徴量で分割したか、を記録している。これらを使って決定木は特徴量重要度を計算している。scikit-learnの決定木の場合について特徴量重要度の計算方法をもう一度復習しておこう。nodeで分割したときの改善度としておこう。以下のように計算される。nodeにおける総サンプル数に対するそのノードのサンプルの割合である。leftとrightはnodeの子である。図示すると以下のような感じである。ある分岐について、改善度は以上のように計算できたので、次に木全体で特徴量重要度を得る部分について考える。決定木ではどの特徴量がどのノードで分割に使用されたかの情報も持っている。