SIGNATE Beginner限定コンペ 銀行の顧客ターゲティング

Posted on
この記事は、最終更新日から 4 年以上経過しています。 情報が古い可能性があります。

2020/8月にSIGNATEでBeginner限定コンペ「銀行の顧客ターゲティング」が開催されました。

このコンペでIntermediateへの昇格ラインを超えるためにトライしてみたことをまとめてみたいと思います。

私の結果としては、昇格ラインが 0.86 のときに始めて、 0.856 あたりで頑張ってた最中、 昇格ラインが 0.85 に引き下げられたことで、昇格を果たすという、 達成感が行方不明、状態だったのですが、ひとまず昇格できたので良しとしたいと思います。

昇格後もスコアアップを目指して継続し、結果として、 0.8623 で 2位となることができました。 初めて、本気で参加したコンペだったので、かなり嬉しい結果となりました。

以下では、今回うまく行ったものに、 🎉 を、今回うまく行かなかったものに、 💦 をつけていきます。 なぜうまく行ったのか、なぜうまく行かなかったのかはあまり掘り下げられていないので、 今後、考えていきたいです。

特徴量抽出

所感としてはもう少し、いい特徴量があったんじゃないかな、と感じていますが、 見つけることができませんでした。

モデル

モデルは初手LightGBMではじめました。頭打ちが見えてきたところで、 ニューラルネットワークを取り入れました。最終盤でDeepTablesの存在を知り、 DeepTablesでベストスコアが出せた状況です。

Deep LearningはLightGBMに比べ、学習時間が長く、どう進めていくかが難しかったです。 (内容にも多く依存するところですが、体感では、LightGBMは長くても1時間以内。Deep Learningは10時間程度かかることも)

LightGBM

テーブルデータと言えば、今はLightGBMが良さそうなので、目をつむって、まずはLighGBMを試すことにしました。 (最初始めたときはBenchmarkのコード見てませんでした。。)

しかし、LighGBM だけでは、 0.857 くらいで頭打ちになりました。

Neural Network

カテゴリ変数をNeural Networkで学習する方法を調べていたところEntity Embeddingという手法を見つけたので、 これで行いました。

スコアは 0.852 くらいで、モデルにもっと良いアルゴリズムがあるのではないかなと思っていた矢先に、

DeepTables

フォーラムでDeepTablesが紹介されていて、私もちょうどニューラルネットワークでできないかトライしていた ところだったので、利用させていただきました。(直前にニューラルネットワークでやっていたので、スムーズに 取り込むことができた、とも言えるかもしれません)

これで 0.86 を突破できました。

Random Forest

疑似ラベル (Pseudo Labeling)

アンサンブル (Ensemble)

Random Seed Average

反省

所感

コード

こちら にコンペの過程でできたものを 何も整理せず、そのまま置いてあります。 支離滅裂なコードがあっても、ご容赦ください。

参照