前処理
機械学習は前処理が8割と言われます。前処理の手法をまとめました。
欠損値の処理
データの一部数字がblankである場合、該当データを削除、または、代替値で補完します。 どのように欠損値を扱うかがポイントです。 処理としては、fillna,dropnaなどの関数で簡単に対処可能です。
欠損値の確認
df.isnull.sum()
欠損値の対応
- 平均値で補完
df = df.fillna(df.mean())
- 中央値で補完
df = df.fillna(df.mean())
- 最煩値で補完
df = df.fillna(df.mode())
欠損データを削除
dropnaで削除する場合
df = df.dropna()
分類データの処理
アンダーサンプリング
分類を行う際、あるカテゴリのデータのみ件数が多い状況において、 そのカテゴリのデータを削除すること
One-Hot-Encoding ダミー変数化
ダミー変数化とは、例えば、企業分類があった場合にそれをカテゴリ毎にゼロイチで表現することです。
分類データ
企業 Amazon Facebook Google One-Hot-Encoding
| Amazon | ||
|---|---|---|
| 1 | 0 | 0 |
| 0 | 1 | 0 |
| 0 | 0 | 1 |
Target Encoding
各データをクラス分類してその出現頻度で置き換える方法です。 True/Falseの2値分類であれば、存在確率に置き換わります。
| A Class |
|---|
| False |
| True |
| False |
| A Class |
|---|
| 0.66 |
| 0.33 |
| 0.66 |
正規化・標準化
正規化
正規化は最小値を0最大値が1となるようにスケール変換すること。 ただし、外れ値を含む場合は、外れ値を最大値として、0側にデータが偏るため注意が必要。
$ X_{NORM} = \frac{X_i}{X_{max}-X_{min}} $
標準化
平均を0、標準偏差を1に変換すること。
$ X_{SD} = \frac{X_i-X_{mean}}{\sigma} $
ドメイン知識とは
データ分析を行う業界の知識になります。 金融、製造、機械、農業など対象データのバックグラウンドの知識です。 一般に、このバックグランド知識の有無により特徴量抽出のアイデアに差異がでます。