〈はじめに〉
こんにちは、Data Science League エンジニアリング代表オオキ、エンジニア エザワです。
このたび、一般社団法人金融データ活用推進協会(FDUA)様が主催する《第1回金融データ活用チャレンジ》にDSLから支部を含め、4チームが参加させていただきました。
〈金融データ活用チャレンジとは〉
実際の金融機関保有データを模した、実データを基にAIアルゴリズムによって作成された架空のデータを用いて競うデータ分析コンペティションです。
今回の課題は「 住宅ローン契約者の分析 」でした。内容としては、「顧客の属性情報や銀行口座の入出金、預金残高などの金融データを用いて延滞の予測モデルを構築し、その顧客が3か月後から 連続して延滞するかどうかを予測する 」というもので、評価指標はAUCです。
本コンペではDatabricksという統合データ分析基盤を使用します。データやチュートリアルはDatabricks上で取得できたので、「ダウンロード→アップロード」などの作業がなく楽でした。
〈予測までの流れ〉
ルールの実装方法に書いてある通り、以下のように行います。
1. Preprocessing(前処理)
ここで日付データに直したり、特徴量を生成したりします。説明変数はATMの使用回数、振込入出金金額など銀行口座に関するデータが多く、チームメンバーが全員大学生だったこともありどのような特徴量を作成するべきか全然分かりませんでした。しかし、本コンペの公式Slackワークスペースがあり、銀行や金融系企業で働いている方々の考え方や、やりとりを見ることができてとても参考になりました。
2. Learning(学習)
今回はLightGBMを使用しました。この文章を書いているエザワは初めてLightGBMの実装をしたのですが、精度が良すぎて驚きました。すごいです。
3. Predicting(予測)
2.で学習をしたモデルを使用して予測結果を出力します。大抵このまま提出をしてしまうのですが、10回に1回くらい「提出した結果エラーだったよ」というメールが届き悲しくなります(提出が完了すると評価結果がメールで届きます)。見直しは大切ですね。
〈チュートリアルについて〉
本コンペでは5つのチュートリアルがありました。
- Databricksにおけるデータ操作
- Databricksにおける機械学習モデルの訓練
- 提出方法
- 分析例×2
Databricksは今回初めて使用したのですが、このチュートリアルと公式Slackのおかげで何とかなりました。
また、チュートリアルを全て終えると0.89くらいのスコアが出るので、初心者にとってはこれだけで嬉しく満足でした。
<特徴量について>
今回、特徴量に振り回されています。
特徴量を工夫したら一度大幅にスコアが上がりとても嬉しくなったのですが、その後は下がる一方です。
給与振込口座として使用しているかどうか、などもやってみましたがそもそもが不均衡データなので極端にデータ数が少なくなってしまったこともあり上手くいかず。難しい。
<参考にした記事・本など>
1. 【FDUA】第一回金融データ活用チャレンジの戦い方を考える
コードが前処理・学習・予測と全て書いてあり、とても参考になりました。
2. 【FDUA】第一回金融データ活用チャレンジをやってみている
Databricks上でのAutoMLの使い方がわからなかったのでとても参考になりました。
3. Kaggleで勝つデータ分析の技術
今回は辞書的に使用しました。
<その他・感想>
今回、初めてsparkを使用したのですが、データがどのような特性を持っているかを見る際に可視化されていてとても便利でした。欠損値の割合、ゼロの割合、分布などなど。
今まではまだ技術力がないことを言い訳にしてコンペに出ていなかったのですが、今回は勢いで参加しました。チュートリアルはとても親切で、Slackを見ればドメイン知識に長けた方々がいるという最高の環境でとても勉強になりました。あと数日間ですが最後の追い込みを頑張ろうと思います。