CHƯƠNG 3: XÂY DỰNG HỆ THỐNG CHẤM ĐIỂM TÍN DỤNG CHO SÀN GIAO DỊCH NGANG HÀNG DCVFINANCE
3.1. Tiền xử lý dữ liệu
Bài nghiên cứu sử dụng bộ dữ liệu có tên là “Payment of Credit Card Client Dataset”
(tạm dịch “Tình trạng thanh toán của khách hàng sử dụng thẻ tín dụng”) được tải về từ Kaggle.com. Ban đầu, bộ dữ liệu được thu thập từ các khách hàng sử dụng thẻ tín dụng trong chi tiêu hàng ngày tại Đài Loan. Bộ dữ liệu sau khi thu thập được sử dụng để dự đoán xác xuất vỡ nợ của người dùng, từ đó đưa ra điểm tín dụng phù hợp với từng người, giúp cho các nhà đầu tư hay cá tổ chức phi ngân hàng có thể đưa ra quyết định đúng đắn, giảm thiểu rủi ro trong việc cho vay.
Bộ dữ liệu chứa 30 000 bản ghi dữ liệu và 24 biến (5 biến chứa thông tin định danh khách hàng, 18 biến độc lập và 1 biến phụ thuộc) phục vụ cho việc xây dựng mô hình phân lớp dự đoán.
Hình 3. 1: Bộ dữ liệu Credit_Card
Đầu vào bài toán: Bộ dữ liệu gồm 30 000 bản ghi chứa thông tin của khách hàng dựa trên các đặc điểm về:
• ID: ID khách hàng.
• Limit_bal: Tổng hạn mức chi tiêu tín dụng: bao gồm toàn bộ hạn mức chi tiêu các thẻ tín dụng của người dùng.
• Giới tính: 1 = nam, 2 = nữ.
• Trình độ học vấn: 1 = trên đại học, 2 = đại học, 3 = trung học, 4 = dưới trung học.
• Tình trạng hôn nhân: 1 = đã kết hôn, 2 = độc thân, 3 = khác.
• Age: Tuổi.
• Pay_0, Pay_2, Pay_3, Pay_4, Pay5, Pay_6: Lịch sử thanh toán trong quá khứ: -1
= thanh toán đúng hạn,0 = không có khoản thanh toán nào trong tháng, 1 = chậm thanh toán trong 1 tháng, 2 = chậm thanh toán trong 2 tháng, 3 = chậm thanh toán trong 3 tháng…. 8 = chậm thanh toán trong 8 tháng, 9 = chậm thanh toán từ 9 tháng trở lên.
• Bill_AMT1, Bill_AMT2, Bill_AMT3, Bill_AMT4, Bill_AMT5, Bill_AMT6:
Tổng tiền hóa đơn hàng tháng từ tháng 4 đến tháng 9.
• Pay_AMT1, Pay_AMT2, Pay_AMT3, Pay_AMT4, Pay_AMT5, Pay_AMT6: Số tiền thanh toán hàng tháng từ tháng 4 đến tháng 9.
Đầu ra bài toán: Chấm điểm tín dụng cho từng khách hàng có trong bộ dữ liệu.
Mục tiêu bài toán: Mục tiêu của bài toán Chấm điểm tín dụng là để giảm thiểu rủi ro vỡ nợ, mất khả năng thanh toán của một khách hàng, xác định người dùng có đủ khả năng thanh toán khoản nợ trong tương lai hay không. Từ đó các tổ chức phi tín dụng có thể giảm thiểu tỷ lệ nợ xấu, tăng khả năng tiếp cận người dùng có lịch sử tín dụng tốt.
3.1.2. Tiền sử lý dữ liệu
Trước khi tiến hành phân tích dữ liệu bằng các phương thức học máy, cần đảm bảo rằng bộ dữ liệu đã được làm sạch và không có bất kỳ giá trị “null” nào.
Bước 1: Kiểm tra hình dạng bộ dữ liệu:
Hình 3. 2: Kích thước bộ dữ liệu Kích thước của bộ dữ liệu bao gồm: 30000 dòng và 25 cột.
Bước 2: Kiểm tra số lượng dữ liệu null trong mỗi cột:
Câu lệnh : df.info()
Kết quả trả về: Giá trị trả về không bao gồm dữ liệu dạng text, chỉ có giá trị dạng số. Không có giá trị bị thiếu trong tất cả các cột.
Hình 3. 3: Kiểm tra thông tin bộ dữ liệu
Bước 3: Kiểm tra lại data tại các cột giá trị định danh: Giới tính, Trình độ học vấn, Tình trạng hôn nhân và tuổi.
Hình 3. 4: Kiểm tra giá trị dư thừa trong bộ dữ liệu
Trong các cột định danh, có 2 cột chứa giá trị không xác định và cột trình độ học vấn và tình trạng hôn nhân. Các giá trị = “0” trong trình độ học vấn và tình trạng hôn
nhân thể hiện giá trị tại các dòng đang bị khuyết thiếu. Do đó, cần phải loại bỏ các hàng có chứa số 0.
Hình 3. 5: Xuất các hàng chứa giá trị dư thừa trong bộ dữ liệu Kết quả trả về tổng cộng có 68 hàng chứa giá trị = “0” trong bộ dữ liệu.
Bước 4: Lọc bỏ các hàng chứa dữ liệu bị thiếu và cắt tỉa bộ dữ liệu
Để đưa ra một bộ dữ liệu mới chứa ít hàng hơn nhưng không chứa các giá trị bị khuyết thiếu. Em tiến hành tạo một data mới có tên là df_no_missing.
Hình 3. 6: Lọc bỏ các hàng chứa dữ liệu bị thiếu và cắt tỉa bộ dữ liệu
Kết quả trả về: Hiện tại bộ dữ liệu đã không còn giá trị khuyết thiếu, có thể bắt đầu tiến hành phân tích và xử lý dữ liệu để đưa ra kết quả mong muốn.
3.1.3. Chuẩn bị dữ liệu
Trước khi sử dụng bộ dữ liệu để tiến hành phân tích, cần phải chia bộ dữ liệu ra làm 2 phần: 1 phần để đào tạo, 1 phần dành cho thử nghiệm.
Hình 3. 7: Chia bộ dữ liệu thành 2 phần: đào tạo và kiểm thử
Tại đây, em đã chia bộ dữ liệu làm 2 phần: bộ dữ liệu dành cho đào tạo (X_train, y_train) và bộ dữ liệu thử nghiệm (X_test.y_test).