मूल लेख: han-co.com · कोड·नोटबुक (कोरियन·जापानी): GitHub
अगर किसी व्यक्ति की credit card limit बढ़ा दी जाए, तो क्या उसके डिफॉल्ट होने की संभावना बढ़ेगी या घटेगी? सामान्य समझ से तो यह बढ़ती हुई लगती है, क्योंकि वह ज़्यादा उधार ले सकता है। लेकिन डेटा खोलकर देखें तो तस्वीर बिल्कुल उलटी है। यह लेख उस paradox को debiasing से सुलझाने, तीन सार्वजनिक डेटा सेट से उसे सत्यापित करने, और अंत में एक अप्रत्याशित निष्कर्ष तक पहुँचने का रिकॉर्ड है।
Part 0 में हमने selection bias की बात की थी। इस लेख में वही selection bias causal inference से सीधे टकराता हुआ एक व्यावहारिक उदाहरण बनकर सामने आता है। causal inference को हम बुनियादी श्रृंखला में अलग से गहराई से कवर करेंगे, लेकिन यहाँ पहले यह दिखाया गया है कि वह वास्तविक कामकाज में कैसे काम करता है। कोड और डेटा, दोनों ही पूरी तरह सार्वजनिक स्रोतों से लिए गए हैं।
1. intuition के बिल्कुल उलट डेटा
शुरुआत ताइवान के credit card डेटा से करते हैं। यह 2005 में ताइवान के 30,000 कार्ड ग्राहकों का सार्वजनिक डेटा सेट है, जिसमें हर व्यक्ति की limit, billed amount (balance), और अगले महीने उसने delinquency की या नहीं, यह शामिल है (UCI public). limit, balance, और default—तीनों को एक साथ रखने वाला यह दुर्लभ सार्वजनिक डेटा सेट शुरुआती बिंदु के लिए उपयुक्त है। यहाँ हम limit buckets के अनुसार वास्तविक default rate को प्लॉट करते हैं।
[IMG] लिमिट buckets के अनुसार डिफॉल्ट दर। लिमिट जितनी अधिक, डिफॉल्ट दर उतनी कम
सबसे निचले 10% limit समूह का default rate 35.9% है, जबकि सबसे ऊपरी 10% का 11.9%। limit जितनी अधिक है, default rate उतना ही लगातार घटता है (correlation coefficient −0.15).
जिस समूह को लगभग 20 गुना अधिक limit मिली, उसका default लगभग एक-तिहाई स्तर पर है। तो क्या इसका मतलब है कि limit खुलकर बढ़ा देनी चाहिए? बिल्कुल नहीं। यहाँ एक जाल छिपा है।
2. असली वजह: selection bias
limit यादृच्छिक रूप से नहीं दी जाती। मौजूदा मॉडल या rules के आधार पर शुरू से ही बेहतर credit quality वाले लोगों को अधिक limit दी जाती है। इसलिए "limit अधिक है" का मतलब अक्सर "यह व्यक्ति मूलतः अच्छा चुकाने वाला है" भी होता है। limit और default के बीच दिखने वाला negative (−) संबंध limit का प्रभाव नहीं, बल्कि limit के पीछे छिपी creditworthiness का बनाया हुआ भ्रम है। यह वही selection bias है जिसे Part 0 में देखा था, और यहाँ यह सबसे खुलकर काम करता है।
अगर डेटा को ज्यों का त्यों model में डाल दिया जाए, तो model यह सीख लेता है कि "higher limit = safer"। फिर इसी model से अगर पूछा जाए "अगर limit बढ़ाई जाए तो?", तो वह जवाब देगा कि default घटेगा। इस परिणाम को policy decision में सीधे इस्तेमाल करना खतरनाक है।
3. समाधान: limit को "residual" में बदलना
मुख्य विचार सरल है। अगर समान credit quality वाले लोगों में सिर्फ limit अलग हो, तो limit का शुद्ध प्रभाव दिख सकता है। perfect matching असंभव है, इसलिए इसके बदले यह किया जाता है।
- credit features (X) से हर व्यक्ति की 'expected limit' का अनुमान लगाया जाता है (मौजूदा limit-allocation प्रक्रिया की नकल)।
- actual limit से expected limit घटाने पर limit residual (rL) मिलता है। यह limit का वह हिस्सा है जिसे credit quality से समझाया नहीं जा सकता, यानी policy या संयोग से बना variation।
- balance और default को भी इसी तरह residual में बदला जाता है।
- limit residual से balance residual, और फिर default तक जाने वाली chain बनाई जाती है (limit→balance→default path)।
- default 0 और 1 होता है, इसलिए logit space में अंतर को adjust किया जाता है, और शुरुआती predicted default probability में यह adjustment जोड़कर अंतिम मान बनाया जाता है।
यहाँ दो सावधानियाँ हैं। पहली, data leakage रोकने के लिए residuals को cross-fitting से बनाना अनिवार्य है। अगर model खुद उसी sample को देखकर prediction करेगा, तो residual नकली रूप से बहुत छोटे हो जाएँगे। दूसरी, limit allocation जितना अधिक सुसंगत होगा, उतने कम लोग बड़े residual वाले मिलेंगे। इसलिए उन दुर्लभ "natural experiment" samples (जिनके residual बड़े हैं) को अधिक weight दिया जाता है।
यह causal inference के Double Machine Learning (DML) जैसा ही ढाँचा है। DML को संक्षेप में ऐसे समझा जा सकता है: treatment (यहाँ limit) और outcome (default) दोनों को confounders (credit quality) के आधार पर machine learning से predict करके घटा दिया जाता है, और फिर बचे हुए residuals के आपसी संबंध से प्रभाव का अनुमान लगाया जाता है। मुख्य बात यह है कि machine learning confounding को लचीले ढंग से absorb करे, लेकिन उसके model bias का असर treatment-effect estimation में leak न हो; इसलिए cross-fitting से दोनों चरण अलग किए जाते हैं। अंततः यह limit नामक treatment से credit quality नामक confounding को हटाने की प्रक्रिया है।
शुरू करने से पहले एक सीमा स्पष्ट कर लें। जिन credit features को हम control करते हैं, वे वास्तविक limit-allocation criteria (जैसे income, external credit score आदि) के केवल proxy variables हैं। इसलिए debiasing bias को "कम" करती है, "पूरी तरह समाप्त" नहीं। जिन data sets में control variables कमजोर हों, वहाँ debiasing के बाद भी बचा हुआ negative (−) संकेत कुछ unremoved bias अपने साथ रख सकता है।
4. सत्यापन 1, ताइवान credit card: bias गायब हुआ, लेकिन प्रभाव भी लगभग गायब
debiasing लागू करने पर paradox सुलझ गया। limit और default के बीच दिखने वाले −0.15 correlation में लगभग 70% selection bias था, और उसे हटाने के बाद बचा direct effect छोटा negative (−0.05) निकला। यह hypothesis ("limit↑→default↑") के उलट दिशा है।
तो hypothesis को कहाँ परखें? इसके लिए counterfactual प्रयोग किया गया—सभी लोगों की limit को 0.5x से 2x तक बदलकर predicted default rate का ग्राफ बनाया गया।
[IMG] counterfactual. लिमिट बढ़ाने पर predicted default rate
लाल (naive) मॉडल वही paradox दिखाता है: limit↑→default↓। balance chain (नीला) लगभग सपाट हो जाती है। utilization और direct chains (बैंगनी, हरा) हल्का negative बनाए रखते हैं।
विस्तृत विश्लेषण से ये बातें सामने आती हैं।
- limit→balance positive (+) है, लेकिन transmission rate सिर्फ 5.7% है। यानी limit को 1 बढ़ाने पर balance केवल 0.057 बढ़ता है। installment loan में जहाँ पूरी राशि draw हो जाती है, यह मान 100% के करीब होता है; उसकी तुलना में revolving limit का उपयोग बहुत कम होता है, इसलिए यह burden में आसानी से नहीं बदलती (sticky)।
- असली burden signal balance नहीं बल्कि utilization (balance/limit) था। और limit बढ़ाने पर utilization उल्टा काफ़ी घट जाता है (−0.39, यानी headroom बढ़ता है)।
- अगर केवल balance को अलग लेकर उसे linear तरीके से साफ़-साफ़ estimate करें, तो balance→default एक महत्वपूर्ण positive (+) संबंध देता है (p=0.001), यानी hypothesis सही ठहरती है। लेकिन इसका आकार बहुत छोटा है।
यहाँ methodology के बारे में एक सबक भी मिलता है। residual stage में signal कमजोर हो तो flexible GBM overfit करता है। train AUC बढ़ी, लेकिन test AUC base model से भी नीचे चली गई, और train-test gap 0.047 था—जबकि base model में यह 0.008 था, यानी लगभग छह गुना अधिक। इसके विपरीत, केवल residuals इस्तेमाल करने वाला linear second stage लगभग बिना gap के था (0.009) और उसने वास्तविक प्रभाव को साफ़ तौर पर recover किया। कमजोर causal signal को linear या regularized models से संभालना अधिक उपयुक्त हो सकता है।
5. एक और जाल: observation window बहुत छोटी है
इस डेटा में default का मतलब "अगले 1 महीने" की delinquency है। जबकि व्यावहारिक loss models आम तौर पर 12 महीने आगे देखते हैं। छोटी window में एक और bias घुस आता है जो विश्लेषण को गहराई से प्रभावित करता है: postponement। जिन लोगों के पास limit headroom होता है, वे उसी headroom के सहारे एक महीना और निकाल लेते हैं, और उनका default observation window के बाहर खिसक जाता है। default कम नहीं हुआ, सिर्फ टल गया—लेकिन रिकॉर्ड में यह "safer" के रूप में दिखाई देता है।
इसे debiasing (confounding removal) से नहीं पकड़ा जा सकता, क्योंकि यह एक अलग तरह का bias है (survival/censoring)। इसे देखने के लिए observation window को 1 महीने से 5 महीने तक बढ़ाकर जाँचा गया।
[IMG] observation window बढ़ाने पर debiased limit effect
window बढ़ाने पर भी negative (−) positive (+) में नहीं बदला (1 महीने −0.06 से 5 महीने −0.13)। लेकिन इस प्रयोग में window बढ़ने के साथ credit-quality control पतला होता जाता है और confounding बढ़ती है; साथ ही 5 महीने, 12 महीने से अभी भी बहुत कम है। यानी UCI (1 महीना) से 12-महीने की समस्या validate नहीं की जा सकती।
इसलिए वास्तविक long-term डेटा की ज़रूरत थी।
6. सत्यापन 2, Lending Club: long-term और 'drawn' credit
Lending Club अमेरिका का एक P2P lending platform है। यहाँ 2007 से 2013 के बीच दिए गए और maturity पूरी कर चुके 230,000 loans का उपयोग किया गया। क्योंकि loans mature हो चुके हैं, इसलिए यह पता है कि वे fully paid हुए या charge-off। जब इसी debiasing को यहाँ चलाया गया, तो एक निर्णायक अंतर सामने आया।
[IMG] Lending Club. drawn credit और revolving limit
loan_amnt(drawn credit, हरा): debiasing के बाद भी credit↑→default↑ का संबंध साफ़ बना रहता है (p<0.0001)। कई risk grades में यह लगातार बढ़ता है, और bias हटाने के बाद तो प्रभाव और मजबूत दिखता है। hypothesis सही है।total_rev_hi_lim(unused revolving limit, बैंगनी): long-term डेटा में भी प्रभाव लगभग 0 है। यह UCI की limit जैसा ही है।
इस अंतर का मूल कारण observation window नहीं, बल्कि यह था कि credit "drawn" था या "unused limit"। installment loan में पूरी राशि draw होकर 100% burden बनती है, जबकि revolving limit draw करने से पहले burden नहीं बल्कि headroom होती है। इन दोनों को जोड़ने वाला पुल transmission rate (limit→balance) है, और UCI में यह केवल 5.7% था; इसी वजह से limit effect कमजोर रहा।
7. सत्यापन 3, Home Credit कार्ड: loss की परिभाषा sign पलट देती है
Home Credit का डेटा Kaggle competition के माध्यम से सार्वजनिक हुआ था, जिसमें दो प्रकार के डेटा हैं: credit card monthly panel और application loans (installment)। पहले कोशिश यह थी कि कार्ड panel—यानी उसी revolving product में कई महीनों तक track की गई वास्तविक limit, balance, और delinquency—से बात पक्की की जाए। लेकिन परिणाम फिर पलट गया। इस बार यह एक चेतावनी थी।
वास्तव में इस्तेमाल हो रहे लगभग 16,000 active cards को देखने पर पाया गया कि utilization जितना अधिक है, default उतना कम है—यानी UCI के ठीक उलट। ऐसा क्यों?
[IMG] UCI और Home Credit. utilization से default तक sign पलटता है
बाएँ UCI में utilization बढ़ने पर default rate बढ़ती है (वास्तविक burden)। दाएँ Home Credit में सबसे निचले utilization quantile (जहाँ balance लगभग 0 है) में ही लगभग 14% default जमा है, जबकि बाकी quantiles लगभग 0.1% के आसपास हैं।
कारण स्पष्ट था। Home Credit में "default (SK_DPD≥90)" credit burden नहीं, बल्कि छोटे balance को छोड़ देने से बने delinquent dormant accounts को पकड़ रहा था। जो लोग वास्तव में कार्ड इस्तेमाल कर रहे थे, उनमें default लगभग शून्य था। यानी अगर outcome की परिभाषा 'credit loss' नहीं बल्कि 'neglect' पकड़ती हो, तो debiasing कितना भी अच्छा हो, sign पूरी तरह पलट सकता है।
8. सत्यापन 4, Home Credit main loan: आखिर paradox पलटता है
अब तक debiasing की कई कोशिशों के बावजूद ऐसा कोई डेटा नहीं मिला था जिसमें raw में negative (−) दिखने वाला paradox, debiasing के बाद positive (+) में पलट जाए। लेकिन उसके लिए ज़रूरी शर्तें वाला डेटा ठीक बगल में मौजूद था। वही Home Credit का application loan डेटा (कार्ड नहीं, main loan; default rate 8%, 300,000 records)। यह पूरी तरह drawn installment loan है, और default यहाँ वास्तविक credit loss है। इस बार external credit scores (EXT_SOURCE) और income दोनों को control किया गया।
[IMG] Home Credit main loan. debiasing paradox को पलट देती है
बाएँ (raw) में paradox दिखता है: credit जितना बड़ा, default उतना कम (चारों variables में negative)। दाएँ (debiased) में credit quality हटाने के बाद sign positive (+) में पलट जाता है।
| चर | raw correlation | debiasing coefficient | निर्णय |
|---|---|---|---|
| loan amount | −0.030 | +0.018 | पलटा |
| monthly payment | −0.013 | +0.059 (p≈10⁻²⁰) | पलटा (सबसे मजबूत) |
| loan-to-income | −0.008 | +0.046 | पलटा |
| goods price | −0.040 | −0.010 | नहीं पलटा |
तालिका के coefficients standardized residuals पर logit coefficients हैं, इसलिए उनका परिमाण स्वयं बहुत बड़ा नहीं है। monthly payment का +0.059 मतलब लगभग इतना है कि 1 standard deviation बढ़ने पर default odds करीब 6% बढ़ते हैं। 300,000 records होने से p-value बेहद छोटी आई है; इसका अर्थ यह नहीं कि "effect बहुत बड़ा है", बल्कि यह कि "sign positive (+) है" यह बहुत निश्चित है। इस लेख का दावा effect size नहीं, बल्कि दिशा है—negative से positive में पलटना।
दिलचस्प बात यह है कि सिर्फ goods price (AMT_GOODS_PRICE) नहीं पलटता। चुकाने का burden loan amount और repayment amount से आता है, वस्तु की कीमत से नहीं—और यह बात सिद्धांत से बिल्कुल मेल खाती है।
तो फिर यहाँ sign क्यों पलटा, जबकि UCI या Lending Club की revolving limit में नहीं? इसके लिए दो शर्तें एक साथ पूरी होनी चाहिए। पहली, credit drawn हो—यानी पूरी तरह उधार लेकर इस्तेमाल किया गया वास्तविक burden—ताकि वास्तविक प्रभाव positive (+) हो। दूसरी, selection bias मजबूत हो—यानी बड़े loans बेहतर ग्राहकों को दिए जाते हों—ताकि raw संबंध negative (−) दिखे। main loan इन दोनों शर्तों को पूरा करता है। इसलिए raw डेटा में selection bias असली burden effect को ढक देता है, और debiasing करने पर वही असली positive प्रभाव सामने आता है।
9. समग्र निष्कर्ष: paradox कब पलटता है
| credit का प्रकार | raw limit-default | debiasing के बाद | उदाहरण |
|---|---|---|---|
| unused revolving limit | negative (paradox) | लगभग 0 | UCI, LC, HC card |
| drawn credit, weak selection | positive (कोई paradox नहीं) | positive | LC loan amount |
| drawn credit, strong selection | negative (paradox) | positive (पलटता है) | HC main loan |
तीनों data sets को साथ देखें तो दो बातें बचती हैं।
- "limit↑→default↑" कोई सार्वभौमिक नियम नहीं है। unused limit अगर इस्तेमाल न हो तो burden नहीं बनती, इसलिए उसका प्रभाव लगभग 0 हो सकता है; utilization और balance का sign portfolio और loss definition पर निर्भर करता है।
- लेकिन सही शर्तों में paradox सचमुच पलट सकता है। debiasing नकली negative (−) को हटाकर वास्तविक positive (+) को वापस ला सकती है। हालांकि यह केवल उस credit पर लागू है जो वास्तव में drawn burden हो।
10. तो व्यवहारिक काम में क्या करें
इस परिणाम को व्यवहारिक काम में ले जाते समय मैं पहले दो बातों पर ज़ोर देना चाहूँगा।
पहली, सीमाएँ। debiasing जिन credit-quality features को control करती है, वे वास्तविक limit-allocation criteria के केवल proxies हैं; इसलिए बचे हुए प्रभाव को "pure causal effect" मान लेना सही नहीं होगा। खासकर उन data sets में जहाँ income या external score जैसे variables नहीं हैं और वास्तविक credit quality को पुनर्निर्मित करना कठिन है। दूसरा, इस लेख में default probability (PD) पर बात हुई है, लेकिन व्यवहारिक loss rates अक्सर loss amount पर आधारित होते हैं। loss amount limit से mechanically जुड़ा होता है (limit↑→exposure↑→loss amount↑), इसलिए उसी डेटा में sign positive (+) दिख सकता है। कौन-सा outcome चुना गया है, इससे निष्कर्ष बदल जाता है।
इसीलिए method और conclusion को अलग रखना चाहिए।
- method (debiasing) मान्य है और transfer किया जा सकता है। जहाँ वास्तविक positive effect मौजूद था (Lending Club drawn credit), वहाँ method ने उसे साफ़-साफ़ recover किया। दूसरे data sets में negative (−) आना method की विफलता नहीं, बल्कि इस तथ्य का सही प्रतिबिंब है कि "उस प्रकार का credit मूलतः default नहीं बढ़ाता"।
- दिशा संबंधी निष्कर्ष transfer नहीं किए जा सकते। सार्वजनिक डेटा के आधार पर यह घोषित नहीं किया जा सकता कि "हर portfolio में limit↑→default↑"।
- व्यवहारिक डेटा में दो चीज़ें अनिवार्य रूप से जाँचनी चाहिए। पहली, transmission rate (dBalance/dLimit): limit increase वास्तव में कितना drawdown burden बनती है। दूसरी, loss definition: 12-महीने का loss क्या वास्तविक credit loss पकड़ता है, या केवल neglect/छोटी delinquency?
यही दो चीज़ें limit effect के sign को तय करती हैं। debiasing सिर्फ शुरुआती बिंदु है; असली जवाब हर किसी के अपने portfolio में है।
परिशिष्ट. डेटा और पुनरुत्पादन
- UCI "Default of Credit Card Clients" (ताइवान, 30,000 records, 1-महीना delinquency)
- Lending Club 2007 से 2013 matured loans (230,000 records, charge-off)
- Home Credit
credit_card_balancecard panel औरapplication_trainmain loan (300,000 records, 8% default) - method: K-fold cross-fitted residualization, isotonic calibration, residual weighting, linear second stage (DML). Python (
pandas,scikit-learn,lightgbm,statsmodels). - कोड और नोटबुक (कोरियन·जापानी): github.com/HangilKim11/blog-research
इस लेख के सभी आँकड़े और चित्र सार्वजनिक डेटा से पुनरुत्पादित किए जा सकते हैं। लेख का निष्कर्ष सार्वजनिक डेटा पर आधारित है; व्यवहारिक डेटा में sign ऊपर बताई गई इन दो बातों से सीधे जाँचना होगा।
यह लेख पहली बार han-co.com पर प्रकाशित हुआ था, और इसे कोरियन और जापानी में साथ प्रकाशित किया गया है। मूल लेख और ईमेल सदस्यता → https://han-co.com/ko/blog/credit-limit-debiasing
अभी कोई टिप्पणी नहीं है.