なぜカテゴリカル前処理が重要か #
実務のデータセットでは、顧客属性・商品カテゴリ・キャンペーン種別など「文字列やラベル型」の特徴量が多数を占めます。
数値化せずにモデルへ投入すると、以下のような課題が発生します。
- アルゴリズムが入力を解釈できず、性能が頭打ちになる
- ワンホット一択では次元が爆発し、推論レイテンシが跳ね上がる
- ターゲットを参照するエンコーディングでリークが起こり、リリース後に精度が劣化する
そこで、カテゴリカル変数の粒度・分布・目的変数との結び付きを踏まえて、適切なエンコーディングを選び分けるのがデータアナリストの重要な仕事になります。
アジェンダ #
| セクション | 目的 | 主なトピック |
|---|---|---|
| One-Hot Encoding | 低次元カテゴリの基礎変換 | 疎行列・高次元対策、正則化との兼ね合い |
| Count / Frequency Encoding | 分布情報を取り入れつつ次元を抑制 | 対数変換、確率正規化、スムージング |
| Target / Mean Encoding | 目的変数の情報を効率的に反映 | KFold/OOF実装、リーク防止、バギングとの併用 |
| Ordered Target Statistics | 時系列・逐次データでの堅牢な統計特徴量 | 逐次更新、オンライン学習との相性 |
データアナリストの視点で押さえるポイント #
1. 事前設計 #
- 粒度をそろえる: 取引単位か顧客単位か、分析の単位を明文化してカテゴリを統廃合する。
- 階層を活用する: 都道府県→市区町村など階層を持つ場合、上位カテゴリでの集計を併用する。
- ドメイン知識を埋め込む: 既知のクラス分け(例: ゴールド/シルバー会員)を特徴量として明示する。
2. 特徴量生成のチェックリスト #
- 希少カテゴリの処理: 出現回数が閾値未満なら
Otherにまとめるか、ターゲットエンコーディングで平滑化。 - 交互作用: カテゴリ×カテゴリ、カテゴリ×数値の組み合わせを Count / Target Encoding してみる。
- スケールとリソース: ワンホットで 10 万列を生成しないか? 推論環境のメモリ・レイテンシを測定。
3. 手法選定ガイド #
| 状況 | 推奨アプローチ | 補足 |
|---|---|---|
| カテゴリ数が少ない (≤10) | One-Hot | 線形モデルや解釈性重視のレポートで有効 |
| カテゴリ数が多い (10〜数百) | Count / Frequency | 次元を増やさず分布を学習させる |
| 目的変数と強い関係がある | Target Encoding | KFold + 正則化(ノイズ追加)でリークを回避 |
| 時系列順にしか情報を使えない | Ordered Target Statistics | 過去データのみで統計を更新し、未来リークを防ぐ |
この章で得られる成果 #
- プロジェクト開始時にカテゴリカル変数ごとの方針を文書化できる
- pandas / Spark / SQL いずれでも再現可能な処理レシピを入手できる
- クロスバリデーション設計や推論コストを考慮したレビュー観点を身につけられる
それぞれの手法について、実装例と注意点を次ページから詳しく解説していきます。