1 điểm bởi hanco1104 5 giờ trước | Chưa có bình luận nào. | Chia sẻ qua WhatsApp

Nguyên văn: han-co.com · Mã nguồn·notebook (tiếng Hàn·tiếng Nhật): GitHub

Nếu tăng hạn mức thẻ tín dụng, xác suất người đó vỡ nợ sẽ tăng hay giảm? Theo trực giác thông thường thì có vẻ sẽ tăng, vì họ có thể vay nhiều hơn. Nhưng khi mở dữ liệu ra, kết quả lại hoàn toàn ngược lại. Bài viết này là ghi chép về việc giải nghịch lý đó bằng debiasing, kiểm chứng bằng ba bộ dữ liệu công khai, và cuối cùng đi đến một kết luận khá bất ngờ.

Ở Part 0, tôi đã nói về selection bias. Bài viết lần này là một ví dụ thực chiến nơi selection bias đối đầu trực diện với suy luận nhân quả. Bản thân suy luận nhân quả sẽ được bàn sâu riêng trong loạt bài cơ bản, còn ở đây tôi muốn đi trước một bước để cho thấy nó vận hành thế nào trong công việc thực tế. Toàn bộ mã nguồn và dữ liệu sử dụng đều là dữ liệu công khai.

1. Dữ liệu đi ngược hoàn toàn với trực giác

Trước hết hãy bắt đầu với dữ liệu thẻ tín dụng Đài Loan. Đây là bộ dữ liệu công khai về 30.000 khách hàng thẻ năm 2005 tại Đài Loan, gồm hạn mức của từng người, số tiền sao kê (dư nợ), và việc họ có trễ hạn vào tháng tiếp theo hay không (công khai trên UCI). Vì đây là bộ dữ liệu công khai hiếm hoi có đồng thời hạn mức, dư nợ và vỡ nợ nên rất phù hợp làm điểm xuất phát. Ta thử vẽ tỷ lệ vỡ nợ thực tế theo từng nhóm hạn mức.

[IMG] Tỷ lệ vỡ nợ theo nhóm hạn mức. Hạn mức càng cao thì tỷ lệ vỡ nợ càng thấp

Tỷ lệ vỡ nợ của 10% nhóm có hạn mức thấp nhất là 35,9%, còn 10% nhóm có hạn mức cao nhất là 11,9%. Hạn mức càng cao thì tỷ lệ vỡ nợ giảm đều đặn (hệ số tương quan −0,15).

Nhóm được cấp hạn mức cao hơn gần 20 lần lại chỉ có mức vỡ nợ bằng khoảng 1/3. Có phải điều đó nghĩa là cứ mạnh tay tăng hạn mức là được? Tất nhiên là không. Có một cái bẫy ở đây.

2. Thủ phạm là selection bias

Hạn mức không được cấp một cách ngẫu nhiên. Theo mô hình hay rule sẵn có, người vốn đã có tín dụng tốt sẽ được cấp hạn mức cao hơn. Vì vậy, “hạn mức cao” đồng thời cũng là tín hiệu của “người vốn dĩ sẽ trả nợ tốt”. Mối quan hệ âm (−) giữa hạn mức và vỡ nợ không phải là hiệu ứng của hạn mức, mà là ảo giác do mức độ tín dụng ẩn phía sau hạn mức tạo ra. Đây là trường hợp selection bias mà ta đã thấy ở Part 0 hoạt động một cách trần trụi nhất.

Nếu học trực tiếp từ dữ liệu thô, mô hình sẽ học rằng “hạn mức cao = an toàn”. Nếu dùng mô hình này để mô phỏng câu hỏi “nếu tăng hạn mức thì sao?”, nó sẽ trả lời rằng vỡ nợ giảm. Dùng thẳng kết quả đó cho quyết định chính sách là rất nguy hiểm.

3. Lời giải: biến hạn mức thành “phần dư”

Ý tưởng cốt lõi rất đơn giản. Nếu so sánh những người có cùng mức độ tín dụng nhưng chỉ khác nhau về hạn mức, ta sẽ nhìn thấy hiệu ứng thuần của hạn mức. Vì matching hoàn hảo là bất khả thi, nên thay vào đó làm như sau.

  1. Dùng các feature tín dụng (X) để dự đoán “hạn mức kỳ vọng” của từng người (mô phỏng cách cấp hạn mức hiện có).
  2. Giá trị lấy hạn mức thực tế trừ đi hạn mức kỳ vọng là phần dư hạn mức (rL). Đó là phần biến động của hạn mức không được giải thích bởi mức độ tín dụng, mà do chính sách hoặc ngẫu nhiên tạo ra.
  3. Dư nợ và vỡ nợ cũng được chuyển thành phần dư theo cùng cách.
  4. Thiết lập một chuỗi từ phần dư hạn mức sang phần dư dư nợ, rồi đến vỡ nợ (đường đi hạn mức→dư nợ→vỡ nợ).
  5. Vì vỡ nợ là 0 và 1, ta hiệu chỉnh chênh lệch trong không gian logit, rồi cộng phần hiệu chỉnh đó vào xác suất vỡ nợ dự đoán ban đầu để tạo ra giá trị cuối cùng.

Có hai điểm cần lưu ý. Thứ nhất, để tránh data leakage, phần dư bắt buộc phải được tạo bằng cross-fitting. Nếu mô hình nhìn thấy chính mẫu của nó khi dự đoán thì phần dư sẽ nhỏ đi một cách giả tạo. Thứ hai, quy trình cấp hạn mức càng nhất quán thì người có phần dư lớn càng hiếm. Vì vậy ta tăng trọng số cho những mẫu “thí nghiệm tự nhiên” hiếm hoi đó (những người có phần dư lớn).

Cấu trúc này cũng giống Double Machine Learning (DML) trong suy luận nhân quả. Có thể tóm tắt DML như sau: dùng machine learning để dự đoán treatment (ở đây là hạn mức) và outcome (vỡ nợ) từ các biến gây nhiễu (mức độ tín dụng), rồi trừ đi phần dự đoán đó; sau đó ước lượng hiệu ứng từ mối quan hệ giữa các phần dư còn lại. Điểm then chốt là để machine learning hấp thụ nhiễu một cách linh hoạt, nhưng tách riêng bằng cross-fitting để bias của mô hình đó không rò rỉ vào ước lượng hiệu ứng. Cuối cùng, bản chất của việc này là loại bỏ nhiễu do mức độ tín dụng khỏi treatment là hạn mức.

Trước khi bắt đầu, cần chỉ ra trước một giới hạn. Những feature tín dụng mà ta kiểm soát chỉ là biến đại diện cho tiêu chí cấp hạn mức thật sự (thu nhập, điểm tín dụng bên ngoài, v.v.). Vì vậy debiasing là để “giảm” bias chứ không phải “loại bỏ hoàn toàn”. Dữ liệu càng nghèo biến kiểm soát, phần âm (−) còn lại sau khi loại bỏ càng có thể vẫn trộn lẫn bias chưa được gỡ hết.

4. Kiểm chứng 1, thẻ tín dụng Đài Loan: bias biến mất nhưng hiệu ứng cũng gần như biến mất

Khi áp dụng debiasing, nghịch lý đã được giải. Khoảng 70% của tương quan bề ngoài −0,15 giữa hạn mức và vỡ nợ là do selection bias, và hiệu ứng trực tiếp còn lại sau khi loại bỏ chỉ là một giá trị âm nhỏ (−0,05). Điều này ngược với giả thuyết (“hạn mức↑→vỡ nợ↑”).

Vậy giả thuyết sẽ được kiểm chứng ở đâu? Đó là ở phản thực (counterfactual), khi ta thử thay đổi hạn mức của toàn bộ người dùng từ 0,5 lần đến 2 lần rồi vẽ tỷ lệ vỡ nợ dự đoán.

[IMG] Phản thực. Tỷ lệ vỡ nợ dự đoán khi tăng hạn mức

Đường đỏ (naive) giữ nguyên nghịch lý hạn mức↑→vỡ nợ↓. Chuỗi dư nợ (xanh dương) gần như phẳng. Chuỗi tỷ lệ sử dụng và chuỗi trực tiếp (tím, xanh lá) vẫn giữ một giá trị âm yếu.

Phân tích kỹ hơn cho thấy các điểm sau.

  • Hạn mức→dư nợ là dương (+), nhưng tỷ lệ truyền dẫn chỉ 5,7% nên rất yếu. Nghĩa là tăng hạn mức 1 đơn vị thì dư nợ chỉ tăng 0,057 đơn vị. Nếu là khoản vay trả góp được rút toàn bộ thì giá trị này sẽ gần 100%; so với vậy, hạn mức revolving hầu như không được dùng đến nên ít chuyển thành gánh nặng (sticky).
  • Tín hiệu gánh nặng thực sự không phải là dư nợ mà là tỷ lệ sử dụng (dư nợ/hạn mức). Và khi tăng hạn mức thì tỷ lệ sử dụng lại giảm mạnh (−0,39, tức có thêm headroom).
  • Nếu tách riêng dư nợ và ước lượng sạch bằng mô hình tuyến tính, thì dư nợ→vỡ nợ có ý nghĩa thống kê dương (+) (p=0,001), nên giả thuyết được xác nhận. Tuy nhiên độ lớn là cực kỳ nhỏ.

Ở đây có một bài học về phương pháp. Nếu dùng GBM linh hoạt ở giai đoạn phần dư nơi tín hiệu rất yếu, mô hình sẽ overfit. AUC trên train tăng lên nhưng AUC trên test lại thấp hơn cả mô hình cơ sở, và chênh lệch giữa train và test là 0,047, lớn gấp sáu lần mô hình cơ sở là 0,008. Ngược lại, mô hình tuyến tính ở giai đoạn hai chỉ dùng phần dư có chênh lệch 0,009, gần như không có, và phục hồi hiệu ứng thật một cách sạch sẽ. Với tín hiệu nhân quả yếu, có thể mô hình tuyến tính hoặc mô hình có regularization sẽ phù hợp hơn.

5. Một cái bẫy khác: cửa sổ quan sát quá ngắn

Trong bộ dữ liệu này, vỡ nợ được định nghĩa là trễ hạn “trong 1 tháng tiếp theo”. Mô hình tổn thất tín dụng trong thực tế thường nhìn tới 12 tháng sau. Với cửa sổ ngắn, còn có thêm một loại bias ảnh hưởng lớn đến phân tích: trì hoãn (postponement). Người có dư địa hạn mức có thể cầm cự thêm một tháng nhờ khoảng dư đó, khiến sự kiện vỡ nợ bị đẩy ra ngoài cửa sổ quan sát. Vỡ nợ không giảm đi, chỉ là bị dời lại, nhưng lại được ghi nhận là “an toàn”.

Đây là một bias khác biệt (survival, censoring) mà debiasing theo nghĩa loại bỏ nhiễu không xử lý được. Tôi đã kiểm tra bằng cách tăng cửa sổ quan sát từ 1 tháng lên 5 tháng.

[IMG] Hiệu ứng hạn mức sau debiasing khi tăng cửa sổ quan sát

Kể cả khi tăng cửa sổ, giá trị âm (−) cũng không đảo thành dương (+) (từ −0,06 ở 1 tháng thành −0,13 ở 5 tháng). Tuy nhiên, thí nghiệm này càng tăng cửa sổ thì kiểm soát mức độ tín dụng càng mỏng đi và bị nhiễu, hơn nữa 5 tháng vẫn còn rất xa 12 tháng. Nói cách khác, với UCI (1 tháng) thì không thể kiểm chứng bài toán 12 tháng.

Vì vậy cần dữ liệu dài hạn thật sự.

6. Kiểm chứng 2, Lending Club: dài hạn và tín dụng đã “được rút”

Lending Club là nền tảng cho vay P2P của Mỹ. Tôi dùng 230.000 khoản vay từ 2007 đến 2013 đã kết thúc kỳ hạn. Vì kỳ hạn đã kết thúc nên ta biết kết cục cuối cùng là trả hết hay charge-off. Khi chạy cùng quy trình debiasing trên bộ này, một khác biệt mang tính quyết định lộ ra.

[IMG] Lending Club. Tín dụng đã rút và hạn mức revolving

  • loan_amnt (tín dụng đã rút, màu xanh lá): ngay cả sau debiasing, mối quan hệ tín dụng↑→vỡ nợ↑ vẫn được xác nhận rõ ràng (p<0,0001). Nó tăng nhất quán ở nhiều nhóm risk grade, và việc loại bỏ bias thậm chí còn làm hiệu ứng mạnh hơn. Giả thuyết được xác nhận.
  • total_rev_hi_lim (hạn mức revolving chưa sử dụng, màu tím): ngay cả trong dài hạn, hiệu ứng vẫn gần như bằng 0. Giống hệt hạn mức trong UCI.

Bản chất của sự khác biệt không nằm ở cửa sổ quan sát mà ở việc đó là “tín dụng đã được rút” hay “hạn mức chưa sử dụng”. Khoản vay trả góp được rút toàn bộ nên trở thành gánh nặng 100%, còn hạn mức revolving chỉ trở thành gánh nặng sau khi bị sử dụng (headroom trước đó không phải gánh nặng). Cây cầu nối hai thứ này là tỷ lệ truyền dẫn (hạn mức→dư nợ), và trong UCI giá trị đó chỉ là 5,7%, nên hiệu ứng của hạn mức mới yếu như vậy.

7. Kiểm chứng 3, thẻ Home Credit: định nghĩa tổn thất làm đảo dấu

Home Credit là bộ dữ liệu công khai qua cuộc thi Kaggle, gồm hai loại: panel hàng tháng của thẻ tín dụng và khoản vay đã đăng ký (trả góp). Trước hết tôi muốn đóng đinh kết luận bằng panel thẻ, tức dữ liệu theo dõi thực tế hạn mức, dư nợ và trễ hạn trong hàng chục tháng trên cùng một sản phẩm revolving. Nhưng kết quả lại đảo lần nữa. Lần này là một lời cảnh báo.

Khi nhìn vào khoảng 16.000 thẻ hoạt động thực sự, ta thấy tỷ lệ sử dụng càng cao thì vỡ nợ càng thấp, hoàn toàn ngược với UCI. Vì sao?

[IMG] UCI và Home Credit. Dấu từ tỷ lệ sử dụng sang vỡ nợ bị đảo ngược

Bên trái, UCI cho thấy tỷ lệ sử dụng càng cao thì tỷ lệ vỡ nợ càng tăng (gánh nặng thực). Bên phải, Home Credit cho thấy chỉ riêng nhóm phân vị có tỷ lệ sử dụng thấp nhất (dư nợ gần như bằng 0) tập trung khoảng 14% vỡ nợ, còn các nhóm còn lại chỉ quanh 0,1%.

Nguyên nhân rất rõ ràng. “Vỡ nợ (SK_DPD≥90)” của Home Credit không phản ánh gánh nặng tín dụng mà chủ yếu bắt các tài khoản ngủ đông bị quá hạn vì bỏ mặc khoản dư nợ nhỏ. Người thực sự dùng thẻ thì gần như không vỡ nợ. Nói cách khác, nếu định nghĩa outcome không bắt “tổn thất tín dụng” mà bắt “sự bỏ mặc”, thì dù debiasing tốt đến đâu, dấu cũng bị đảo ngược hoàn toàn.

8. Kiểm chứng 4, khoản vay gốc Home Credit: cuối cùng nghịch lý cũng đảo chiều

Cho đến lúc này, dù đã thử debiasing, vẫn chưa có bộ dữ liệu nào mà nghịch lý âm (−) ở raw đảo thành dương (+) sau debiasing. Nhưng bộ dữ liệu thỏa điều kiện đó cũng nằm ngay bên cạnh: khoản vay đã đăng ký của chính Home Credit (không phải thẻ mà là khoản vay gốc, tỷ lệ vỡ nợ 8%, 300.000 bản ghi). Đây là khoản vay trả góp được rút toàn bộ, và vỡ nợ là tổn thất tín dụng thật sự. Lần này tôi cũng kiểm soát đồng thời điểm tín dụng bên ngoài (EXT_SOURCE) và thu nhập.

[IMG] Khoản vay gốc Home Credit. Debiasing đảo chiều nghịch lý

Bên trái (raw), tín dụng càng lớn thì vỡ nợ càng thấp, đúng kiểu nghịch lý (cả bốn biến đều âm). Bên phải (sau debiasing), khi loại bỏ mức độ tín dụng thì dấu chuyển sang dương (+).

Biến Tương quan raw Hệ số sau debiasing Đánh giá
Số tiền vay −0,030 +0,018 Đảo chiều
Khoản trả hàng tháng −0,013 +0,059 (p≈10⁻²⁰) Đảo chiều (mạnh nhất)
Khoản vay so với thu nhập −0,008 +0,046 Đảo chiều
Giá trị hàng hóa mua −0,040 −0,010 Không đảo chiều

Các hệ số trong bảng là hệ số logit trên phần dư đã chuẩn hóa, nên bản thân độ lớn là nhỏ. Mức +0,059 của khoản trả hàng tháng chỉ có nghĩa là khi tăng 1 độ lệch chuẩn thì odds vỡ nợ tăng khoảng 6%. Vì có tới 300.000 bản ghi nên p-value cực nhỏ; điều này không có nghĩa là “hiệu ứng lớn”, mà là “chắc chắn dấu là dương (+)”. Luận điểm của bài viết này không nằm ở độ lớn, mà ở hướng của hiệu ứng: đảo từ âm sang dương.

Điều thú vị là chỉ có giá trị hàng hóa mua (AMT_GOODS_PRICE) là không đảo chiều. Gánh nặng phải trả nằm ở khoản vay và khoản thanh toán, chứ không phải bản thân giá món hàng, nên điều này khớp chính xác với lý thuyết.

Vậy tại sao ở đây lại đảo chiều, còn ở UCI hay hạn mức revolving của Lending Club thì không? Cần đồng thời thỏa hai điều kiện. Thứ nhất, đó phải là tín dụng đã được rút (gánh nặng thực sự do đã vay toàn bộ), nên hiệu ứng thật phải là dương (+). Thứ hai, selection bias phải đủ mạnh (khoản vay càng lớn thì khách càng tốt) để raw mang dấu âm (−). Khoản vay gốc thỏa cả hai. Vì vậy raw bị che bởi selection bias nên là âm, còn sau debiasing thì hiệu ứng gánh nặng thật sự là dương mới lộ ra.

9. Tổng hợp: khi nào nghịch lý bị đảo chiều

Loại tín dụng Hạn mức-tỷ lệ vỡ nợ raw Sau debiasing Ví dụ
Hạn mức revolving chưa sử dụng Âm (nghịch lý) Gần như 0 UCI, LC, thẻ HC
Tín dụng đã rút, selection yếu Dương (không có nghịch lý) Dương Khoản vay LC
Tín dụng đã rút, selection mạnh Âm (nghịch lý) Dương (đảo chiều) Khoản vay gốc HC

Xuyên suốt ba bộ dữ liệu, còn lại hai điểm chính.

  • “Hạn mức↑→vỡ nợ↑” không phải quy luật phổ quát. Hạn mức chưa sử dụng, nếu không được dùng, không phải là gánh nặng nên hiệu ứng gần như bằng 0; còn dấu của tỷ lệ sử dụng và dư nợ thì phụ thuộc vào portfolio và định nghĩa tổn thất.
  • Tuy nhiên, trong đúng điều kiện thì nghịch lý thực sự có thể bị đảo chiều. Debiasing loại bỏ giá trị âm (−) giả tạo và khôi phục giá trị dương (+) thật sự. Nhưng điều này chỉ đúng với loại tín dụng có gánh nặng thực sự do đã được rút.

10. Vậy trong thực tế thì sao

Khi đưa kết quả này vào thực tế, tôi muốn nhấn mạnh trước hai điều.

Thứ nhất là giới hạn. Các feature tín dụng mà debiasing kiểm soát chỉ là biến đại diện cho tiêu chí cấp hạn mức thật sự, nên không thể khẳng định hiệu ứng còn lại là “nhân quả thuần”. Đặc biệt, với dữ liệu thiếu thu nhập hay điểm tín dụng bên ngoài, việc tái hiện đúng mức độ tín dụng thật sẽ càng khó. Ngoài ra, bài viết này xử lý xác suất vỡ nợ (PD), nhưng trong thực tế tỷ lệ tổn thất thường dựa trên số tiền mất mát. Mà số tiền tổn thất lại gắn cơ học với hạn mức (hạn mức↑→exposure↑→số tiền tổn thất↑), nên ngay cả trên cùng dữ liệu, dấu có thể hiện ra là dương (+). Kết luận thay đổi tùy theo bạn chọn outcome là gì.

Vì vậy cần tách phương pháp và kết luận ra riêng.

  1. Phương pháp (debiasing) là hợp lệ và có thể chuyển giao. Khi tồn tại hiệu ứng dương (+) thật sự (tín dụng đã rút ở Lending Club), phương pháp đã phục hồi nó một cách sạch sẽ. Nếu ở dữ liệu khác kết quả là âm (−), đó không phải thất bại của phương pháp mà là phản ánh chính xác rằng “loại tín dụng đó vốn không làm tăng vỡ nợ”.
  2. Kết luận về hướng thì không thể chuyển giao. Không thể dùng dữ liệu công khai để khẳng định rằng “ở mọi portfolio, tăng hạn mức sẽ làm tăng vỡ nợ”.
  3. Có hai điều nhất định phải kiểm tra trong dữ liệu thực tế. Thứ nhất là tỷ lệ truyền dẫn (dBalance/dLimit), tức mức tăng hạn mức thực sự chuyển thành gánh nặng rút vốn đến đâu. Thứ hai là định nghĩa tổn thất: tổn thất 12 tháng có thật sự bắt được tổn thất tín dụng hay chỉ bắt sự bỏ mặc hay trễ hạn số tiền nhỏ.

Chính hai yếu tố này quyết định dấu của hiệu ứng hạn mức. Debiasing chỉ là điểm khởi đầu; đáp án thực sự nằm trong từng portfolio cụ thể.


Phụ lục. Dữ liệu và tái hiện

  • UCI “Default of Credit Card Clients” (Đài Loan, 30.000 bản ghi, trễ hạn 1 tháng)
  • Các khoản vay Lending Club 2007 đến 2013 đã hoàn tất kỳ hạn (230.000 bản ghi, charge-off)
  • Home Credit credit_card_balance panel thẻ và application_train khoản vay gốc (300.000 bản ghi, vỡ nợ 8%)
  • Phương pháp: residualization bằng K-fold cross-fitting, isotonic calibration, trọng số phần dư, giai đoạn hai tuyến tính (DML). Python (pandas, scikit-learn, lightgbm, statsmodels).
  • Mã nguồn và notebook (tiếng Hàn·tiếng Nhật): github.com/HangilKim11/blog-research

Tất cả số liệu và hình trong bài đều có thể tái hiện bằng dữ liệu công khai. Kết luận trong bài áp dụng cho dữ liệu công khai; còn dấu trong dữ liệu thực tế cần được kiểm tra trực tiếp bằng hai yếu tố nêu trên.


Bài viết này được đăng đầu tiên trên han-co.com, đồng thời bằng tiếng Hàn và tiếng Nhật. Bản gốc và đăng ký email → https://han-co.com/ko/blog/credit-limit-debiasing

Chưa có bình luận nào.

Chưa có bình luận nào.