Rủi ro với dữ liệu thiếu trong dữ liệu khoản vay

Mô hình hóa Rủi ro Tín dụng bằng Python

Michael Crabtree

Data Scientist, Ford Motor Company

Dữ liệu thiếu là gì?

  • NULL trong ô thay cho giá trị thực
  • Chuỗi rỗng ''
  • Không phải một hàng trống hoàn toàn
  • Có thể xuất hiện ở bất kỳ cột nào

Mẫu dữ liệu: thiếu độ dài làm việc

Mô hình hóa Rủi ro Tín dụng bằng Python

Tương đồng với ngoại lệ (outlier)

  • Ảnh hưởng xấu đến hiệu suất mô hình máy học
  • Có thể làm lệch mô hình theo cách khó lường
  • Có thể gây lỗi cho một số mô hình máy học
Mô hình hóa Rủi ro Tín dụng bằng Python

Tương đồng với ngoại lệ (outlier)

  • Ảnh hưởng xấu đến hiệu suất mô hình máy học
  • Có thể làm lệch mô hình theo cách khó lường
  • Có thể gây lỗi cho một số mô hình máy học
Loại dữ liệu thiếu Kết quả có thể
NULL ở cột số Lỗi
NULL ở cột chuỗi Lỗi
Mô hình hóa Rủi ro Tín dụng bằng Python

Cách xử lý dữ liệu thiếu

  • Có ba cách xử lý dữ liệu thiếu
    • Thay thế giá trị bị thiếu
    • Xóa các hàng có dữ liệu thiếu
    • Giữ nguyên các hàng có dữ liệu thiếu
  • Hiểu dữ liệu quyết định cách xử lý
Mô hình hóa Rủi ro Tín dụng bằng Python

Cách xử lý dữ liệu thiếu

  • Có ba cách xử lý dữ liệu thiếu
    • Thay thế giá trị bị thiếu
    • Xóa các hàng có dữ liệu thiếu
    • Giữ nguyên các hàng có dữ liệu thiếu
  • Hiểu dữ liệu quyết định cách xử lý
Dữ liệu thiếu Diễn giải Hành động
NULL ở loan_status Khoản vay mới được duyệt Loại khỏi dữ liệu dự đoán
NULL ở person_age Chưa ghi/không cung cấp tuổi Thay bằng trung vị
Mô hình hóa Rủi ro Tín dụng bằng Python

Tìm dữ liệu thiếu

  • Dễ phát hiện giá trị null bằng hàm isnull()
  • Dễ đếm bản ghi null với hàm sum()
  • Phương thức .any() kiểm tra toàn bộ cột
null_columns = cr_loan.columns[cr_loan.isnull().any()]
cr_loan[null_columns].isnull().sum()
# Tổng số giá trị null theo cột
person_home_ownership          25
person_emp_length             895
loan_intent                    25
loan_int_rate                3140
cb_person_default_on_file      15
Mô hình hóa Rủi ro Tín dụng bằng Python

Thay thế dữ liệu thiếu

  • Thay thế dữ liệu thiếu bằng .fillna() với các hàm/method tổng hợp
cr_loan['loan_int_rate'].fillna((cr_loan['loan_int_rate'].mean()), inplace = True)

Ví dụ lãi suất thiếu được thay bằng trung bình

Mô hình hóa Rủi ro Tín dụng bằng Python

Loại bỏ dữ liệu thiếu

  • Dùng chỉ số (index) để xác định bản ghi, tương tự ngoại lệ (outlier)
  • Loại bỏ bản ghi bằng .drop()
indices = cr_loan[cr_loan['person_emp_length'].isnull()].index
cr_loan.drop(indices, inplace=True)
Mô hình hóa Rủi ro Tín dụng bằng Python

Ayo berlatih!

Mô hình hóa Rủi ro Tín dụng bằng Python

Preparing Video For Download...