House Pricesのnotebookを参考に特徴量エンジニアリングを勉強してみた

サムネイル画像

 
こんにちはひさです。kaggleのHouse Pricesのnotebookを使い、前回の続きの部分「特徴量エンジニアリング」をやっていきたいと思います。前回はデータの概要を確認したり、予測する対象を分析しましたが、今回は予測するためのデータを編集していきます。

この特徴量エンジニアリングは、行うと分析の精度やパフォーマンスが向上するなどデータ分析に欠かせないことなので、kaggleのnotebookを通してイメージを掴んでいきたいと思います。

前回同様環境はJupyterNotebookを使用して行なっていきます。それではやっていきます。

※前回同様コードは記載していますが結果は表示していませんので、自身の環境で結果を見て頂くか、kaggleのnotebookを見て結果を確認してください。リンクはこちらです。

目次

特徴量エンジニアリングをやっていこう

特徴量エンジニアリングとタイトルをしていますが、前回の「順序セットに情報が含まれている可能性のあるカテゴリ変数のラベルエンコード」・「歪んだ特徴のBoc Cox変換」の部分にあたるところです。それでは早速やっていきます。

訓練データとテストデータを同じデータフレームにまとめる

ここから実際に特徴量エンジニアリングを行なっていきます。まずは訓練データとテストデータをまとめてひとつのデータとして扱っていきます。

これで訓練データとテストデータがまとまりました。

欠損値の処理

次に欠損値の処理をしていきます。データに欠損値があると一部のモデルでは扱うことができなくなってしまうので欠損値を埋めていきます。まずこのnotebookでは最初に欠損値についての情報を確認していますので見ていきましょう。

上から20個表示して、欠損率の大きいデータを確認する。次にグラフで欠損値を表示してみる。

グラフにすると特徴量の中でどのデータに欠損値が多いかわかりやすくなる。

欠損値を埋めていく

欠損値には埋め方がいくつかあるのですが、今回はfillnaで穴埋めしています。

このように欠損しているデータを埋めていく作業を行う。今回は一例として上記のコードのみ表示していますが、他のデータもそれぞれ欠損を埋めていく。

データの相関関係を確認する

次にFeature(特徴量)とSalePriceの相関関係を確認する。ここではヒートマップを使い相関を確認する。

ヒートマップで相関関係を色で確認できるようになった。もし具体的な数値を入れてみたい時はこうするとできる。

カテゴライズされているデータを変換する

ラベルエンコーディング

ここからラベルエンコーディングで文字列では使えないデータを数値に変換して使えるようにしていく。その前にデータの型を変換をする。

上記のコードではデータを文字列型に変換している。では早速ラベルエンコーディングに入っていこうと思いますが簡単にラベルエンコーディングを説明します。

ラベルエンコーディングを簡単に説明すると白色・赤色・青色などのカテゴリデータを0=白・1=赤・2=青のように数値を割り振って扱えるようにすること。もっとわかりやすい例があるかもしれないので、調べてみるといいかもしれません。

以上でカテゴリデータをラベルエンコーディングした。次は、ワンホットエンコーディングをやっていく。

ワンホットエンコーディング(ダミー変数)の取得

これからワンホットエンコーディングをしていく。まずイメージとしてはカテゴリ変数を1つ以上の0と1の値をもつ新しい特徴量で置き換えるもの(分かりやすいの例として性別で、男は0とした時、女は0になるなどがある。)

pandasを使うやり方やscikit-learnを使うやり方があるが今回はpandasを使用していきます。

これでワンホットエンコーディングができたので、カテゴライズされたデータを扱えるようになりました。

歪んだ特徴を変換

ここではデータの歪度を見ていきます。歪度はskewで表示していく。

データを確認したので、Box-Cox変換して歪度を修正していく。

Box-Cox変換とは?

データの分布を正規分布に近づけるための変換のこと。線形回帰分析はデータが正規分布に従うという仮定を置いてるので、今回はBox-Cox変換をして正規分布に近づけていきます。

これで変換が完了(自分でグラフでみてみたが正規分布になっている模様。)

ここまでの振り返り

一通り特徴量エンジニアリングを終えたので、ここまでの流れをおさらいして見ていく。内容は以下となる。

  • 欠損値の処理
  • カテゴライズデータの変換(ラベルエンコーディング・ワンホットエンコーディング)
  • Box-Cox変換

ここは分析するデータによってやることは変わってきますが、テーブルデータに関しては大まかに以上の内容を行なっていくと思います。

簡単にまとめると「データの欠損している部分を埋めて、カテゴリデータを数値で扱えるように変換し、データによっては形を整える」というような感じです。

まとめ

今回は特徴量エンジニアリングに焦点を当てて勉強していきました。分析するデータによって行う特徴量エンジニアリングは変わってくると思いますが欠損値の処理やワンホットエンコーディングなどは教師あり学習のどのデータでも必須なような気がします。

この特徴量エンジニアリングはデータ分析をする上で必要不可欠なはずなのでやり方を覚えて、しっかりデータ分析できるようにしたいところです。

参考文献

kaggle notebook: https://www.kaggle.com/serigne/stacked-regressions-top-4-on-leaderboard?kernelSessionId=1955054

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

目次
閉じる