0
0

[備忘録] SIGNATE Cup 2024

Posted at

はじめに

SIGNATEのコンペティションに参加。

コンペティション概要

旅行会社の保有する顧客データ(属性や志向、営業担当との接触履歴等)を元に、旅行パッケージの成約率を予測するモデルを構築するコンペティション。

詳細は公式HPを参照。

流れ

期間は約1ヶ月だったため、1週間ごとに計画を立てた。

  • 1週目 ▶︎ 前処理、EDA
  • 2週目 ▶︎ 特徴量の作成
  • 3週目 ▶︎ 機械学習モデルの選定
  • 4週目 ▶︎ ハイパーパラメータチューニング

1. 前処理

ここでは表形式で、前処理の概要のみ記載する。
コードはTOP記載のGitHubリポジトリを参照。

  • "特徴量" ▶︎ 特徴量の名前
  • "処理概要" ▶︎ 前処理の概要。特徴量ごとの処理内容を記載している。
  • "Nan値埋め" ▶︎ Nan値をどのように埋めたかを記載している。なお、元のデータ数が小規模なため、行ごと削除する方法は取っていない。
特徴量 処理概要 Nan値埋め
Age 半角数字(int)への統一 平均値(整数)
TypeofContact ダミー変数化 無し
CityTier 無し 無し
DurationOfPitch 秒数(int)への統一 平均値(60刻みで四捨五入)
Occupation ラベルエンコーディング 無し
Gender 表記ゆれの修正、ダミー変数化 無し
NumberOfPersonVisiting 無し 無し
NumberOfFollowups 外れ値処理(3桁値を100で割って1桁にする) 無し
ProductPitched 'Basic', 'Standard', 'SuperDeluxe', 'Deluxe', 'King' に名寄せ(str) 無し
PreferredPropertyStar 無し 無し
NumberOfTrips 年での回数に修正(int) 平均値(整数)
Passport 無し 無し
PitchSatisfactionScore 無し 無し
Designation 'VP', 'AVP', 'Senior Manager', 'Manager', 'Executive' に名寄せ後、この順にラベルを付与(int) 無し
MonthlyIncome "月収○○万円"のような文字列値含め数値型(int)に修正 平均値(整数)
customer_info 以下3つに分割 無し
↳婚姻状況 "未婚", "離婚済み", "結婚済み", "独身" に分類 無し
↳車の有無 有り:1, 無し:0 に分類 無し
↳子供の人数 人数を数値型(int)に修正 無し

2. モデル選定

LightGBM, XGBoost, CatBoostを試行。
アンサンブルは行わず、どれか1つに絞る方針としていた。

また、検証時はk Foldクラスを用いた.(分割数:10)
(結果提出したのはCatBoostで学習したモデル)

3. 特徴量生成

前処理の段階で既に着手していたが、結果としては"customer_info"を"婚姻状況", "車の有無", "子供の人数"に分けることで特徴量を作成した。

4. ハイパーパラメータチューニング

(この時点で、機械学習モデルは検証時のスコアより、CatBoostとしていた。)
グリッドリサーチでチューニングした。理由は以下。

  • データが比較的小規模であったため
  • 計算時間を短縮したかったため

チューニングの対象としたパラメータは以下。

  • depth
  • learning_rate
  • l2_leaf_reg
  • iterations
  • bagging_temperature
  • random_strength

他にもいくつか増やしたがスコアが下がったため、上記とした。

やりたかったが出来なかったこと

  • 機械学習によるMonthlyIncomeのNan値埋め
  • アンサンブル学習によるモデル構築

1つ目は時間に余裕が無く、2つ目は自分の知識不足のため着手できず。

感想

メダル獲得は素直に嬉しいし、cvスコア・lbスコア・最終スコア全体があまりシェイクしなかったので、そこそこ満足。
だが、トップ層でシェイクダウンがかなり起きており、運営側・参加者共にコンペに対し問題視しているようなので、あまり一喜一憂せず次の学習を進めていきたい。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0