Data Aggregation

Tạo các biến mới từ dữ liệu ban đầu sử dụng các hàm aggregate

Mục lục

Tổng quan

Dữ liệu SQL

Khi xây dựng Credit Scoring, ta thường sử dụng công cụ SQL để tạo các biến. Dữ liệu thường được lấy theo cách sau đây để tăng tính hiệu quả:

SQL Data

Các biến sẽ được lấy tại từng khung thời gian (theo tháng, tuần, năm) trước ngày quan sát. Ví dụ về dữ liệu được cho như sau:

ID Time_ID Var1 Var2
A 1 1000 5
A 2 5000 10
A 3 6500 15

Trong đó:

  • ID là key của dữ liệu. Ví dụ customer_id.
  • Time_ID là số chỉ các frame. Ví dụ Time_ID=3 nghĩa là thông tin được lấy tại tháng thứ 3 trước ngày quan sát.
  • Var là các biến được lấy tại khoảng thời gian Time_ID tương ứng.

Từ dữ liệu này, ta tính các hàm tổng hợp:

  • Num, Sum, Min, max, avg, std: Số lượng, tổng, giá trị nhỏ nhất, giá trị lớn nhất, giá trị trung bình, độ lệch chuẩn.
  • Rng (range): giá trị lớn nhất – giá trị nhỏ nhất.
  • Crr (Correlation): tương quan giữa biến và time step.
  • Slp (Slope): hệ số góc giữa biến và time step.
Data from SQL

Kết quả của Data Aggregation là các biến mới được đặt tên theo quy tắc như sau:

Varname_agg1_agg2_c/m(i)

Trong đó:

  • Varname là tên của biến:
  • Agg1, agg2 là các hàm aggregation dữ liệu, đặt tên theo 3 ký tự (num, min, avg, max, sum, std (standard deviation), crr (correlation), slp (slope), rng(range)). Agg1 được lấy từ từng snapshot, agg2 được lấy theo cumulative.
  • c/m(i): c(i) là trong i tháng trước ngày quan sát (cumulative), m(i) là trong tháng i trước ngày quan sát (marginal).

Ví dụ: DPD_max_max_c12: Giá trị DPD lớn nhất của các giá trị lớn nhất trong vòng 12 tháng trước ngày quan sát. Có thể hiểu đơn giản là DPD lớn nhất trong 12 tháng trước ngày quan sát. Chú ý rằng có thể có những biến vô nghĩa (ví dụ DPD_max_min_12m). Cần lưu ý điều này khi phân tích biến. Minh họa về dữ liệu sau bước Data Aggregation được cho như sau:

ID Var1_num_c1 Var1_min_c1 Var1_max_c1 Var2_crr_c12 Var2_rng_c12 Var2_slp_c12
A 1   5      
B 2   10      
       

Sử dụng Macro

Syntax

Để thực hiện Data Aggregation, ta sử dụng Macro Data_Aggregation. Cú pháp của Macro như sau:

%Data_Aggregation (Ds_in, Ds_out, 
    max_time, id, varlist, 
    step=3,
    funclist=num max min sum var avg rng crr slp);

Trong đó:

  • Ds_in (dataset[time_id, id, varlist]) data đầu vào chính là data dạng multiple từ SQL. Trong đó time_id là biến chỉ ID thời gian như đã đề cập ở phía trên.
  • Ds_out (dataset) data đầu ra. Mỗi biến cơ sở sẽ tạo ra \(max\_month\times 10\) biến mới.
  • max_time (int) Là số tháng lớn nhất trước ngày quan sát (12,6) của cột id_month.
  • Id (danh sách biến) Primary key của bảng. Ví dụ business_date customer_id.
  • Varlist (danh sách biến) Danh sách các biến.
  • Step (int) để hạn chế số lượng các biến. Ví dụ với \(step=3\) thì các biến aggregation trong Ds_out sẽ có index chia hết cho 3 (ví dụ Var1_num_c3, Var1_num_c6, Var1_num_c9, Var1_num_c12).
  • funclist các hàm sẽ được sử dụng để tạo biến mới.

Detail

Các bước xử lý trong macro như sau:

  • Bước 1. Chuyển từ dạng bảng dọc sang dạng bảng ngang

Data từ dạng “dọc”

ID ID_month Var1 Var2
A 1 1000 5
A 2 5000 10
A 3 6500 15

Data dạng ngang

ID Var1_m1 Var1_m2 Var1_m3 Var1_m12 Var2_m1 Var2_m12
A 1000 5000 6500 5
B
C
  • Bước 2: Sử dụng data steparray để tạo các biến mới với các hàm aggregate: num, min, avg, max, sum, std (standard deviation), crr (correlation), slp (slope), rng(range).

Output

Kết quả của macro là dữ liệu Ds_out với các biến Id và các biến có dạng Varname_agg1_agg2_c/m(i).

Example

Ví dụ dữ liệu đầu vào là VARIABLE_SQL với các biến Z1-Z3 được ví dụ như sau:

ID Time_ID Z1 Z2 Z3
A 1 1000 5 0.6
A 2 5000 10 0.6
A 3 6500 15 0.8
B 1 3000 33 0.1
B 2 9000 15 0.2
B 3 2500 21 0.3

và dữ liệu đầu ra mong muốn là VARIABLE.

%Data_Aggregation(ds_in=variable_sql, 
    ds_out=variable_agg, 
    max_time=12, 
    id=id, 
    varlist= z1 z2 z3)