« 読了:Karatzoglou, Meyer, Hornik (2006) サポート・ベクター・マシンのRパッケージ品定め | メイン | 読了:Calle & Urrea (2010) ランダム・フォレストにおけるパーミュテーション・ベースの変数重要度はあてにならない »
2014年7月15日 (火)
読んだものは何でもメモしておこう、ということで...
Strobl, C., Hothorn, T., Zeileis, A. (2009) Party on! A new, conditional variable-importance measure for random forests available in the party package. The R Journal, 1(2).
著者らはRのpartyパッケージの開発者。分類木・回帰木(rpartパッケージ)やランダム・フォレスト(randomForestパッケージ)の標準的手法では、連続変数やカテゴリ数の多いカテゴリカル変数が選ばれやすくなる。さらに、予測子に相関がある場合、従来の重要性指標にはバイアスが生じる。partyパッケージではこれらの問題に対処したぞ。という記事。
ええと... 復習しておくと、分類木で分岐点を計算するときに良く用いられる方法のひとつは、Gini指標を最小化する分岐点を探すことだ。ノード t に落ちた個体がクラス $i$ に属する確率を $p(i | t)$ として、Gini指標とは
$GI = 1 - \sum_i [ p( i | t) ]^2 $
である。
著者いわく... Gini指標に基づく変数重要度は予測子のカテゴリ数や尺度がちがうときにバイアスがかかる。そこで使われているのがパーミュテーション重要度である。予測子のパーミュテーション重要度とは、out-of-bagケース(学習に使ってないケース)に対する正分類率と、当該の予測子の値だけをぐちゃぐちゃにかきまぜたときの正分類率との差である。ただし、randomForestではこれをSEで割った値(z得点)を重要度としている。
さて、パーミュテーション重要度は相関なんかと同じく、周辺的(marginal)な重要性指標である。つまり、ある変数がそれ自体の効果を持っていないに他の予測子と相関しているせいで重要度が高くなる、ということがありうる。この点、偏相関や偏回帰係数のような条件つき(conditional)な重要性指標とは異なる。
そこで我々(Strobl et al., 2008, BMC Bioinformatics)は条件つきパーミュテーション重要度を提案している。これはですね、データを共変量Zで層別し、層のなかだけでかきまぜるのである。Zに含める変数、ならびに連続変数の場合の離散化は、ランダム・フォレストのそれぞれの木で決める。この機能はpartyのvarimp()に積んである。
ユーザへのアドバイス。
- すべての予測子が同じ型だったら、randomForestパッケージを使おうがpartyパッケージを使おうがかまわない(前者のほうが計算が速い)。Gini重要性でもパーミュテーション重要性でもオッケー。
- 型が違ったら、partyパッケージのcforest()、パーミュテーション重要性 varimp() を使え。
- 予測子が相関していたら、周辺的重要性を使うべきか条件つき重要性を使うべきか考えろ。どっちもpartyパッケージのvarimp()に積んであるぞ。
- 話はそれるが、変数選択のパラメータ mtry のデフォルトは、randomForest()ではfloor(sqrt(ncol(x)))だがcforest()では5に固定だかんな、気をつけろよ。
- 重要度を読み込む前に、シードを変えて走らせるのを忘れんなよ!じゃあな!
論文:データ解析(-2014) - 読了:Strobl, Hothorn, Zeileis (2009) ランダム・フォレストにおけるパーミュテーション・ベースの変数重要度の新手法