【Python機械学習】相関関係の可視化と、それに基づく特徴選択について

回帰問題を解く際に、カラム数が膨大なデータセットからモデルを作成したい場合、すべての特徴量を使うのはあまりよろしくないように思います。メモリ的にも、結果の解釈のしやすさ的にも。

そこで、特徴選択を行うわけですが、さまざまなやり方の一例として、相関関係を基準とした特徴選択について今回まとめていこうと思います。

 

サンプルとして利用するデータセット

今回は、Bostonデータセットを利用しようと思います。

ボストンデータセットは、ボストン市郊外における住宅価格関連のデータです。

boston.targetで、行ごとの住宅価格を取り出すことができ、それを予測する回帰問題のサンプルとして利用できます。

各カラムがどういったものかは以下を参考にします。

CRIM 人口 1 人当たりの犯罪発生数
ZN 25,000 平方フィート以上の住居区画の占める割合
INDUS 小売業以外の商業が占める面積の割合
CHAS チャールズ川によるダミー変数 (1: 川の周辺, 0: それ以外)
NOX NOx の濃度
RM 住居の平均部屋数
AGE 1940 年より前に建てられた物件の割合
DIS 5 つのボストン市の雇用施設からの距離 (重み付け済)
RAD 環状高速道路へのアクセスしやすさ
TAX $10,000 ドルあたりの不動産税率の総計
PTRATIO 町毎の児童と教師の比率
B 町毎の黒人 (Bk) の比率を次の式で表したもの。 1000(Bk – 0.63)^2
LSTAT 給与の低い職業に従事する人口の割合 (%)

https://pythondatascience.plavox.info/scikit-learn/scikit-learn%E3%81%AB%E4%BB%98%E5%B1%9E%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E3%83%87%E3%83%BC%E3%82%BF%E3%82%BB%E3%83%83%E3%83%88

 

いずれ線形回帰モデルにかけることも考えて、正規化をしておきましょう。

 

特徴量の相関を基準に特徴選択するアプローチ

選択の基準のひとつとして、目的変数との相関係数が高いものを選択する、というアプローチがあります。

相関関係は散布図をプロットすることで視覚的にわかりやすくなるため、いったんすべての説明変数と目的変数間の散布図をプロットしてみてみます。

これをすることで、xが増えるとyも増える、とかxが減るとyも減る、といったような線形に近い関係性がありそうなものが目でみてわかります。

とはいえ、今回は特徴量の数が13個と少なかったからよかったものの、例えば特徴量が500ある、といったときにこれをやるのは現実的ではありません。

そこで、相関係数のマトリクスを作り、そこから相関係数が高い順に特徴量を並べてみます。

seabornを使ってヒートマップにするととても見やすくなります。

これを見ると、どうやらyに対しては、INDUSやTAX、PTRATIO、LSTAT等が相関が強そうだということが目でわかります。

では次に、yとの相関係数だけ抽出します。

このようになりました。特徴選択をする際に、例えば「目的変数との相関係数が0.5以上」と閾値を設けるとします。

その場合は、負の相関も考慮して、以下のように行います。

 

たくさんある特徴量のどれを使えばいいのかわからない!といったときにこういった方法で選択してみるのも一つの手かと思います。

最後まで読んでいただきありがとうございました。

おわり