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:
Đá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:
- 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).
- Đảm bảo không có các nhóm 0 good hoặc 0 bad.
- Vẽ đường WoE từ các nhóm (Coarse Bining)
- 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).
- Lặp lại bước số 4 nếu kết quả nhận được chưa vừa ý.
- Điều chỉnh WOE nếu có sample bias.
- Kết qủa nhận được là Fine Binning.
Ví dụ về binning được cho như sau:
Coarse Binning
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ênVar
vàNumbin
.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ớinumbin=25
là 13s (máy tính CPU i7-4790s, RAM 16GB, SSD) và tăng gấp đôi khinumbin
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òngroup
. 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.
- 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à
Để đ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.
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 Rate là Bad/Total, Good/Total.
- WoE, IV được tính theo công thức ở trên.
Bảng Fine Binning chứa các cột tương tự như bảng coarse 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.
Đồ 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.
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);
%var_bin(data=data.train, var=X2, numbin=20, group=1, method=MONO);
%var_bin(data=data.train, var=X2, numbin=20, group=1, method=USHAPE);
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:
- 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.
- Chạy macro
Var_manual_bin
Kết quả của macro tương tự với macro Var_Bin
.