「【第40回_Beginner限定コンペ】銀行の顧客ターゲティング」に参加しました
概要
2023年11月に開催された【第40回_Beginner限定コンペ】銀行の顧客ターゲティングに参加しました。
結果
43位/188人の 0.8510367
で、Tier5昇格ボーダーの AUC=0.850847
を越えたので、Intermediateに昇格することができました。
参加記録
リポジトリ
11/22
JOINED
前々からこのコンペの存在を把握していたが、手を動かし始めるまで半月以上かかってしまった。
とりあえず手元にあった「kaggleスタートブック」と同じような実装をしてみた。
ロジスティック回帰をしてみたかったのだが、全然値が合わない上にバグりまくって全然ライブラリが動いてくれない。
途中で balanced
というオプションを付けて動かしてみるも、目で見てわかるレベルで値が合わなかった。
11/24
コンテストの説明欄を覗いてみると、どうやら同じ内容のコンペが開催されている[1]ことを知った。とりあえずそれに準拠して特徴量を作ってみることにした。(値が全然変わっていることに気づいたのは数日後)
モデルの評価をする方法が、現状提出するしかなかったので、打開策をネットでググる。K-Fold
というテクニックがあるようなので、それを実装した。
7回目の提出。スコアは 0.5075656776769024
K-Fold
で算出していたのはACCだったが、本コンペで使われている指標はAUCなことに気づかず、しばらく悩む。
11/25
悩んでいる内に、日付が変わった。指標がAUCであることに気づく。
前日から「kaggleスタートブック」のlightGBM
を使用したモデルを真似て作っていた。適当に使えなさそうな特徴量を抜いたものでモデルを構築してみた。
8回目の提出。スコアは 0.7215746258729863
思い切って全部のデータを利用したモデルを組んでみる。手元のスコアは0.8464308663310559
となった。
9回目の提出。スコアは0.8406472773414975
前日に軽く作った特徴量がまったく違うデータを基にした物だと気づき、修正した。
その他、
- 最終接触時間の外れ値を
にNaN - 無職と退職者に
NotWorking
フラグ
などの処理をした。
10回目の提出。スコアは0.8434566903757706
しばらく時間が経ってから、ハイパーパラメータの調整に挑戦した。
12回目の提出。スコアは0.8440537344450356
11/26,27,28
スコアが惜しいこともあり、パラメータの調整に全力を注いでしまった。しかし、得られるものはあまりなかった。(Optunaの使い方が分かったのはちょっとうれしかったけど)
11/29
改めてデータを見直して、有効そうな特徴量を探した。
- previousの2値化
- 「最終接触時間」と「接触回数」の積を取って、「合計接触時間」の概算
24回目の提出。スコアは0.8510367
反省点
知らないことばかりだったので、やれることはやれるだけやった。そのうえで、パラメータ調整は本当に最後の手段だということを理解した。
次回に向けて
次回コンペに出る際には、しっかりと特徴量を作成することに注力したい。
解法の管理について
jupyter notebookが便利だったので次回からも使用したいが、リポジトリのデータを圧迫してしまったり、いちいち演算をしたタイミングで変更判定になってしまったりと、Git/GitHubとの相性が良くなかった。このあたりについても改善していきたい。
Discussion