Mục lục
Tổng quan
Best Subset Selection là thuật toán lựa chọn biến bằng cách thử tất cả các tập con của tập hợp biến. Với \(n\) biến ban đầu, về lý thuyết sẽ có \(2^n-1\) tập hợp con. Với mỗi tập con, ta tiến hành hồi quy mô hình với các biến trong tập con này và tính toán các chỉ số như sau:
-
Metric: Tiêu chí để đánh giá mô hình. Vì các mô hình Credit Scoring hay sử dụng Gini là chỉ số đánh giá nên các metric sau đây thường được sử dụng:
- Gini của dữ liệu train/ validation.
- Gini của Cross validation (xem thêm Cross Validation).
- Gini của K-fold validation (xem thêm K-fold Validation).
-
Số lượng các biến có hệ số ước lượng là âm: về tiêu chí chọn biến thì các hệ số ước lượng không được là số âm (xem thêm variable selection.
Do số lượng các trường hợp cần thử là rất lớn (\(2^n-1\) trường hợp) nên thuật toán chỉ thích hợp với các dữ liệu có số lượng biến ít (nhỏ hơn 20 biến).
Sử dụng Macro
Để thực hiện chọn biến bằng phương pháp best subset, ta sử dụng Macro Varselect_all_combine;
Syntax
Cú pháp của macro như sau:
%Varselect_all_combine(data=, varlist=, percent=0.7, batch_size=1000, num=50, metric=Gini_cross);
Trong đó:
- data là dữ liệu train. Dữ liệu cần có biến BAD và các biến trong varlist.
- valid là dữ liệu validate (nếu có). Dữ liệu validate có cấu trúc tương tự train.
- varlist danh sách các biến được đưa vào thử.
- percent tỉ lệ phần trăm quan sát ở dữ liệu train/ toàn bộ quan sát trong trường hợp metric là Gini_cross.
- batch_size là số lượt thử mỗi “lần”. Nguyên nhân là SAS không thể thử cùng lúc \(2^n-1\) trường hợp (do giới hạn về RAM, dung lượng ổ cứng). Số lần thử sẽ là \(\frac{2^n-1}{BatchSize}\) (tổng số step).
- num là số lượng các lần chia trong trường hợp metric là Gini_cross hoặc Gini_KFold.
-
metric là tiêu chí để lựa chọn mô hình. Các giá trị có thể là:
- Gini_cross Gini của dữ liệu validate khi thực hiện Cross Validation.
- Gini_KFold Gini của dữ liệu validate khi thực hiện KFold Validation.
- Gini_valid Gini của dữ liệu validate (dữ liệu valid).
- Gini_train Gini của dữ liệu train (dữ liệu data).
Detail
Chú ý rằng, trong trường hợp không sử dụng WOE Transform thì hệ số của các biến không ràng buộc phải là số dương. Tuy nhiên để tiện cho việc thống kê, ta cần đổi dấu của biến để các hệ số trước khi các biến trong varlist.
Output
Kết quả đầu ra của Macro là bảng Result với mỗi dòng là thông tin một lần thử. Dữ liệu có các biến như sau:
- ID: định danh của lần thử.
- Mean_train_Gini: Giá trị trung bình của Gini trong mẫu train.
- Num_var: Số lượng biến của lần thử.
- Select_var: Mã hóa các biến được chọn vào mô hình dưới dạng 0-1. Số 1 ở vị trí thứ i nghĩa là biến thứ i trong varlist được chọn vào trong lần thử.
- Mean_valid_Gini: Giá trị trung bình của Gini trong mẫu validate. Cột này chính là thông tin của tham số metric.
- Num_neg: Số lượng các biến có hệ số ước lượng là số âm.
ID | Mean_train_Gini | Num_var | Select_var | Mean_valid_Gini | Num_neg |
---|---|---|---|---|---|
1 | 20.37% | 1 | 000000001 | 16.47% | 0 |
2 | 38.41% | 1 | 000000010 | 33.04% | 0 |
3 | 46.44% | 2 | 000000011 | 41.18% | 0 |
4 | 44.77% | 1 | 000000100 | 43.63% | 0 |
5 | 50.64% | 2 | 000000101 | 47.49% | 0 |
… | … | … | … | … | … |
Example
Ví dụ chọn biến với metric là Gini của Kfold validation:
%Varselect_all_combine(data=data.train,
varlist=X1 X2 X3 X4 X5 X6 X7 X8 X9 X10);
Ví dụ chọn biến với metric là Gini của Cross validation:
%Varselect_all_combine(data=data.train,
varlist=X1 X2 X3 X4 X5 X6 X7 X8 X9 X10,
metric=Gini_cross);
Ví dụ chọn biến với Batch_size=500
%Varselect_all_combine(data=data.train,
varlist=X1 X2 X3 X4 X5 X6 X7 X8 X9 X10,
metric=Gini_cross,
batch_size=500);