参考サイト:
- Should we normalize before using VarianceThreshold in sklearn?
- Feature Selection - features with low variance
- Applying Filter Methods in Python for Feature Selection
注意点:
- 変数毎の分布に注意!:
分散で判別するので、変数毎に分布を見て決める必要あり。例えば、2値変数(0/1)なら、ベルヌーイ分布なので、分散はp*(1 - p)で、値の99%以上が1の変数を削除したいなら、0.99*(1- 0.99)=0.0099なので、Threshold=0.0099と設定する。 - 各変数のスケールの違いに注意!:
分散値をしきい値として指定するので、各変数のスケールを揃える必要がある。なので、VarianceThresholdを使う前に、正規化(最小0、最大1)の必要がある。
使いどころ:
- 実質的に定数と変わらない変数の削除
特にthreshold=0にすれば、分散が0、すなわちすべて同じ数値の変数を削除できる - 2値変数へのフィルタリング
0,1の2値変数で、ほとんどの値が0か1のどちらかに偏っている変数の削除。
thresholdに指定する値は、p*(1-p)で計算
※ 特徴量選択に関するメモは、『特徴量選択で利用する各種手法』のページ。
0コメント