Home Credit Default Risk　復習

おはようございます。Hikari30です。

今日は、Home Credit Default Riskというkaggleでかなり前に開催されたコンペの振り返り＆上位解法を簡単に振り返っていきたいと思います。

これを読んでくださる方の何かの役に立てたら幸いです。

# コンペの概要

2018年の夏ごろに開催されたコンペであり、当然技術レベルは現在よりも低い。
さらに2018年はcatboostが公開された年でもありますね。

# コンペの概要

### 問題背景

多くの人々は、信用履歴が不十分または存在しないためにローンの取得に苦労しています。その結果、信頼できない貸し手によって不当な扱いを受けることが多く、この層の金融包摂が課題となっています。

### Home Credit Group の取り組み

Home Credit Groupは、銀行サービスを受けていない人々にも金融サービスを提供し、彼らの借入体験を安全かつポジティブなものにすることを目指しています。このために、テレコムデータや取引情報などのさまざまな代替データを活用し、顧客の返済能力を予測しています。現在、Home Creditは統計的手法や機械学習モデルを用いてこれらの予測を行っていますが、Kaggleコミュニティに対してデータの潜在能力を最大限に引き出すための協力を呼びかけています。これにより、返済能力のある顧客が不当にローンを拒否されることを防ぎ、顧客が成功を収められるような元本、期間、返済計画を提供することが可能になります。

### コンペティションの目的

参加者は、提供されたデータセットを用いて、各顧客（SK_ID_CURR）のTARGET変数（ローンの返済の可否）を予測する確率を算出します。これにより、Home Creditはより正確なリスク評価を行い、適切なローン提供が可能となります。

### 評価基準

提出された予測モデルは、ROC曲線下面積（AUC）を基に評価されます。AUCは、予測確率と実際のターゲットとの間の分類性能を測る指標であり、高いAUC値はモデルの優れた性能を示します。

### 所感
今回のデータではTARGET列の大多数が０になっているので、AUCスコアを上げるには１であるものの確率をなるべく上げることに注力したほうがよさそうです。

# 上位解法について

## 1位解法について
### データと特徴量エンジニアリング

基本的な特徴量:

多くのカーネルで使用された、SK_ID_PREVやSK_ID_BUREAUに基づく集約特徴量を約700種類作成。


### ベースモデル

使用アルゴリズム:

LightGBM、XGBoost、CatBoost、線形回帰など多様なモデルを採用。
Neural Networks（NN）は試みたが、Boosted Trees（LGBMやXGB）に劣る結果に。

クロスバリデーション:

5分割のStratifiedKFoldを使用し、モデルの安定性を確保。
アンサンブル

レベル1:
各チームメンバーが作成したベースモデルの予測を結合し、NN、XGBoost、LightGBM、Hill Climberなどでスタッキング。

レベル2:
レベル1の出力をさらにNN、ExtraTrees、Hill Climberで再スタッキング。

最終予測:
レベル2のモデル予測を均等にブレンドして最終予測を作成。
その他の取り組みと洞察

ハイパーパラメータチューニング:
チーム全体では限定的なチューニングに留め、アンサンブルによる多様性で補完。

特徴量の重要性:
特徴量エンジニアリングと選択が最も重要であり、適切な特徴量セットが競争力を高める鍵となった。

ニューラルネットの役割:
Boosted Treesに比べて劣るものの、アンサンブルの多様性を向上させるために有用。

### 結論

この上位解法では、徹底した特徴量エンジニアリングと多様なベースモデルの採用、効果的なアンサンブル戦略が成功の鍵となりました。特に、チームメンバー間での特徴量の共有と統合が高いパフォーマンスを実現するために重要でした。最終的には、単一モデルではなく、複数のモデルを組み合わせることで、コンペティションでの優位性を確保しました。

## 2位解法

はじめに

チーム ikiri_DS は、Home Credit Default Risk コンペティションで2位を獲得しました。このチームは12名のKaggle参加者で構成され、各メンバーが専門分野を担当し、総合的なアプローチで高精度な予測モデルを構築しました。

### アプローチの概要

特徴量エンジニアリング

次元削減: PCA、UMAP、T-SNE、LDAなど多様な次元削減手法を適用し、高次元データの効率的な表現を実現。
遺伝的プログラミング: カーネルからの遺伝的プログラミングを活用して新たな特徴量を生成。
ブルートフォース特徴量探索: 約1TBの特徴量プールから有用な特徴量を選定。
メタ特徴量: トレーニングデータとBureauデータに基づくメタ特徴量を作成し、モデルの多様性を向上。
モデル構築

アルゴリズムの比較: CatBoost、LightGBM（DART含む）など複数の勾配ブースティング手法を比較・適用。
パラメータチューニング: 各モデルのハイパーパラメータを最適化し、性能を最大化。
ブレンディングとスタッキング

レベル1: ベースモデルの予測結果を結合し、ニューラルネットワーク（NN）、XGBoost、LightGBM、Hill Climberなどでスタッキング。
レベル2: レベル1の出力をさらにNN、ExtraTrees、Hill Climberで再スタッキング。
最終予測: レベル2のモデル予測を均等にブレンドして最終的な予測結果を生成。
ポストプロセッシング

残差補正: ニューラルネットワークの予測結果に対する残差補正を実施。
アドバーサリアルバリデーション: トレーニングデータとテストデータの分布の違いを考慮し、モデルの汎化性能を向上。


### 成果と洞察

多様な特徴量とモデルの採用: 次元削減、遺伝的プログラミング、メタ特徴量など多様な特徴量を活用し、CatBoostやLightGBMなど多様なモデルを組み合わせることで高い予測性能を実現。
ブレンディングの効果: 複数レベルのブレンディングとスタッキングにより、モデルの汎化性能と安定性を向上。
ポストプロセッシングの重要性: 残差補正やアドバーサリアルバリデーションを活用することで、テストデータへの適応力を強化。

## 3位解法
### アプローチの概要

特徴量エンジニアリング

過去のクレジットスコアリング経験を基に、スコアリングプロセスとデータの理解に基づいた特徴量を作成。
各データブロック（ベースアプリケーション、最新アプリケーション、Bureau、クレジットカード、分割払い）ごとに別々のモデルを構築し、サブモデルからの予測値や特徴量をメインモデルに組み込む。
最終的にメインモデルには124の特徴量を使用し、全体では1000以上から約250の有用な特徴量を選定。
ローカルクロスバリデーションを用いて特徴量を一つずつ選択し、モデルの制御と改善を実施。

統計的視点から特徴量を作成し、異なる集約方法を採用。
約50種類の異なるモデル実験を行い、その中から相関の低い7つのモデルを選定し平均化することで安定したクロスバリデーションスコアを達成。
最終的にはLightGBM、ランダムフォレスト、Extra Trees、線形回帰の4つのセカンドレベルスタッカーを使用し、これらを単純に平均化して最終予測を行う。
### モデル構築

各データブロックごとに個別モデルを構築し、予測値をメインモデルに統合。
Aggregatedデータよりも非集約データを使用したモデルがメインモデルにおいて有効であることを発見。

多様なモデル（LightGBM、ランダムフォレスト、Extra Trees、線形回帰）を構築し、それぞれの予測結果をスタッキング。
異なるサブセットの特徴量とモデル予測を用いて、モデルの多様性を確保。
ブレンディングとスタッキング

それぞれのモデルからトップ特徴量を共有し、モデルの性能を向上。
最終的な提出は、4つのセカンドレベルスタッカー（LightGBM、ランダムフォレスト、Extra Trees、線形回帰）の単純平均で行い、プライベートLB: 0.80511、パブリックLB: 0.80969、CV: 0.80855 を達成。

純粋な特徴量エンジニアリングとモデルの活用:
リークや重複行を使用せず、堅実な特徴量エンジニアリングとモデル構築に注力した結果、高い予測性能を実現。
モデルの多様性の重要性:
多様なモデルを構築し、それらを効果的にブレンディングすることで、モデルの安定性と汎化性能を向上。
クロスバリデーションの信頼性:
ローカルクロスバリデーションを信頼し、コンペティション中もモデルの改良を継続した結果、最終的に高いプライベートLBスコアを達成。


# 感想
上位解法は以上となっていました。
特に、印象的だったのは今回のコンペでは特徴量選択が大きなキーポイントになっている可能性が高いということです。あまりモデルでの工夫は有益なスコア向上につながらない可能性もあります。また、モデルに関しては、決定木系のモデルが非常に強いことも挙げられると思います。

冒頭に述べましたが、まだこの時代にはcatboost使用者が少ないことも挙げられると思います。
もしかしたら現代のモデルを使用すれば、過去コンペの上位解法に知被くことは容易なのかもしれません。

ここまで読んでいただきありがとうございました。

※追記
また、特徴量の作成方法に関してはどのように作成するのか、かなり問題だと思うので、知見が得られ次第この記事を更新していこうと思います。