Variable Analysis

Phân tích biến dựa trên kỹ thuật binning

Mục lục

Tổng quan

Khi xây dựng mô hình nói chung, ta thường gặp các vấn đề phổ biến:

  • Các giá trị missing: Mô hình hồi quy bỏ qua các giá trị missing.
  • Các giá trị outlier: Các giá trị outlier sẽ khiến cho kết quả ước lượng bị lệch.
  • Các biến chữ: Các biến chữ cần có phương pháp biến đổi đặc biệt trước khi hồi quy (cách phổ biến nhất là dummy transformation).

Phương pháp phổ biến để khắc phục các vấn đề này là binning và transform các biến thành dạng WOE.

Binning và transform WOE

Để xử lý vấn đề nói trên, các biến sẽ được chia thành từng khoảng (binning) và mỗi khoảng sẽ được gán cho một giá trị thay thế (WoE). Phương pháp binning được mô tả như sau:

  • Là việc rời rạc hóa một biến bằng cách chia biến thành các nhóm mà các quan sát trong nhóm có đặc tính giống nhau.
  • Mỗi nhóm được gán một giá trị thay thế cho cả nhóm.
  • Khi hồi quy mô hình, sẽ thực hiện hồi quy giữa target và các giá trị đại diện mới.

Ưu điểm của phương pháp binning:

  • Cách đơn giản để xử lý missing, outlier và các biến rời rạc.
  • Tăng tính chính xác trong dự đoán.
  • Có cái nhìn tổng quan về xu hướng biến trong dữ liệu.

Giá trị thay thế cho mỗi nhóm là WOE (Weight of Evidence) được tính theo công thức:

\[WoE_i=\ln\left(\frac{g_i/G}{b_i/B}\right).\]

Trong đó:

  • \(g_i,b_i\) là số lượng good và bad trong nhóm \(i\).
  • \(G,B\) là tổng số lượng good và bad trong dữ liệu.

Biến đổi WOE có các lợi thế như sau:

  • Chuẩn hóa giá trị của các biến.
  • Giảm thiểu lỗi khi tính toán với số mũ.
  • Quan sát trực quan và rõ ràng mỗi liên hệ giữa biến dự đoán và biến target.
  • Tăng tính chính xác khi dự đoán. (với các biến có sự phụ thuộc không tuyến tính).
  • Có thể điều chỉnh kết quả dựa trên hiểu biết về dữ liệu.

Bảng sau đây minh họa cho việc tính WoE:

Range Total Good Bad WoE
Missing 1,422 1,077 345 -1.226
(-∞;0.77M] 1,516 1,124 392 -1.311
(0.77M;1.4M] 735 641 94 -0.445
(1.4M;2.6M] 735 676 59 0.074
(2.6M;7.7M] 2,938 2,793 145 0.593
(7.7M;+∞) 7,347 7,120 227 1.081
TOTAL 14,693 13,431 1,262  

Ví dụ về phân tích biến sử dụng giá trị WoE như sau:

WoE Transformation
Minh họa cho WoE Transformation

Đánh giá tính dự báo của biến

Đánh giá tính dự báo của biến là quy trình chọn các biến dựa trên tính dự báo đơn biến (phân biệt với lựa chọn biến khi vào mô hình – phân tích đa biến). Tính dự báo được đo lường bằng Information Value (IV). Công thức tính IV cho đơn biến được cho như sau:

\[IV=\sum_{i=1}^n\left(\%Good_i-\%Bad_i\right)\times \ln\left(\frac{\%Good_i}{\%Bad_i}\right).\]

Trong đó: \(\%Good_i=g_i/G\) và \(\%Bad_i=b_i/B\) với các định nghĩa tương tự như trong công thức WOE.

Tính dự báo của biến (IV) được đánh giá bởi tiêu chí:

  • Nhỏ hơn 0.02: không có tính dự báo.
  • 0.02 đến 0.1: Yếu.
  • 0.1 đến 0.3: Trung bình.
  • 0.3+: Mạnh.

Quy trình phân tích biến

Quy trình phân tích biến được khuyến nghị theo các bước sau đây:

  1. Coarse Binning: Chia biến thành 20 nhóm (tùy thuộc vào số lượng quan sát, có thể chia thành nhỏ hơn 20 nhóm).
  2. Đảm bảo không có các nhóm 0 good hoặc 0 bad.
  3. Vẽ đường WoE từ các nhóm (Coarse Bining)
  4. Nhóm các nhóm nhỏ thành các nhóm lớn hơn theo các tiêu chí:
    • Các nhóm có WOE tương tự hoặc theo một xu hướng đã biết trước.
    • Số lượng các nhóm lớn từ 2-8 nhóm tùy vào độ dự báo của biến.
    • Số lượng quan sát ở mỗi nhóm không nhỏ quá 5% (có thể có ngoại lệ nếu là nhóm cực tốt hoặc cực xấu).
  5. Lặp lại bước số 4 nếu kết quả nhận được chưa vừa ý.
  6. Điều chỉnh WOE nếu có sample bias.
  7. Kết qủa nhận được là Fine Binning.

Ví dụ về binning được cho như sau:

Coarse Binning

Coarse Binning
Minh họa cho Coarse Binning

Fine Binning

Fine Binning
Minh họa cho Fine Binning

Sử dụng Macro Var_Bin

Syntax

Để tiến hành phân tích đơn biến, ta sử dụng Macro Var_Bin. Cú pháp của Macro như sau:

%Var_Bin(Data=, Var=, Numbin=, Group=, Method=BESTIV, Cut_Raw=, Cut_Fine=, Round=4, Libname=WORK);

Trong đó:

  • Data (data[good, bad, var, weight]) là dữ liệu đầu vào (dữ liệu train). Các tính toán trong quá trình phân tích biến sẽ được thực hiện trên dữ liệu này.
  • Var (variable) là biến sẽ phân tích.
  • Numbin (int) là số lượng nhóm được chia ban đầu bằng phương pháp quantile binning.
  • Group (int) là số nhóm sau khi nhóm lại. Chú ý rằng nếu để Group=1 thì macro sẽ tự động tìm số nhóm tối ưu.
  • Cut_Raw (dataset[UB]) là dữ liệu chứa có một biến UB chứa thông tin cận trên của điểm cắt. Ví dụ dữ liệu có các thông tin ., 1,4,6, . thì các điểm cắt sẽ là \(missing, (-\infty, 1], (1, 4], (4, 6], (6, +\infty)\). Nếu tham số này trống thì macro sẽ tự tìm các điểm cắt dựa trên VarNumbin.
  • Round (int=4) số lượng các chữ số sau dấu phảy ở các điểm cắt khi thực hiện quantile binning.
  • Libname (text) (giá trị mặc định là work) thư viện lưu các kết quả output của macro bao gồm: var_bin_coarse, var_bin_fine, var_bin_mapping.
  • Method (text)` là các phương pháp nhóm biến. Các giá trị có thể được liệt kê như sau:

    • BESTIV (giá trị mặc định): Thử tất cả cách nhóm biến để tìm được cách nhóm thỏa mãn: 1) số lượng nhóm sau cùng là Group và 2) Information Value của cách nhóm là lớn nhất. Thời gian chạy macro với numbin=25 là 13s (máy tính CPU i7-4790s, RAM 16GB, SSD) và tăng gấp đôi khi numbin tăng 1 đơn vị.
    • MONO: Thử tất cả cách nhóm biến để tìm được cách nhóm thỏa mãn: 1) số lượng nhóm sau cùng là Group, 2) Trend của WoE là monotonic (ngoại trừ nhóm missing) và 3) Information Value của cách nhóm là lớn nhất.
    • USHAPE: Thử tất cả cách nhóm biến để tìm được cách nhóm thỏa mãn: 1) số lượng nhóm sau cùng là Group, 2) Trend của WoE là U-shape (ngoại trừ nhóm missing) và 3) Information Value của cách nhóm là lớn nhất.
    • FAST: Sử dụng thuật toán Greedy để giảm số lượng nhóm từ numbin xuống còn group. Thuật toán chạy nhanh nhưng không đảm bảo cách nhóm cuối cùng có IV lớn nhất.
    • BRANCH: Thử tất cả các cách nhóm biến và sử dụng thuật toán Branch & Bound để nhóm biến. Sử dụng tham số này trong trường hợp NUM lớn (thường là lớn hơn 30). Thuật toán nhanh hơn BESTIV.

Để điều chỉnh cách nhóm biến, ta sửa biến GRP_FINAL trong dữ liệu FINALBIN là kết quả đầu ra của macro Var_Bin. Các nhóm có giá trị GRP_FINAL bằng nhau được hiểu là thuộc cùng một nhóm lớn của Fine Binning. Sau đó, ta sử dụng macro Var_Bin_Manual

%Var_Bin_Manual(Data=, Bin_raw=BIN_RAW, Bin_Fine=BIN_FINE);

Các tham số tương tự như macro Var_Bin. Macro Var_Bin_Manual chỉ chạy được ngay sau khi chạy macro Var_Bin.

Detail

Output

Report

Kết quả đầu ra của macro như sau:

Theo thứ tự từ trên xuống dưới:

Đồ thị coarse binning chứa các thông tin như sau

  • Trục x là các nhóm ban đầu được chia bằng phương pháp quantile binning.
  • Trục y1 thể hiện số lương quan sát trong mỗi nhóm (bin) bằng các bar chart tương ứng. Các khối được tô cùng màu thể hiện các nhóm này sẽ nằm cùng một nhóm trong coarse binning.
  • Trục y2 là giá trị WoE của mỗi nhóm được thể hiện bằng line chart. Các điểm WoE được nối với nhau thể hiện các nhóm này sẽ nằm cùng một nhóm trong coarse binning.

Đồ thị fine binning chứa các thông tin như sau

  • Trục x là các nhóm ban đầu được chia bằng phương pháp quantile binning.
  • Trục y1 thể hiện số lương quan sát trong mỗi nhóm (bin) bằng các bar chart tương ứng. Các khối được tô cùng màu thể hiện các nhóm này sẽ nằm cùng một nhóm trong coarse binning.
  • Trục y2 là giá trị WoE của mỗi nhóm được thể hiện bằng line chart. Các điểm WoE được nối với nhau thể hiện các nhóm này sẽ nằm cùng một nhóm trong coarse binning.
Coarse & Fine Binning
Coarse & Fine Binning

Bảng coarse binning thể hiện số lượng quan sát trong mỗi nhóm và WoE tương ứng trong coarse binning. Bảng được chia thành các phần bằng đường kẻ đậm dựa trên cột group thể hiện các nhóm sẽ được gộp để thành bảng fine binning. Ý nghĩa các cột như sau

  • Label (Coarse) chứa số thứ tự nhóm (phần được đánh số trong ngoặc vuông []) và khoảng giá trị của biến ban đầu (nửa khoảng $(a, b]$).
  • Group Các nhóm có giá trị bằng nhau được hiểu là thuộc cùng một nhóm lớn của Fine Binning.
  • Total, Good, Bad là số tổng số quan sát, tổng số quan sát good, tổng số quan sát bad trong nhóm.
  • Percent tỉ lệ phần trăm số lượng quan sát của nhóm so với toàn bộ dữ liệu.
  • Bad Rate, Good RateBad/Total, Good/Total.
  • WoE, IV được tính theo công thức ở trên.
Table coarse binning
Table coarse binning

Bảng Fine Binning chứa các cột tương tự như bảng coarse binning.

Table fine binning
Table fine binning

Format có dạng Proc Format. Cách xây dựng mô hình cũ cần lưu lại format này để thực hiện bước tiếp theo là Variable Transformation. Tuy nhiên với phiên bản mới nhất của smcs thì không cần lưu lại format này tại mỗi lần chạy.

Proc Format
Minh họa cho Proc Format

Đồ thị Information Value by Group Step là đồ thị thể hiện giá trị IV với số lượng nhóm ở fine binning từ 1 đến numbin. Có thể dựa vào đồ thị này để quyết định group. Ví dụ có thể chọn group sao cho giá trị IV không bị suy giảm quá nhiều so với giá trị IV ở coarse binning.

Summary IV
Minh họa cho Summary IV

Dữ liệu

FINALBIN là dữ liệu chứa thông tin coarse binning và fine binning của biến. Bảng này sẽ được sử dụng trong macro Var_bin_manual (nếu cần).

VARIABLE GRP_FINAL GRP_TEMP LB UB TOTAL GOOD BAD PERCENT
X1 1 1 -1.00E+21 -0.9979 8,745 6,236 2,509 5.00%
X1 1 2 -0.9979 -0.9927 8,701 5,442 3,259 4.98%
X1 1 3 -0.9927 -0.9841 8,777 5,518 3,259 5.02%
X1 1 4 -0.9841 -0.9724 8,708 5,536 3,172 4.98%
X1 1 5 -0.9724 -0.9567 8,764 5,588 3,176 5.01%
X1 1 6 -0.9567 -0.9375 8,711 5,633 3,078 4.98%

VAR_OPTBIN_IV là dữ liệu chứa thông tin IV tại mỗi bước của đồ thị Information Value by Group Step

VARIABLE STEP IV SELECT
X1 1 0 .
X1 2 2.138 .
X1 3 2.735 .
X1 4 2.81 .
X1 5 2.823 2.823
X1 6 2.833 .
X1 7 2.838 .
X1 8 2.838 .

VAR_OPTBIN_MAPPING là kết quả nhóm tối ưu tại mỗi STEP.

VARIABLE STEP GRP_TEMP GRP_FINAL
X1 5 1 1
X1 5 2 1
X1 5 3 1
X1 5 4 1
X1 5 5 1
X1 5 6 1
X1 5 7 1
X1 5 8 1
X1 5 9 1
X1 5 10 1

PRINT_RAW/ PRINT_FINE là bảng dữ liệu của coarse binning và fine binning :any:coarse-binning

Bảng CUT_RAW/ CUT_FINE là điểm cắt của coarse binning và fine binning.

UB
-0.9979
-0.9927
-0.9841
-0.9724
-0.9567
-0.9375

VAR_BIN_FINE/ VAR_BIN_COARSE lưu trữ kết quả coarse binning và fine binning của tất cả các biến đã phân tích. Hai bảng này được sử dụng tại bước Variable Report Binning.

VARIABLE RANGE GRP_FINAL GRP_TEMP TOTAL BAD GOOD PERCENT BAD_RATE GOOD_RATE WOE IV
X1 [01] (-INF, -0.9979] 1 1 8,745 2,509 6,236 5.00% 28.69% 71.31% 0.91 0.039
X1 [02] (-0.9979, -0.9927] 1 2 8,701 3,259 5,442 4.98% 37.46% 62.54% 0.512 0.013
X1 [03] (-0.9927, -0.9841] 1 3 8,777 3,259 5,518 5.02% 37.13% 62.87% 0.526 0.014
X1 [04] (-0.9841, -0.9724] 1 4 8,708 3,172 5,536 4.98% 36.43% 63.57% 0.556 0.015
X1 [05] (-0.9724, -0.9567] 1 5 8,764 3,176 5,588 5.01% 36.24% 63.76% 0.564 0.016
X1 [06] (-0.9567, -0.9375] 1 6 8,711 3,078 5,633 4.98% 35.33% 64.67% 0.604 0.018

VAR_BIN_MAPPING lưu kết quả nhóm biến dưới dạng proc format. Bảng này được sử dụng tại bước Variable Transformation.

VARNAME VAR1 VAR2 FMTNAME START END LABEL BIN_TYPE FMT_TYPE DATE_ID
X1 X1   X1F LOW -0.6475 [01] (-INF, -0.6475] SINGLE GRP 18MAR2023:22:59:51
X1 X1   X1F -0.6475 -0.578 [02] (-0.6475, -0.5780] SINGLE GRP 18MAR2023:22:59:51
X1 X1   X1F -0.578 -0.3125 [03] (-0.5780, -0.3125] SINGLE GRP 18MAR2023:22:59:51
X1 X1   X1F -0.3125 -0.1386 [04] (-0.3125, -0.1386] SINGLE GRP 18MAR2023:22:59:51
X1 X1   X1F -0.1386 HIGH [05] (-0.1386 , +INF) SINGLE GRP 18MAR2023:22:59:51
X1 X1   X1W [01] (-INF, -0.6475] [01] (-INF, -0.6475] 0.610248 SINGLE WOE 18MAR2023:22:59:51
X1 X1   X1W [02] (-0.6475, -0.5780] [02] (-0.6475, -0.5780] 0.076743 SINGLE WOE 18MAR2023:22:59:51
X1 X1   X1W [03] (-0.5780, -0.3125] [03] (-0.5780, -0.3125] -1.48775 SINGLE WOE 18MAR2023:22:59:51
X1 X1   X1W [04] (-0.3125, -0.1386] [04] (-0.3125, -0.1386] -3.15068 SINGLE WOE 18MAR2023:22:59:51
X1 X1   X1W [05] (-0.1386 , +INF) [05] (-0.1386 , +INF) -10.4624 SINGLE WOE 18MAR2023:22:59:51

Example

Ví dụ sau đây minh họa kết quả binning với các phương pháp khác nhau:

%var_bin(data=data.train, var=X2, numbin=20, group=1, method=BB);
Brand & Bound Method
Brand & Bound Method
%var_bin(data=data.train, var=X2, numbin=20, group=1, method=MONO);
Monotonic Method
Monotonic Method
%var_bin(data=data.train, var=X2, numbin=20, group=1, method=USHAPE);
U-Shape Method
U-Shape Method

Sử dụng Macro Var_Bin_manual

Macro Var_Bin_manual được sử dụng ngay sau macro Var_Bin để điều chỉnh kết quả Fine binning trong trường hợp kết quả không như mong muốn. Cách sử dụng như sau:

  1. Sửa cột GRP_FINAL ở dữ liệu FINALBIN theo cách muốn nhóm. Các số bằng nhau được hiểu là sẽ tạo thành một nhóm.
  2. Chạy macro Var_manual_bin

Kết quả của macro tương tự với macro Var_Bin.