ターゲットエンコーディング (G検定)

ターゲットエンコーディング

1. 定義と概要

ターゲットエンコーディングとは、カテゴリ変数の各カテゴリ値を、そのカテゴリに属する学習データの目的変数の平均値などの統計量(データ全体の特徴を表す代表値。平均や中央値など)で置き換える変換手法です。平均値のほか、中央値といった別の統計量に置き換える場合もあります。

たとえば会員ランクごとの成約率がプラチナ会員は70%、シルバー会員は30%だとすると、プラチナ会員というカテゴリの値を0.7、シルバー会員を0.3という数値に置き換えるイメージです。文字で表されていたカテゴリが、そのまま予測に使える数値へ姿を変えるわけです。

従来のOne-Hotエンコーディング(カテゴリの数だけ0と1の列を作って表す変換方法)やラベルエンコーディング(カテゴリに0,1,2…と整数の番号を割り振る変換方法)は、カテゴリを機械的な番号や0/1の列に置き換えるだけの手法です。目的変数との関係は反映されません。

都道府県や商品ID、郵便番号のようにカテゴリの種類が非常に多い、いわゆる高カーディナリティ(カテゴリの種類の数が非常に多いこと)の変数では、One-Hotだと列数が膨大になる課題があります。ターゲットエンコーディングは、カテゴリを目的変数の統計量という予測に直結する情報に置き換え、特徴量(モデルへの入力として使う個々のデータ項目)の列数を増やさずに多カテゴリを扱えるようにする発想から登場した手法です。

ただし目的変数の情報を直接使うぶん、扱いを誤るとリーケージという問題を招きやすくなります。便利さとリスクが背中合わせの手法という位置づけです。

2. 試験対策ポイント

試験対策としてまず整理しておきたいのは、カテゴリごとに目的変数の統計量を計算し、その値で元のカテゴリ値を置き換える中心操作です。One-Hotエンコーディングのようにカテゴリの数だけ列を増やす必要がないため、都道府県や商品IDのように種類が非常に多い変数でも、列数を膨らませずに扱える点がこの手法の大きな特徴といえます。

この手法固有の注意点が、リーケージの起き方です。あるデータ行の統計量を計算する際、その行自身の目的変数の値まで平均の計算に含めてしまうと、モデルは間接的に答えを知った状態で学習することになり、訓練時の評価指標だけが不自然に高くなります。

対策の一つが、交差検証(クロスバリデーション。データを複数のグループに分けて、順番に検証用として使う評価方法)を利用したOut-of-Fold(交差検証の分割ごとに、その行が属する分割以外のデータだけを使って統計量を計算する方法)です。分割ごとに異なる統計量を割り当てることで、自分自身の目的変数の値が自分の変換結果に混ざる事態を避けられます。

もう一つの対策が、スムージング(平滑化。カテゴリに含まれるサンプル数が少ない場合、そのカテゴリの平均を全体平均に寄せて計算する方法)です。サンプル数の少ないカテゴリは偶然のばらつきで平均が極端な値になりやすく、そのまま使うと過学習(訓練データに適合しすぎて、新しいデータへの対応力が落ちること)を招きます。サンプル数が少ないほど全体平均の影響を強め、多いほどカテゴリ自身の平均に近づける考え方で緩和します。

この2つは目的が異なる対策として区別しておきたいところです。それぞれが何を防ぐための手当てなのかを並べると、次のように整理できます。

対策 防ぐ問題 仕組み
Out-of-Fold 自分の行の目的変数の値が自分の変換結果に混ざること 交差検証の分割ごとに、その行が属する分割以外のデータだけで統計量を計算する
スムージング サンプル数の少ないカテゴリの平均が極端になること サンプル数が少ないほど全体平均に寄せ、多いほどカテゴリ自身の平均に近づける

同じターゲットエンコーディングの手当てでも、対応している問題は別物です。どちらか一方だけでは、もう一方の問題は残ったままになります。

3. 関連概念との比較・相違点

One-Hotエンコーディング・ラベルエンコーディングとの最大の違いは、目的変数の情報を使うかどうかです。One-Hotやラベルはカテゴリの並びや個数だけをもとに機械的に変換するのに対し、ターゲットエンコーディングは目的変数の統計量を使うため、予測に直結する情報を反映できます。その代わり、目的変数の値を直接使うぶんリーケージという新たなリスクを抱える点が対照的です。

カウントエンコーディング(カテゴリの出現回数、つまり頻度で置き換える変換方法)との最大の違いは、何で置き換えるかにあります。カウントエンコーディングはカテゴリの出現回数で置き換えるのに対し、ターゲットエンコーディングは目的変数の統計量で置き換えます。

主な変換手法を、何に置き換えるかと目的変数を使うかどうかで並べると、位置づけの違いがはっきりします。

変換手法 何に置き換えるか 目的変数を使うか
One-Hotエンコーディング カテゴリの数だけ作った0と1の列 使わない
ラベルエンコーディング 0,1,2…と割り振った整数の番号 使わない
カウントエンコーディング カテゴリの出現回数 使わない
ターゲットエンコーディング 目的変数の平均などの統計量 使う

目的変数を使わない3手法はリーケージのリスクを抱えない代わりに、予測に直結する情報も持ち込めません。この対照が、両者を分ける軸になります。

4. ビジネス・実務での活用シナリオ

EC・マーケティングの分野では、購買予測モデルで商品IDや店舗IDのように種類が非常に多いカテゴリを、購入率の平均に置き換えて特徴量にする使い方があります。One-Hotだと列数が膨大になる場面でも次元を増やさずに扱え、交差検証の分割ごとに統計量を計算し直すことでリーケージを避けられる仕組みです。

金融・保険の与信審査や保険料算定では、契約者の職業や業種のように種類が多いカテゴリを、事故率や延滞率の平均に置き換えます。サンプル数の少ない職業カテゴリはスムージングで全体平均に寄せ、偶然の値で審査基準が歪むのを防ぐ仕組みです。

不動産の分野では、物件種別や地域コードのような高カーディナリティの変数を成約価格の平均で数値化し、地域差をモデルに反映させつつ列数の膨張を避けられます。取引件数が少ない地域ほど平均が偏りやすいため、スムージングによる調整が特に有効に働きます。この調整をどの程度かけるかは、査定モデルの安定性を左右する要素です。

5. 要点まとめ

  • ターゲットエンコーディングは、カテゴリごとの目的変数の平均などの統計量でカテゴリ値を置き換える手法で、種類の多いカテゴリでも列数を増やさずに扱えます。
  • 自分の行の目的変数の値が自分の統計量計算に混ざるとリーケージが発生し、検証・テストの精度が実際より高く見えてしまいます。
  • Out-of-Fold は自分の行の情報の混入を防ぐ対策、スムージングはサンプル数の少ないカテゴリの平均が極端になることを防ぐ対策と、目的の異なる2つの手当てとして整理できます。

6. 確認問題

問1ターゲットエンコーディングは、カテゴリごとの目的変数の平均などの統計量でカテゴリ値を置き換える手法であり、One-Hotエンコーディングのように列数を増やさずに種類の多いカテゴリを扱える。

解答・解説をみる

○ 正しい

カテゴリをスカラーの統計量に置き換えるため、元の列数のまま多カテゴリを扱えます。One-Hotのようにカテゴリの数だけ列が増えることはありません。

問2ターゲットエンコーディングである行の変換値を計算する際、その行自身の目的変数の値を平均の計算に含めても、リーケージは発生しない。

解答・解説をみる

× 誤り

自分自身の目的変数の値を計算に含めると、モデルが間接的に答えを知った状態になりリーケージが発生します。正しくは Out-of-Fold で、その行が属する分割以外のデータだけを使って統計量を計算する必要があります。

問3スムージングは、サンプル数の少ないカテゴリの平均を全体平均に寄せて計算することで、極端な値になるのを防ぐ対策である。

解答・解説をみる

○ 正しい

サンプル数が少ないカテゴリは偶然のばらつきで平均が極端になりやすいため、全体平均との重み付けで緩和するのがスムージングの考え方です。