はじめに
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
Feature preprocessing and generation with respect to models
メイントピック
- 特徴の前処理
- 特徴の生成
- モデルの種類によって、どのように影響するか
特徴のデータ形式について
- numeric (数値)
- categorical (カテゴリー)
- ordinal (序数)
- datetime (日付)
- coordinate (座標)
特徴のデータ形式の違いは下記と関連がある
- モデルの前処理
- それぞれの特徴の種類による特徴を生成する方法
Kaggle のタイタニックのデータについて
Titanic: Machine Learning from Disaster | Kaggle
- Survived を予測する
前処理について
- モデルの品質を改善するために、特徴の種類ごとに方法がある
- 使用するモデルごとに前処理が変わる
例えばタイタニックのデータを例に説明する 線形モデルを使うとき、特徴が pclass が非線形であったとする 下記のように、カテゴリデータを数値で扱うようにする
pclass | pclass == 1 | pclass == 2 | pclass == 3 |
---|---|---|---|
1 | 1 | 0 | 0 |
2 | 0 | 1 | 0 |
3 | 0 | 0 | 1 |
データ前処理② データを Categorical から Numerical に。 - Qiita
※ ランダムフォレストの場合は、この前処理は特に必要なし
特徴の生成について
例えば、週ごとの販売数を予測したい時、 線形モデルを使うとき、過去の週数を示す特徴を作る
勾配ブースティング (GBDT: Gradient Boosted Decision Trees) の場合は、各週の平均目標値などを特徴として作る
Numeric features
前処理
スケーリングに依存しない
- 決定木分類器
スケーリングに依存する
- k近傍
- 線形モデル
- ニューラルネットワーク
正規化
- 特徴の最小値を0、最大値を1にする
- sklearn では、MinMaxScaler を使う
- 平均を0、標準偏差を1にする
- sklearn では、StandardScaler を使う
外れ値
- 線形モデルを扱う時、結果に影響を与える
Winsorizing について
外れ値を外れ値以外の最大値・最小値で置き換えるというものである。
ランク変換
- 外れ値がある場合、MinMaxScaler より良い選択肢
- 外れ値を手動で処理する時間がない時などに利用
- scipy ライブラリにある
- 注意点、テストデータにも適用すること
non-tree-based のモデルに役立つ前処理
大きすぎる値を、特徴の値の平均値に近づける ニューラルネットワークに役立つことが多い
- log 変換
- 平方根を利用
特徴の生成
- 特徴の値通しで、加算、乗算、除算は役立つことがある
まとめ
- tree-based model は特徴のスケーリングに依存しない
- non-tree-based は特徴のスケーリングに依存する
- データの理解によって良い特徴が生成できる