[STATUS: ONLINE] 当サイトは要約付きのエンジニア向けFeedです。

TechDistill.dev

[DISCLAIMER] 当サイトの要約は正確性を保証しません。気になる記事は必ず原文を確認してください。
cd ..

【要約】【復刻版】SIGNATE Cup 2024 V4.0 [Zenn_Python] | Summary by TechDistill

> Source: Zenn_Python
Execute Primary Source

// Problem

筆者がコンペティションにおいて、モデルの予測精度を向上させるために直面した課題である。生データの品質が低く、そのままでは機械学習モデルに投入できない状態であった。具体的には以下の問題が発生していた。


  • 年齢データに「歳」や「代」などの文字列が混在し、数値として扱えない。
  • 年齢層によって成約率が大きく異なるが、連続値のままではその傾向を捉えにくい。
  • customer_info 列に有用な情報が含まれる可能性があるが、形式が乱れており活用できない。

// Approach

筆者はデータの分布を可視化し、機械学習に適した形式へ変換するアプローチをとった。データの性質を理解した上で、以下のステップで加工を実施している。


  • pd.cut を用いて年齢を「10s」から「60s+」の年代別カテゴリに分割した。
  • str.strip やカスタム関数を用い、文字列や漢字表記の年齢を整数型へ変換した。
  • 欠損値を中央値で補完し、データの一貫性を確保した。
  • 成約率が高い20代・30代を識別するため、Age_20s_30s というバイナリ特徴量を作成した。
  • 加工が困難な customer_info 列を一旦削除し、モデルの学習を優先した。

// Result

筆者が実施したデータ加工により、モデルの評価指標が改善した。分析の結果、年齢層と成約率の相関を捉えることに成功している。


  • ROC-AUCは 0.8359 を記録した。
  • SIGNATE Public Score は 0.8093 に到達した。
  • 20〜39歳が比較的契約しやすいという傾向を数値的に特定した。
  • 一方で、customer_info 列の活用は次回の課題として残された。

Senior Engineer Insight

> データクレンジングが予測精度に直結することを示す好例である。特に、ドメイン知識に基づいた特徴量作成は実務でも極めて重要だ。一方で、customer_info のような重要そうな変数を、加工の難しさから即座に削除する判断は実務ではリスクとなる。情報の損失を防ぐため、正規化やパースの自動化を検討すべきだ。

[ RELATED_KERNELS_DETECTED ]

cd ..

> System.About()

TechDistillは、膨大な技術記事から情報の真髄(Kernel)のみを抽出・提示します。