データハンドリング 前処理

特徴量エンジニアリングまとめ

投稿日:

ツリーモデルと非ツリーモデルを中心に特徴量エンジニアリングのパターンを特徴量のデータ型と手法選択の考え方をまとめます。地味だけど脱初心者には重要なスキルです。

数値データ

ツリーモデルでは不要、非ツリーモデルでは不要。

正規化

特徴量の最大値が1、最小値が0になるように変換すること。(-1、1)の場合もある。外れ値がある場合、外れ値との相対的な距離は大きいままなので、外れ値処理が必要。

標準化

特徴量の平均0、分散1になるように変換すること。外れ値がある場合、外れ値との相対的な距離は大きいままなので、外れ値処理が必要。

ウィンザー化

特徴量を1%~99%パーセンタイルの範囲など一定の範囲外のデータを除外すること。外れ値処理などに活用できる。

参考:https://qiita.com/koga1020/items/9710cb3f7f65a00808e4

順位変換

特徴量の値に基づいて順位付けすること。データの間隔が全て1になるため外れ値の影響も小さくなる。

参考:https://note.nkmk.me/python-pandas-rank/

対数変換

特徴量を対数(log( x + 1 ))で変換する。+1はx=0の場合発散防止のために追加している。xのスケールが大きいときはその範囲を縮小し、小さいときは拡大する。

非線形変換で外れ値を他の値に近づけることができる。回帰分析などは正規分布を前提にしている場合が多いのですが、正規分布が右にゆがんでいる分布などときに有効。

参考: https://qiita.com/gyu-don/items/ecd483fd94f446b576a3

カテゴリカル/順序変数

label encoding

カテゴリカル変数を、アルファベット順やある特定に基準で順位付けする。非ツリーモデルでは使えない。ツリーモデルの場合、ラベルエンコーディングは順序情報を持っているため、ワンホットエンコーディングより精度が高くなる。

参考:https://qiita.com/uratatsu/items/8bedbf91e22f90b6e64b

freqency encoding

特徴量の各値の出現頻度で置き換える。出現頻度とターゲット変数で相関があるとき効果的。

参考:https://mikebird28.hatenablog.jp/entry/2018/05/19/213047

ranked frequency encoding

特徴量の各値の出現頻度で順位付けし、その順位に置き換える。

one hot encoding

特徴量の値を新しい特徴量とし、該当する場合1、しない場合0に変換する。

一つのカテゴリ変数から複数の変数(カラム)を作るため、大きなスパースなデータとなりメモリの消費が大きくなる。また、カテゴリ数の膨大なカテゴリ変数をワンホットエンコーディングすると、ランダムフォレストなどランダムに特徴量を選択するアルゴリズムの場合、数値変数などの非カテゴリカル変数の選択率が減少して精度が落ちる問題がある。

(この選択率、ハイパーパラメータでチューニングできる。xgboostでは、colsample_bytreeランダムフォレストでは、max_feature)

線形の依存関係がある特徴量の場合、線形モデルの回帰係数が一意に定まらない問題があることに注意(多重共線性)。多重共線性を避けるためには、k個のカテゴリがある場合一つカテゴリを削除してk-1とするダミーエンコーディングを使う。

参考:https://xica.net/vno4ul5p/

ラベルエンコーディングでは発生頻度の低い稀なカテゴリなどが取りにくく、重要な変数がうまく取れない場合があるため、One hot encodingはの処理に役立つ。

参考:https://data-bunseki.com/2019/06/22/pandas-dataframe-%E3%83%80%E3%83%9F%E3%83%BC%E5%A4%89%E6%95%B0get_gummies/

-データハンドリング, 前処理

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

クラスタリングの実践(中学生スポーツテストデータ)

Contents1 クラスタリングの実践1.1 概要1.2 データの読み込み1.3 データの確認1.4 主成分分析1.5 クラスタリング クラスタリングの実践 概要 ・目的:中学生のスポーツテストデー …

no image

python/相関行列(correlation_matrix)

多変量に対して各変数の関係性を可視化するのに役立ちます。 Contents1 データ取得2 メソッド3 相関行列の算出4 可視化 データ取得 必要なモジュールのインポート [crayon-5da9b7 …

no image

教師なし学習〜主成分分析〜

Contents1 教師なし学習1.1 不要な特徴量を消す1.2 Feature Scalingの実行1.3 疑問1.4 【課題】なぜFeature Scalingが必要なのか記述せよ1.5 PCAの …

no image

Pandas/DataFrame/データ抽出

分析をするにあたって、最初に必要になるpandas/DataFrameのデータ抽出について記載しています。 メソッド pandas.DataFrame.locpandas.DataFrame.iloc …

no image

kaggle:House Price チュートリアル(LASSO回帰とRIDGE回帰)

Contents1 概要説明1.1 作業の流れ2 ライブラリインポート3 データの読み込み4 前処理4.1 対数変換4.2 ダミー変数化4.3 欠損値処理4.4 データの分割5 モデリング5.1 RI …