4章 データの表現と特徴量エンジニアリング
特定のアプリケーションに対して、
最良のデータ表現を模索することを**特徴量エンジニアリング(feature engineering)**という。
カテゴリ変数
以下のようなデータの場合、
年収が500万円を超えるか?超えないか?
という2クラス分類をすることもできるし、
年収を予測するというアプローチもできる。
年齢 | 雇用形態 | 学歴 | 性別 | 年収 |
---|---|---|---|---|
39 | 公務員 | 大学 | 男 | 500万以下 |
50 | 自営業 | 大学 | 男 | 500万以下 |
38 | 民間 | 高卒 | 男 | 500万以下 |
52 | 自営業 | 高卒 | 男 | 500万越え |
31 | 民間 | 院卒 | 女 | 500万越え |
42 | 民間 | 大学 | 男 | 500万越え |
しかし、「年収が500万円を超えるか?超えないか?」という問題に対しては、
2クラス分類の方が簡単である。
このデータの「学歴」は、連続値(数値)ではないので、
ロジスティック回帰分析には直接当てはめることはできない。
よって、データを別の方法で表現する。
ワンホットエンコーディング
上記の例で、「学歴」などをそれぞれ「1」と「0」のフラグに置き換えてデータ化することを
**ワンホットエンコーディング(one hot encoding)**という。
学歴 | 中卒 | 高卒 | 大卒 |
---|---|---|---|
中卒 | 1 | 0 | 0 |
高卒 | 0 | 1 | 0 |
大卒 | 0 | 0 | 1 |
ビニング、離散化、線形モデル、決定木
**ビニング(binning)=離散化(discretization)**とは、
特徴量を複数に分割することである。
上のデータを離散化すると、以下のようになる。
ビン(bin)毎に出力を予測するので、
線形回帰も決定木も同じ値を示す。
線形回帰にとってはメリットがあるが、
決定木は元々ビニング機能が備わっているので特に利点はない。
よって、どうしても線形回帰を使いたい場合に離散化を行うと良い。
自動特徴量選択
特徴量が多いと、モデルは複雑になって計算もコストがかかる。
よって、有効な特徴量だけ使うことによって効果的に恩恵が得られる。
しかしながら、どの特徴量が有効かをどうやって判断するのか
というのが問題である。そこで、
以下の3つの手法を使う。
単変量統計(univariate analysis)
特徴量と出力に、統計的に関係があるかどうかを計算し、
最も高く関連している特徴量を1つずつ調べていく手法である。
モデルベース特徴量選択(model-based selection)
教師あり学習モデルを使って、各特徴量の重要性を判断する手法である。
反復特徴量選択(iterative selection)
異なる特徴量をモデルを作る手法であり、
やり方は2通りある。
①1つずつ特徴量を加えていき、出力を比較していく。
②すべての特徴量を組み込んだ後、1つずつ特徴量を引いていく。
これはRFE(Recursive feature elimination)(ランダムフォレスト)と呼ばれ、
決定木を複数作成した後、その多数決で有効なものを分類する手法である。
パラメータがバラバラになった時に精度が悪くなれば重要度が高いと判断できる。
専門家知識の利用
例えば、JR東海に勤めているとして、
価格・駅・日付を記録したデータで学習モデルを作ったとする。
しかし、天皇即位の日にちがわかるわけではない。
この場合において、特徴量を予め組み込んでおくことで、
対応することはできる。
機械が判断できない部分でも、人間が理解している部分を組み込むことによって
計算コストが減る例はいくらでもある。