はじめに
本記事では、その分析結果を基に特徴量エンジニアリングを行い、交差検証により効果を確認します。
結論から言うと、今回試した範囲では モデル性能の大きな改善は確認できませんでした。
前記事では、PCA と Logistic Regression を用いてデータ構造を確認しました。本記事では、その分析結果を基に特徴量エンジニアリングを試し、交差検証により効果を確認します。
特徴量エンジニアリングの設計方針
前記事では、PCA と Logistic Regression を用いてデータ構造を確認しました。
PCAでは、分散が複数主成分へ分配されており、本データが 多因子的な分散構造を持つことが確認されました。主成分負荷量からは、education-num、hours-per-week、capital-gain、age など複数特徴量が統合的に寄与している様子が観察されました。
一方、Logistic Regression では capital-gain が比較的強い寄与を持つものの、誤分類は特定単変数に集中せず散在していました。
これらの観察を踏まえ、本記事では以下の観点から特徴量エンジニアリングを試します。
- 分布歪み補正を目的とした単調変換
- ゼロ集中構造を反映するしきい値特徴量
- 条件依存効果を想定した限定的な交互作用
各特徴量の有効性は、LightGBM を用いた交差検証により確認します。
特徴量エンジニアリング例
分布歪み補正(単調変換)
- log1p(capital-gain)
- log1p(capital-loss)
ゼロ集中構造(しきい値特徴量)
- capital-gain_flag = 1 (capital-gain > 0)
- capital-loss_flag = 1 (capital-loss > 0)
限定的な交互作用
- capital-gain × education-num
- capital-gain × hours-per-week
- education-num × hours-per-week
CV結果
| Feature | CV AUC mean | std |
|---|---|---|
| Baseline | 0.922214 | 0.001467 |
| log1p(capital-gain) | 0.922260 | 0.001891 |
| log1p(capital-loss) | 0.922394 | 0.001781 |
| capital-gain_flag | 0.922141 | 0.001787 |
| capital-loss_flag | 0.922140 | 0.001935 |
| gain × education-num | 0.922288 | 0.001800 |
| gain × hours-per-week | 0.922168 | 0.001673 |
| education-num × hours-per-week | 0.922199 | 0.001864 |
今回試した範囲では、CVスコアの有意な改善は確認できませんでした。
考察
今回いくつかの特徴量エンジニアリングを試しましたが、CVスコアの有意な改善は確認できませんでした。
Adult Income データはすでに特徴量が比較的整理されており、単純な変換や限定的な交互作用では性能向上につながりにくい可能性があります。
また、この結果は 本シリーズで行った PCA および Logistic Regression による構造観察とも整合的でした。分散や寄与は複数特徴量に分散しており、単一変数や単純な変換による改善余地は限定的だったと考えられます。
感想
最後に、本シリーズを通して Adult Income データを PCA と Logistic Regression の両方から観察したことには一定の意味があったと感じています。
LightGBM のような非線形モデルは高い予測性能を示しますが、データ構造そのものは見えにくくなりがちです。今回、PCA と Logistic Regression を併せて確認することで、特徴量の分散構造や寄与の傾向を俯瞰的に把握することができました。
結果として特徴量エンジニアリングによる大きな改善は見られませんでしたが、モデル性能の背景にあるデータ構造を確認できた点は、本シリーズの一つの収穫だったと考えています。
Github
プロジェクト全体・Notebook・コードはこちら: