Boruta の使い方

シェアする

特徴量選択手法もしくは変数選択手法の一つに、Boruta があります。

[解析結果付き] Boruta、ランダムフォレストの変数重要度に基づく変数選択手法
Boruta という、ランダムフォレスト (Random Forest, RF) の変数重要度に基づいた変数選択手法について、パワーポイント...

こちらのこちらに書いた通り、

変数選択・特徴量選択のときの意識は、モデルの予測精度を上げることより、不要な変数・特徴量を削除することです
回帰モデルやクラス分類モデルの予測精度を上げるためモデルを解釈するため色々な目的で変数選択 (特徴量選択) をしていると思います。相関係数に...

特徴量選択では、「予測精度」が上がるように特徴量を選ぶというより、不要な特徴量を削除するという意識で実施するとよいです。なぜなら、たとえトレーニングデータとテストデータに分けてテストデータで「予測精度」を評価したとしても、そのテストデータに過学習 (オーバーフィッティング) する可能性があるためです。

バリデーション結果は、少数の比較には使ってよいが最適化に使ってはいけない!~外部バリデーションや(ダブル)クロスバリデーションでは何を評価しているのか?評価するときのジレンマとは?~
回帰モデルやクラス分類モデルを評価するときの話です。評価のときに、クロスバリデーションやダブルクロスバリデーションが使われることもありますが...

例えば、遺伝的アルゴリズム (Genetic Algorithm, GA) で、クロスバリデーション後の r2 やテストデータ (もしくはバリデーションデータ) の r2 が大きくなるように特徴量の組み合わせを選択することは簡単です。しかし、その結果選ばれた特徴量を用いて回帰モデルを構築したあと、新たなサンプルの y の値を、特徴量選択前より精度よく予測できるかどうかは不明です。

一方で Boruta では、何かの予測精度の指標を最大化することをしていません。そのためオーバーフィッティングが起こりにくいと言われています。

Boruta にはハイパーパラメータとして、p パーセンタイルの p があります。この詳細については以下をご覧ください。

[解析結果付き] Boruta、ランダムフォレストの変数重要度に基づく変数選択手法
Boruta という、ランダムフォレスト (Random Forest, RF) の変数重要度に基づいた変数選択手法について、パワーポイント...

p の値が大きいほど、特徴量が削除されやすいため、多くの特徴量を削除したい (少ない特徴量のみで議論したい) ときは、p の値を大きく、例えば p = 100 にするとよいです。

それでは特徴量が減りすぎてしまう場合に、何らかの方法で p の値を一つに決めたいときには、相関係数を利用するとよいと思います。具体的には、特徴量のサンプルをランダムに並び替えて目的変数との間で相関係数を計算することを 10000 回くらい行い、その相関係数の絶対値の最大値を rmax としたとき、p = 100 × (1 – rmax) とします。この考え方は、サンプルが少ないときなどに乱数の特徴量でもたまたま y との間の関係性が出てしまうことに基づきます。

ただ、いくつかの特徴量セットを並行して議論したいときなどは、p の値を振って Boruta を実行するとよいと思います。実際わたしも、p の値を 80, 90, 100 と振って、その結果を見ながら議論したり、それぞれ選択された特徴量ごとに、回帰モデルを構築して予測精度を検証したりしています。

このように、Boruta とはいえ p の値の設定によって特徴量選択の結果は変わり、場合によっては選択された特徴量で構築した回帰モデルの予測精度が選択前より低下してしまうケースもあるため、ある程度設定を振って検討するとよいと思います。

以上です。

質問やコメントなどありましたら、twitter, facebook, メールなどでご連絡いただけるとうれしいです。

シェアする

フォローする