1 ポイント 投稿者 hanco1104 5 시간 전 | まだコメントはありません。 | WhatsAppで共有

原文: han-co.com · コード・ノートブック(韓国語・日本語): GitHub

クレジットカードの限度額を引き上げると、その人がデフォルトする確率は上がるのでしょうか、下がるのでしょうか。常識的には上がりそうです。より多く借りられるからです。ところがデータを開いてみると、正反対です。この記事は、その逆説をデバイアシング(debiasing)で解き、公開データ3種で検証しながら、最後に意外な結論へたどり着く記録です。

Part 0では選択バイアスの話をしました。今回の記事は、その選択バイアスが因果推論と真正面から出会う実践例です。因果推論そのものは基礎連載で別途深く扱いますが、ここではそれが実務でどう機能するかを一足先に示します。コードとデータはすべて公開されているものだけを使いました。

1. 直感と正反対のデータ

まず台湾のクレジットカードデータから始めます。2005年の台湾のカード顧客3万人について、それぞれの限度額と請求額(残高)、そして翌月に延滞したかどうかを収めた公開データです(UCI公開)。限度額、残高、デフォルトを同時に持つ珍しい公開データなので、出発点として適しています。ここで限度額帯ごとの実際のデフォルト率を描いてみます。

[IMG] 限度額帯ごとのデフォルト率。限度額が高いほどデフォルト率は低い

限度額の最下位10%のデフォルト率は35.9%、最上位10%は11.9%です。限度額が高いほどデフォルト率は一貫して低下します(相関係数 −0.15)。

限度額を20倍近く高く与えられた集団のほうが、デフォルトは3分の1程度しか起こしていません。では限度額はどんどん引き上げてよいのでしょうか。もちろん違います。ここには落とし穴があります。

2. 犯人は選択バイアス

限度額はランダムに与えられるわけではありません。既存のモデルやルールに従って、そもそも信用の高い人に高い限度額が付与されます。つまり「限度額が高い」ということは、そのまま「もともと返済できる人」というシグナルです。限度額とデフォルトの負(−)の関係は、限度額の効果ではなく、限度額の裏に隠れた信用力が作った見かけの像です。Part 0で見た選択バイアスが、最も露骨に働く例です。

データをそのまま学習させると、モデルは「限度額が高い = 安全」と学びます。このモデルで「限度額を上げたら?」をシミュレーションすると、デフォルトは減ると答えます。この結果を政策判断にそのまま使うのは危険です。

3. 解法: 限度額を「残差」に変える

核となるアイデアは単純です。信用力が同じで、限度額だけが違う人たちを比べれば、限度額の純粋な効果が見えます。完全なマッチングは不可能なので、代わりに次のようにします。

  1. 信用力特徴量(X)で各自の「予想限度額」を予測します(既存の限度額付与方式の模倣)。
  2. 実際の限度額から予想限度額を引いた値が限度額残差(rL)です。信用力では説明されない、政策や偶然が作った限度額の変動分です。
  3. 残高とデフォルトも同じやり方で残差に変えます。
  4. 限度額残差から残高残差へ、さらにデフォルトへと続くチェーンを立てます(限度額→残高→デフォルト経路)。
  5. デフォルトは0と1なのでロジット空間で差を補正し、最初に予測したデフォルト確率にその補正を足して最終値を作ります。

注意点が2つあります。第一に、データリークを防ぐため、残差は必ず交差適合(cross-fitting)で作らなければなりません。自分自身を見て予測すると、残差が見かけ上小さくなります。第二に、限度額付与が一貫しているほど、残差が大きい人はまれです。そのまれな「自然実験」サンプル(残差が大きい人)に重みを多く与えます。

これは因果推論の Double Machine Learning(DML)と同じ構造です。DMLは次のように要約できます。処置(ここでは限度額)と結果(デフォルト)をそれぞれ機械学習で交絡変数(信用力)から予測して差し引き、残った残差どうしの関係で効果を推定します。機械学習が交絡を柔軟に吸収しつつ、そのモデルのバイアスが効果推定に漏れ込まないよう、交差適合で分離するのが核心です。要するに、限度額という処置から信用力という交絡を取り除く作業です。

始める前に、ひとつ限界を先に指摘しておきます。私たちが統制する信用力特徴量は、本当の限度額付与基準(所得、外部信用スコアなど)の代理変数にすぎません。したがってデバイアシングはバイアスを「減らす」のであって、「完全になくす」わけではありません。統制変数が貧弱なデータほど、除去後に残る負(−)には取り除けなかったバイアスが混じっている可能性があります。

4. 検証1、台湾クレジットカード: バイアスは消えたが、効果もほぼ消えた

デバイアシングを適用すると逆説は解けました。限度額とデフォルトの見かけの相関 −0.15 のうち約70%が選択バイアスで、除去後に残った直接効果は小さな負(−0.05)でした。仮説(「限度額↑→デフォルト↑」)とは逆方向です。

では仮説はどこで検証するのでしょうか。反事実(counterfactual)として、全員の限度額を0.5倍から2倍まで変えてみたときの予測デフォルト率を描いた図です。

[IMG] 反事実。限度額を増やしたときの予測デフォルト率

赤(naive)は限度額↑→デフォルト↓という逆説をそのまま出力します。残高チェーン(青)はほぼフラットになります。利用率と直接(direct)チェーン(紫、緑)は弱い負を維持します。

詳しく分析すると、次の点がわかります。

  • 限度額→残高は正(+)ですが、伝達率は5.7%と弱いです。限度額を1増やしても残高は0.057しか増えないという意味です。全額が引き出される分割払いローンならこの値は100%近いですが、それに比べるとリボルビング限度額はほとんど使われず、負担に変わりにくい(sticky)ということです。
  • 本当の負担シグナルは残高ではなく利用率(残高/限度額)でした。そして限度額を増やすと利用率はむしろ大きく下がります(−0.39、余裕が生まれる)。
  • 残高だけを取り出して線形にきれいに推定すると、残高→デフォルトは有意な正(+)(p=0.001)となり、仮説は成り立ちます。ただし大きさはきわめて小さいです。

ここから方法論上の教訓がひとつ得られます。シグナルが弱い残差段階に柔軟なGBMを使うと過学習します。train AUCは上がるのに test AUCはむしろベースモデルより下がり、trainとtestの乖離は0.047でベースモデルの0.008より6倍も広がりました。一方、残差だけを使う線形2段目ステージは乖離が0.009でほとんどなく、本当の効果をきれいに復元しました。弱い因果シグナルは線形や正則化モデルで扱うのが適切な場合があります。

5. 落とし穴がひとつ: 観測窓が短すぎる

このデータのデフォルトは「翌1か月」の延滞です。実務の貸倒モデルは通常12か月先を見ます。短い観測窓には、分析に大きく影響する別のバイアスがひとつあります。延命(postponement)です。限度額に余裕がある人は、その余裕で1か月余計に持ちこたえられるため、デフォルトが観測窓の外へ押し出されます。デフォルトが減ったのではなく先送りされただけなのに、「安全」と記録されてしまいます。

これはデバイアシング(交絡除去)では捉えられない別種のバイアス(生存、打ち切り)です。観測窓を1か月から5か月へ伸ばしながら確認しました。

[IMG] 観測窓を伸ばしたときのデバイアシング後の限度額効果

観測窓を伸ばしても負(−)が正(+)に反転することはありませんでした(1か月 −0.06 から 5か月 −0.13)。ただしこの実験は、窓を伸ばすほど信用力統制が薄くなって交絡し、5か月でも12か月には大きく届きません。つまり UCI(1か月)では12か月問題を検証できないという結論です。

そこで本当の長期データが必要でした。

6. 検証2、Lending Club: 長期、そして「引き出された」与信

Lending Clubは米国のP2P融資プラットフォームです。2007年から2013年の間に実行され、すでに満期を終えたローン23万件を使います。満期が終わっているので、完済か償却(charge-off)かという最終結果がわかります。ここに同じデバイアシングを適用すると、決定的な区別が浮かび上がります。

[IMG] Lending Club。引き出し済み与信とリボルビング限度額

  • loan_amnt(引き出し済み与信、緑): デバイアシング後も、与信↑→デフォルト↑がきれいに成り立ちます(p<0.0001)。複数のリスク等級で一貫して増加し、むしろバイアス除去が効果をさらに強めました。仮説成立です。
  • total_rev_hi_lim(未使用のリボルビング限度額、紫): 長期でも効果はほぼ0です。UCIの限度額と同じです。

差の本質は観測窓ではなく、「引き出された与信か、未使用限度額か」でした。分割払いローンは全額が引き出されて100%負担になりますが、リボルビング限度額は使う前は負担ではありません(headroom)。両者をつなぐ橋が伝達率(限度額→残高)であり、UCIではそれが5.7%にすぎなかったため、限度額効果が弱かったのです。

7. 検証3、Home Creditカード: 貸倒定義が符号を反転させる

Home CreditはKaggleコンペで公開されたデータで、クレジットカードの月次パネルと申込ローン(分割払い)の2種類を含んでいます。まずカードパネル、つまり同じリボルビング商品で実際の限度額、残高、延滞を数十か月追跡したデータで決着をつけようとしました。ところが結果はまた反転しました。今回は警告でした。

実際に使われているアクティブカード約1.6万件を見ると、利用率が高いほどデフォルトが低く出るという、UCIとは正反対の方向が現れました。なぜでしょうか。

[IMG] UCIとHome Credit。利用率からデフォルトへの符号が反転する

左のUCIでは利用率が高いほどデフォルト率が上がります(本当の負担)。右のHome Creditでは最下位の利用率分位(残高がほぼ0)にだけデフォルトが約14%集中し、残りの分位は0.1%前後です。

原因は明確でした。Home Creditの「デフォルト(SK_DPD≥90)」は信用負担ではなく、少額残高を放置して延滞になった休眠口座を捉えていました。カードを実際に使っている人ではデフォルトが事実上0です。つまりデフォルト(outcome)の定義が「信用損失」ではなく「放置」を捉えてしまうと、どれだけデバイアシングがうまくいっても、符号そのものが丸ごと反転します。

8. 検証4、Home Credit本ローン: ついに逆説が反転する

ここまでデバイアシングを試みてきましたが、rawで負(−)だった逆説が、デバイアシング後に正(+)へ反転するデータはありませんでした。その条件を満たすデータもすぐ隣にありました。同じHome Creditの申込ローン(カードではなく本ローン、デフォルト率8%、30万件)です。全額が引き出される分割払いローンで、デフォルトは本当の信用損失です。そして今回は外部信用スコア(EXT_SOURCE)と所得を同時に統制しました。

[IMG] Home Credit本ローン。デバイアシングが逆説を反転させる

左(raw)は与信が大きいほどデフォルトが低いという逆説(4変数すべて負)です。右(デバイアシング)は信用力を除去すると正(+)に反転します。

変数 raw相関 デバイアシング係数 判定
ローン金額 −0.030 +0.018 反転
月次返済額 −0.013 +0.059 (p≈10⁻²⁰) 反転(最強)
所得対比ローン −0.008 +0.046 反転
購入物件価格 −0.040 −0.010 反転せず

表の係数は標準化した残差に対するロジット係数なので、大きさ自体は小さいです。月次返済額 +0.059 は、1標準偏差増えるとデフォルトオッズが約6%上がる程度です。30万件あるためp値は極端に小さいのですが、これは「効果が大きい」という意味ではなく、「符号が正(+)であることが確実だ」という意味です。この記事の主張は大きさではなく、方向(負から正へ反転すること)にあります。

興味深いことに、購入物件価格(AMT_GOODS_PRICE)だけは反転しません。返済しなければならない負担はローン額と返済額であって、物件価格そのものではないため、理論と正確に一致しています。

では、なぜここでは反転し、UCIやLending Clubのリボルビング限度額では反転しなかったのでしょうか。2つの条件が同時に満たされる必要があります。第一に、引き出し済み与信(全額借りた実負担)であり、本当の効果が正(+)であること。第二に、選択バイアスが強く(大きなローンほど優良顧客)、rawが負(−)であること。本ローンはこの両方を満たします。だから raw では選択バイアスに隠れて負で、デバイアシングすると本当の負担効果である正が現れるのです。

9. 総合: 逆説はいつ反転するのか

信用の種類 rawの限度額-デフォルト デバイアシング後 事例
未使用のリボルビング限度額 負(逆説) ほぼ0 UCI, LC, HCカード
引き出し済み与信、弱い選択 正(逆説なし) LCローン額
引き出し済み与信、強い選択 負(逆説) 正(反転) HC本ローン

3つのデータを貫いて残るものは2つです。

  • 「限度額↑→デフォルト↑」は普遍法則ではありません。未使用限度額は使わなければ負担ではないため効果はほぼ0であり、利用率と残高の符号はポートフォリオと貸倒定義に左右されます。
  • しかし逆説は、条件が合えば実際に反転します。デバイアシングは偽の負(−)を取り除き、本当の正(+)を復元します。ただし、それがあり得る信用(引き出し済みの実負担)に限られます。

10. では実務では

この結果を実務に持ち込むとき、まず2点を強調したいと思います。

ひとつは限界です。デバイアシングが統制する信用力特徴量は、本当の限度額付与基準の代理変数にすぎないため、残った効果を「純粋な因果」と断定してはいけません。特に所得や外部スコアがなく、実際の信用力を再現しにくいデータほどそうです。またこの記事ではデフォルト確率(PD)を扱いましたが、実務の貸倒率は損失金額ベースであることが多いです。損失金額は限度額と機械的に連動するので(限度額↑→エクスポージャ↑→損失金額↑)、同じデータでも符号が正(+)に見えることがあります。何を outcome に置くかで結論は変わります。

だから方法と結論は分けて考えるべきです。

  1. 方法(デバイアシング)は妥当で移植可能です。本当に正(+)の効果があるとき(Lending Clubの引き出し済み与信)、方法はそれをきれいに復元しました。他のデータで負(−)が出たのは方法の失敗ではなく、「その信用はもともとデフォルトを増やさない」という事実を正確に反映したものです。
  2. 方向性の結論は移植できません。公開データだけで「どのポートフォリオでも限度額↑→デフォルト↑」と断定することはできません。
  3. 実務データで必ず確認すべきことが2つあります。第一は伝達率(dBalance/dLimit)、限度額増額が実際の引き出し負担にどれだけ転換されるかです。第二は貸倒定義で、12か月貸倒が本当の信用損失を捉えているのか、それとも放置や少額延滞を捉えているのかです。

この2つが限度額効果の符号を決めます。デバイアシングは出発点にすぎず、答えはそれぞれのポートフォリオの中にあります。


付録。データと再現

  • UCI "Default of Credit Card Clients"(台湾、3万件、1か月延滞)
  • Lending Club 2007年から2013年の満期完了ローン(23万件、charge-off)
  • Home Credit credit_card_balance カードパネルと application_train 本ローン(30万件、デフォルト8%)
  • 方法: K-fold交差適合残差化、isotonicキャリブレーション、残差重み付け、線形2段目ステージ(DML)。Python(pandas, scikit-learn, lightgbm, statsmodels)。
  • コードとノートブック(韓国語・日本語): github.com/HangilKim11/blog-research

この記事の数値と図はすべて公開データで再現できます。本文の結論は公開データに関するものであり、実務データの符号は上の2点で直接確認する必要があります。


この記事は han-co.com に最初に掲載され、韓国語と日本語で同時公開しています。原文とメール購読 → https://han-co.com/ko/blog/credit-limit-debiasing

まだコメントはありません。

まだコメントはありません。