はじめに
Coursera の 「How to Win a Data Science Competition」 のメモです。
英語字幕しかなかったので、翻訳の意味が分からないところがあるかもしれません。
Feature Preprocessing and Generation with Respect to Models
学習目標
- Explain how employed model impacts choice of preprocessing
- Summarize feature preprocessings for numeric and categorical features
- Summarize feature generation approaches for datetime and coordinates
- Summarize approaches to deal with missing values
- Outline the pipeline of applying Bag of Words
- Compare Bag of Words and Word2vec
- Explain how to extract CNN descriptors from images
Categorical and ordinal features
前処理
ラベルエンコーディング
一意の値を数値にマッピングする
- tree-based model は有効
- non-tree-based はあまり効果がない場合がある
ラベルエンコーディングの種類
- Alphabetical (アルファベットのソート)
sklearn.preprocessing.LabelEncoder
※ 動画の並び順は間違っているような気がします
- Order of appearance (出現順)
Panda.factorize
frequency encoding (出現確率でエンコーディングする)
- 線形モデル、他の種類のモデルにも役立つ
- 頻度が予測値と相関がある場合、役立つ
- 分割数を少なくするのに役立つ
- 新しく生成する特徴において、同頻度のカテゴリが複数ある場合、区別できない
one-hot encoding
- 線形モデル、kNN、ニューラルネットワークで役立つ
- すでに最小値0、最大値1でスケールされている
- 何百ものバイナリの特徴があると、tree-based modelは速度が遅くなる
- メモリの節約で疎行列を使う
- 疎行列は、カテゴリの特徴、テキストを扱うときに便利
- 疎行列を扱えるライブラリ
- XGBoost
- LightGBM
- sklearn
- ゼロ以外の値がデータ数の半分よりはるかに少ないなら、疎行列は有効
特徴の生成
- non-tree-based で役に立つ (ex. 線形モデル、kNN) いくつかのカテゴリの特徴の間での、相互作用
例えば、タイタニックで、予測値が下記に依存するとします。
- Pclass
- sex
正しい場合、線形モデルはあらゆるこの2つの組み合わせで、良い結果を出します。
生成方法
両方の特徴量の文字列を繋げて、one-hot encoding を適用する
まとめ
- ordinal は カテゴリの特徴の特殊なケース
- ordinal は意味のある順番でソートされている
- ラベルエンコーディングは、カテゴリの特徴を数字に置き換える
- frequency encoding は、出現確率でエンコーディングする
- ラベルエンコーディング、frequency encoding は tree-based model でよく使われる
- one-hot encoding は、non-tree-based で使われる
- one-hot encoding をカテゴリの特徴の組み合わせに適用することで、non-tree-based が特徴間の相互作用を考慮される