機械学習においてデータを正しく表現することは、成果に大きく影響してくる。
”特徴量エンジニアリング”とは特定のアプリケーションに対して、最良のデータ表現を模索すること。
今回は特徴量エンジニアリングについて紹介したい。
まずデータ表現として一般的なカテゴリ特徴量の変換からみていく。
ワンホットエンコーディング(ダミー変数)
カテゴリ変数を1つ以上の0と1の値を用いて新しい特徴量で置き換えるもの。
ダミー変数と言われればわかりやすい。
数ある特徴量の中で該当するものは1と記載される。そこがワンホットエンコーディングと呼ばれる所以。
#
次はモデリングのデータ表現の変換方法を3つ見ていく。
1、ビニング・離散化
モデルの表現を豊かにする方法part1。
線形モデルはその名のとおり線形にしかモデリングできない。
その線形モデルを連続データにして強力にする方法の1つが特徴量のビニング、離散化である。
一線で表すのではなく、1グラフをいくつかの”ビン”に分け、その間で特徴量が一定となり同じ値を予測できる。この変換は線形モデルにとって柔軟性、表現力が増す。
2、交互作用と多項式
モデルの表現を豊かにする方法part2。
もとのデータの交互作用特徴量と多項式特徴量を加える方法である。
交互作用特徴量とはもとの特徴量から2つの特徴量のすべての組み合わせと、もとの特徴量の2乗のこと。
多項式特徴量はある特徴量xに対して、x ** 2, x ** 3・・・を考えること。
ビニング、離散化によって分けられた場合、各ビンの間の線は定数を学習する。
けれど線形モデルは傾きも学習できるはず!という考えを、上記の2つを用い、元の特徴量をビニングされたデータに加えなおすことで実行する方法。
3、単変量非線形変換
log, exp, sinなどの数学関数を用いた変換。
線形モデルなどにおいて、特徴量とターゲットに非線形関係があるとモデリングが難しくなる。
そこをこの関数たちがデータの相対的なスケールを修正してくれるのでモデリングしやすくなる。
以上の方法は線形モデルなどに対し有効であるが、決定木やランダムフォレストなどには性能を下げてしまう。最適な変換を見つけることが大事。
自動特徴量選択
特徴量を増やすとモデルが複雑化して過剰適合の危険がでてくる。
ただ、増やした上で有効な特徴量を取捨選択すればより汎化性能があがる。
その有効な特徴量の見分け方は?
という戦略3つを紹介
1、単変量統計
特徴量とターゲットの間に顕著な関係があるか計算する戦略。”単変量”という名のとおり個々の特徴量を個別に考慮する。そのため他の特徴量を組み合わさっている特徴量は捨てられる。
2、モデルベース特徴量選択
教師あり学習モデルを使って特徴量の重要性を判断する戦略。
このモデルは最終的に使いたいモデルではなくてもよいが、個々の特徴量の重要性の指標が出力できるモデル。たとえば決定木などではfeature_importances_属性、線形モデルでは係数なども利用できる。
単変量統計と異なる点は、すべての特徴量を同時に考慮できる点である。
3、反復特徴量選択
異なる特徴量を用いた一連のモデルを作る。そのモデルの作り方は2パターンあり、
・1つずつ特徴量を足していく方法
・すべて特徴量を使い1つずつ取り除いていく方法
である。複数モデルを作るので高価な戦略。
#
機械学習を応用していく上では
・どのような特徴量を用いるか
・どの特徴量と機械学習手法を組み合わせるか
の2点がうまくいくかを左右する。
一つ一つの実行例も今後紹介できればと思うが、
次回は機械学習モデルの性能評価である。
参考文献
・Pythonではじめる機械学習ーscikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎
(著者 Andreas C.Muller、Sarah Guido 発行所 株式会社オライリー・ジャパン)