特徴量エンジニアリング

Feature Engineering

特徴量エンジニアリング(Feature Engineering)とは、生データから機械学習モデルの性能を向上させる有効な特徴量を作り出すプロセスです。ドメイン知識を活用してデータを変換・加工し、モデルが学習しやすい形にします。

なぜ重要か

「データサイエンスのプロジェクトの8割は特徴量エンジニアリングに費やされる」と言われるほど、この工程は機械学習の成否を左右します。同じアルゴリズムでも、特徴量の質が異なれば予測精度に大きな差が出ます。

表:特徴量エンジニアリングの要点まとめ
ひとことで言うと生データを加工して、モデルが学びやすい形の入力を作り出す作業。
どこで使う日付から曜日や祝日を作る、金額の比率を作る、過去n日の平均を作る。
注意点業務知識が最も効く工程。同時に、最も時間がかかる工程でもある。

代表的な手法

数値特徴量に対する対数変換・多項式特徴量の生成、日付データからの曜日・月・祝日フラグの抽出、テキストデータのTF-IDF化やBag of Words化、カテゴリデータのワンホットエンコーディングやターゲットエンコーディングなどが代表的です。

図:特徴量エンジニアリングの例
1生データ日付・金額・テキスト
▶
2業務知識で発想何が効きそうか考える
▶
3新しい列を作る曜日・前年比・移動平均
▶
4効果を検証精度が上がったか確認
↺ 2〜4をくり返して効く特徴を探す

自動特徴量エンジニアリング

近年では、AutoFeat、Featuretools、TSFreshなどのツールにより自動化が進んでいます。また、深層学習は特徴量の自動抽出能力が高く、手動での特徴量エンジニアリングの必要性を減らしています。