データサイエンティストのための特徴量エンジニアリング

データサイエンティストのための特徴量エンジニアリング

Soledad Galli (著), 松田晃一 (翻訳)

Pythonによる機械学習モデル構築のための特徴量 抽出・作成実践レシピ

機械学習においてはモデルを作成しデータを与えて学習させますが、その前に生データをモデルが理解できるような形式に変換する「特徴量エンジニアリング」と呼ばる重要なステップがあります。
データサイエンティストはモデルの学習に使用する生データを選び特徴量に変換したり、データを組み合わせ新しい特徴量を作成します。
うまく設計された特徴量は、機械学習モデルの精度を大幅に向上させ、学習にかかる時間を短縮することができます。

本書は特徴量エンジニアリングの実践的なガイドであり、機械学習のための特徴量を作成するための効果的なテクニックとベストプラクティスを学ぶことができます。
Pythonを活用し、70以上の実践的な”レシピ”により特徴量の抽出を手軽に行います。
pandas、scikit-learnに特徴量エンジニアリングライブラリであるFeature-engine、Category Encoders、Featuretools、tsfreshを利用し、新しい特徴量を変換・作成します。

欠損データの補完、カテゴリエンコーディング、変数変換、離散化、スケーリング、外れ値の取り扱いなど表形式データに対する特徴量エンジニアリングのほぼすべてのトピックをカバー。
日付と時刻、テキスト、時系列、リレーショナルデータセットから特徴量を抽出する方法についても解説。
テキストからの特徴量の抽出の付録として日本語モデルでの実例も取り上げます。

1章 欠損値を補完する
2章 カテゴリ変数をエンコーディングする
3章 数値変数を変換する
4章 変数を離散化する
5章 外れ値を扱う
6章 日付と時刻の変数から特徴量を抽出する
7章 特徴量をスケーリングする
8章 新しい特徴量を作成する
9章 Featuretoolsを用いてリレーショナルデータから特徴量を抽出する
10章 tsfreshを使って時系列データから特徴量を作成する
11章 テキスト変数から特徴量を抽出する
付録 日本語を扱う

まさに実践レシピです。
下記は目次ですが、これ自体が特徴量テクニックのリストになっているというなんとも優れものです。

  1. 欠損値を補完する
    1. 欠損値のあるデータを除去する
    2. 平均値または中央値で補完する
    3. カテゴリ変数を補完する
    4. 欠損値をに似の数値で置き換える
    5. 補完用に分布の端の値を求める
    6. 補完された値に印をつける
    7. 連鎖方程式で多変量補完を行う
    8. 最近棒を用いて欠損値を推定する
  2. カテゴリ変数をエンコードする
    1. ワンホットエンコーディングする
    2. 頻出カテゴリをワンホットエンコーディングする
    3. カテゴリをデータの個数や頻度で置き換える
    4. カテゴリを序数で置き換える
    5. 目的変数に基づいた序数エンコーディングを行う
    6. ターゲットエンコーディングを実装する
    7. WoEを用いてエンコーディングする(WoE:Weight of Evidence)
    8. 稀なカテゴリ、頻度の低いカテゴリをグループ化する
    9. 2値エンコーディングを行う
  3. 数値変数を変換する
    1. 対数関数で変数を変換する
    2. 逆数関数で変数を変換する
    3. 平方根で変数を変換する
    4. べき乗変換を行う
    5. Box-Cox変換を行う
    6. Yeo-Johnson変換を行う
  4. 変数を離散化する
    1. 等区間離散化を行う
    2. 等頻度離散化を行う
    3. 変数を任意の区間に離散化する
    4. k-meansで離散化する
    5. 特徴量の2値化を実装する
    6. 離散化に決定木を元居る
  5. 外れ値を扱う
    1. 箱ひげ図で外れ値を可視化する
    2. 平均と標準偏差を用いて外れ値を見つける
    3. 四分位範囲近接則を用いて外れ値を見つける
    4. 外れ値を除去する
    5. 外れ値にキャップをかける
    6. 分位数を使って外れ値にキャップをかける
  6. 日付と時刻の変数から特徴量を抽出する
    1. pandasで日付から特徴量を抽出する
    2. pandasで時刻から特徴量を抽出する
    3. 日時変数から経過時間を計算する
    4. 異なるタイムゾーンの時間を扱う
    5. Feature-engineで特徴量の抽出を自動化する
  7. 特徴量をスケーリングする
    1. 特徴量を標準化する
    2. 最大値と最小値でスケーリングする
    3. 中央値と分位数でスケーリングする
    4. 平均正規化を実行する
    5. 最大絶対値スケーリングを実装する
    6. ベクトル単位長にスケーリングする
  8. 新しい特徴量を作成する
    1. 特徴量を数学関数で組み合わせる
    2. 特徴量と参照変数を比べる
    3. 多項式展開を行う
    4. 特徴量と決定木を組み合わせる
    5. 周期変数から周期的な特徴量を作成する
    6. スプライン特徴量を作成する
  9. Featuretoolsを使ってリレーショナルデータから特徴量を抽出する
    1. エンティティセットを作成し特徴量を自動で生成する
    2. 一般操作と累積操作で特徴量を作成する
    3. 数値特徴量を組み合わせる
    4. 日付と時刻から特徴量を抽出する
    5. テキストから特徴量を抽出する
    6. 集約プリミティブで特徴量を作成する
  10. tsfreshを使って時系列データから特徴量を作成する
    1. 時系列データから自動的に特徴量を抽出する
    2. 時系列データ用の特徴量を作成し選択する
    3. 異なる時系列データに合わせて特徴量を作成する
    4. あらかじめ選択された特徴量を作成する
    5. 特徴量作成をscikit-learnパイプラインに組み込む
  11. テキスト変数から特徴量を抽出する
    1. 文字数、単語数、語彙数を数える
    2. 文字を数えてテクストの複雑さを推定する
    3. Bag-of-Wordsとn-gramを用いて特徴量を作成する
    4. TF-IDFを実装する
    5. テキスト変数をクリーニングしステミングする

テキスト変数のところは、生成AIの登場によって様相は変わってきた感はありますが、温故知新ではないですがこういった基礎技術(といっても応用だと思いますが)を理解した上だと、生成AIもよりよく活用できると思います。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


This site uses Akismet to reduce spam. Learn how your comment data is processed.