môn học phát triển phần mềm nâng cao cho tính toán khoa học

23 0 0
Tài liệu đã được kiểm tra trùng lặp
môn học phát triển phần mềm nâng cao cho tính toán khoa học

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Bộ dữ liệu này được dùng để xây dựng ra một mô hình dự báo khách hàng có xảy ra nợ quá hạn trên 90 ngày trong 2 năm tới hay không... RevolvingUtilizationOfUnsecuredLines Thuộc tính này đ

Trang 1

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN KHOA TOÁN – CƠ – TIN HỌC

-*** -

Môn học: Phát triển phần mềm nâng cao cho tính toán khoa học

Giảng viên: Vũ Tiến Dũng

Thành viên: Ngô Văn Khôi – Trưởng nhóm Nguyễn Trường Sơn

Nguyễn Thị Hường

Hà Nội, tháng 07 năm 2021

Trang 2

2.2.1 Giải quyết các missing value 11

2.2.2 Xác định các đặc điểm thống kê của dữ liệu 12

2.2.3 Phân tích tương quan giữa các biến độc lập 13

2.2.4 Giải quyết giá trị bất thường (outlier) 13

3 Xây dựng mô hình 20

3.1 Xây dựng baseline model 20

3.2 Tối ưu mô hình GradientBoosting và đánh giá kết quả 20

4 Xây dựng demo webapp 22

5 Kết luận 22

Trang 3

1 Giới thiệu

Ngân hàng là một tổ chức tài chính và trung gian tài chính chấp nhận tiền gửi và định kênh những tiền gửi đó vào các hoạt động cho vay trực tiếp hoặc gián tiếp thông qua các thị trường vốn Ngân hàng là kết nối giữa khách hàng có thâm hụt vốn và khách hàng có thặng dư vốn Hầu hết các Ngân hàng hoạt động theo một hệ thống được gọi là hoạt động ngân hàng dự trữ phân đoạn mà họ chỉ nắm giữ một dự trữ nhỏ các khoản tiền gửi và cho vay phần còn lại để kiếm lời Do vậy, cho vay là một nghiệp vụ cơ bản của Ngân hàng nhưng đồng thời hoạt động này cũng tiềm ẩn nhiều rủi ro, đặc biệt là rủi ro tín dụng Rủi ro tín dụng trong hoạt động ngân hàng là tổn thất có khả năng xảy ra đối với nợ của tổ chức tín dụng, chi nhánh ngân hàng nước ngoài do khách hàng không thực hiện hoặc không có khả năng thực hiện một phần hoặc toàn bộ nghĩa vụ của mình theo cam kết Theo đó, một tiêu chí để đánh giá khả năng trả nợ của khách hàng là chỉ tiêu nợ quá hạn, được cụ thể hóa như sau:

- Nợ nhóm 1 (nợ đủ tiêu chuẩn): Nợ quá hạn dưới 10 ngày - Nợ nhóm 2 (nợ cần chú ý): Nợ quá hạn từ 10 ngày đến 90 ngày - Nợ nhóm 3 (nợ dưới tiêu chuẩn): Nợ quá hạn từ 91 ngày đến 180 ngày - Nợ nhóm 4 (nợ nghi ngờ): Nợ quá hạn từ 181 ngày đến 360 ngày - Nợ nhóm 5 (nợ có khả năng mất vốn): Nợ quá hạn trên 360 ngày Trong đó, nợ xấu là nợ thuộc các nhóm 3, 4 và 5

Từ những tiêu chí phân loại cơ bản như trên, việc phân tích và dự đoán một khách hàng có xảy ra nợ quá hạn trong tương lai hay không trước khi ra quyết định cho vay hay dự báo một khách hàng hiện hữu trong tương lai có phát sinh nợ quá hạn hay không là một vấn đề cần thiết và cấp thiết đối với mỗi Ngân hàng Hoạt động này góp phần giúp Ngân hàng hoạt động hiệu quả, bên cạnh đó còn đảm bảo cho mạch tài chính trên thị trường được thông suốt, liền mạch Từ đây, nhóm em quyết định thực hiện đề tài cuối kỳ liên quan đến rủi ro tín dụng dựa trên bộ dữ liệu được lấy từ một cuộc thi trên Kaggle mang tên “Give me some credit” Bộ dữ liệu này được dùng để xây dựng ra một mô hình dự báo khách hàng có xảy ra nợ quá hạn trên 90 ngày trong 2 năm tới hay không

Trang 4

2 Khám phá dữ liệu

2.1 Khám phá các thuộc tính của bộ dữ liệu

Bộ dữ liệu này có 11 thuộc tính như sau:

Trang 5

Từ kết quả phân tích cho thấy có đến 93.316% dữ liệu có biến đầu ra được dán nhãn 0, trong khi chỉ có 6.684% được dán nhãn 1 Đây là hiện tượng mất cân bằng dữ liệu xảy ra rất thường xuyên trong machine learning

2.2.2 RevolvingUtilizationOfUnsecuredLines

Thuộc tính này để chỉ hạn mức tín dụng của khách hàng không tính các khoản vay nợ hiện tại và bất động sản hay thuộc tính này là tỷ lệ hạn mức còn lại được dùng/hạn mức tối đa có thể sử dụng trừ các khoản vay và BĐS

Ví dụ như mình có 1 thẻ tín dụng và hạn mức của nó là 1,000 đô Trong tài khoản ngân hàng cá nhân của mình cũng đang có 1,000 đô Số dư thẻ tín dụng là 500 đô Vậy số dư tối đa mình có thể có thông qua thẻ tín dụng và tài khoản ngân hàng cá nhân là 1000 đô + 1000 đô = 2000 đô, mình đã sử dụng 500 đô từ hạn mức tín dụng cho nên tổng số dư là 500 đô + 1000 đô = 1500 đô Giá trị RevolvingUtilizationOfUnsecuredLines ở đây là 1500/2000 = 0.75

Hạn mức tín dụng của khách hàng không tính các khoản vay nợ hiện tại và bất động sản càng cao thì khả năng xảy ra nợ quá hạn trên 90 ngày càng cao

Trang 6

2.2.3 Age

Thuộc tính này là để chỉ tuổi của khách hàng

Độ tuổi càng trẻ thì khả năng xảy ra nợ quá hạn trên 90 ngày càng cao, các khoản vay tập trung ở độ tuổi trung niên và đến tầm từ 75 tuổi trở đi thì khả năng xảy ra nợ quá hạn trên 90 ngày ít hơn

2.2.4 NumberOfTime30-59DaysPastDueNotWorse

Thuộc tính này biểu thị số lần khách hàng chậm thanh toán các khoản trả hàng tháng từ 30-59 ngày

Trang 7

Số lần xảy ra nợ quá hạn từ 30 – 59 ngày cao thì khả năng xảy ra nợ quá hạn trên 90 ngày cao Khả năng không xảy ra nợ quá hạn trên 90 ngày liên quan đến thuộc tính này chỉ là 1 dao động rất nhỏ xung quanh giá trị 0

2.2.5 DebtRatio

Thuộc tính này biểu thị tỷ lệ nợ

Ví dụ khoản nợ hàng tháng của một khách hàng là 200 đô, và chi tiêu hàng tháng là 500 đô, thu nhập hàng tháng là 1000 đô, thì tỉ lệ nợ là (200 + 500)/1000 = 0.7

Tỷ lệ nợ thấp hơn thì khả năng xảy ra vấn đề về tài chính thấp hơn

2.2.6 MonthlyIncome

Thuộc tính này biểu thị thu nhập hàng tháng

Trang 8

Ở mức thu nhập thấp hơn thì khả năng xảy ra vấn đề về tài chính cao hơn nhưng mối quan hệ này không quá rõ ràng

2.2.7 NumberOfOpenCreditLinesAndLoans

Thuộc tính này biểu thị số khoản vay và/hoặc số thẻ tín dụng của khách hàng

Cùng số thẻ tín dụng hoặc khoản vay thì khả năng xảy ra vấn đề về tài chính thấp hơn nhưng mối quan hệ này không quá rõ ràng

2.2.8 NumberOfTimes90DaysLate

Thuộc tính này biểu thị số lần khách hàng chậm thanh toán các khoản trả hàng tháng lớn hơn 90 ngày

Trang 9

Số lần xảy ra nợ quá hạn trên 90 ngày cao thì khả năng xảy ra nợ quá hạn trên 90 ngày cao Khả năng không xảy ra nợ quá hạn trên 90 ngày liên quan đến thuộc tính này chỉ là 1 dao động rất nhỏ xung quanh giá trị 0

2.2.9 NumberRealEstateLoansOrLines

Thuộc tính này biểu thị số khoản vay của khách hàng liên quan đến bất động sản

Số khoản vay của khách hàng liên quan đến bất động sản càng ít thì khả năng xảy ra nợ quá hạn trên 90 ngày càng thấp

2.2.10 NumberOfTime60-89DaysPastDueNotWorse

Thuộc tính này biểu thị số lần khách hàng chậm thanh toán các khoản trả hàng tháng từ 60 - 89 ngày

Trang 10

Số lần xảy ra nợ quá hạn từ 60 – 89 ngày cao thì khả năng xảy ra nợ quá hạn trên 90 ngày cao Khả năng không xảy ra nợ quá hạn trên 90 ngày liên quan đến thuộc tính này chỉ là 1 dao động rất nhỏ xung quanh giá trị 0

2.2.11 NumberOfDependents

Thuộc tính này biểu thị số người phụ thuộc trong gia đình

Số người phụ thuộc trong gia đình càng ít thì khả năng xảy ra nợ quá hạn trên 90 ngày càng thấp

Trang 11

2.2 Phân tích dữ liệu

2.2.1 Giải quyết các missing value

Bộ dữ liệu này cho thấy có 2 thuộc tính có missing value là MonthlyIncome và NumberOfDependents Để giải quyết giá trị thiếu này, t thay thế bằng giá trị median của chúng

Trang 12

2.2.2 Xác định các đặc điểm thống kê của dữ liệu

Mô tả đặc điểm thống kê ban đầu của dữ liệu thể hiện ở bảng sau:

Độ tuổi trung bình của khách hàng là tuổi trung niên (40 – ngoài 50 tuổi), có giá trị oulier (0 tuổi) Về tình trạng nợ quá hạn cho thấy giá trị trung bình số lần nợ quá hạn của khách hàng trên 30/60/90 ngày khá thấp (0.1 – 0.25), độ lệch chuẩn đều dưới 1 Tỷ lệ nợ có trung vị tại 0.3665 Thu nhập trung bình rơi vào khoảng hơn $6000/tháng (khá gần mức thu nhập trung bình của nước Mỹ năm 2019 – 2020), tuy nhiên dải thu nhập dao động khá lớn

Trang 13

2.2.3 Phân tích tương quan giữa các biến độc lập

Kết quả phân tích tương quan trên cho thấy những người có nợ quá hạn trên 30 ngày thì có xu hướng nợ quá hạn trên 60 ngày và trên 90 ngày

2.2.4 Giải quyết giá trị bất thường (outlier)

2.2.4.1 Các phương pháp để tìm outlier Dùng 4 phương pháp để tìm outlier như sau:

trên 97.5% thì được coi là outlier

độ lệch tuyệt đối (MAD) Nếu z-score có hiệu chỉnh nằm dưới 3.5 hoặc nằm trên 3.5 thì được coi là outlier

(3) STD-based Outliers: Tính thông qua giá trị z =   với 𝜇 là giá trị trung bình, 𝜎 là độ lệch chuẩn Nếu dữ liệu nằm dưới z hoặc trên z thì được coi là outlier

Trang 14

(4) Majority vote based Outliers: Nếu có 2/3 phương pháp trên cho ra dữ liệu là outlier thì điểm dữ liệu đó được coi là outlier

2.2.4.2 Các phương pháp để giải quyết outlier Dùng 3 phương pháp để giải quyết outlier như sau:

2.2.4.3 Áp dụng vào bộ dữ liệu hiện tại

Các điểm màu đỏ đại diện cho các potential outlier

Hạn mức tín dụng nằm trong khoảng từ 0 – 1 nhưng có rất nhiều potential outlier nằm ra ngoài giới hạn đấy và có những điểm outlier lên đến khoảng 3000

Để giải quyết các outlier của thuộc tính này ta dùng phương pháp cận trên là 1 và thu được kết quả như sau:

Trang 15

2.2.4.3.2 Giải quyết outlier của cột Age

Phương pháp Percentile-based outliers cho ra nhiều potential outlier nhưng trừ 0 tuổi không thể gửi tiền ngân hàng thì mọi độ tuổi đều có thể có tiền gửi ngân hàng

Để giải quyết các outlier này, ta thay thế tất cả các outlier bằng cận dưới là 21 và thu được kết quả như sau:

Trang 16

2.2.4.3.3 Giải quyết outlier của cột NumberOfTime30-59DaysPastDueNotWorse

Sau khi tham chiếu đồ thị cùng với đối chiếu kết quả cho thấy giá trị 96 và 98 là các outlier

Để giải quyết các outlier này, ta thay thế các outlier bằng median của chính cột thuộc tính này nếu điểm dữ liệu đó lớn hơn 95 và thu được kết quả như sau:

Trang 17

2.2.4.3.4 Giải quyết outlier của cột DebtRatio

Phương pháp MAD-based Outliers phát hiện ra nhiều potential outlier nhất nên ta sẽ cân nhắc các outlier từ phương pháp này

Để giải quyết các outlier này, ta thay thế các outlier bằng cận dưới của phương pháp MAD-based Outliers và kết quả thu được như sau:

Trang 18

2.2.4.3.5 Giải quyết outlier của cột MonthlyIncome

Đối với thuộc tính này, ta lựa chọn phương pháp Majority vote based outliers Để giải quyết các outlier này, ta thay thế các outlier bằng cận dưới của phương pháp Majority vote based outlier và thu được kết quả như sau:

Trang 19

2.2.4.3.6 Giải quyết outlier của cột NumberOfTimes90DaysLate

Đối với thuộc tính này, ta ngay lập tức có thể nhìn thấy 96 và 98 là các outliers Và để giải quyết các outlier này, ta thay thế bằng median của chính cột đó nếu x lớn hơn 95 và thu được kết quả như sau:

Đối với thuộc tính này, ta ngay lập tức có thể nhìn thấy 96 và 98 là các outliers Và để giải quyết các outlier này, ta thay thế bằng median của chính cột đó nếu x lớn hơn 95 và thu được kết quả như sau:

Trang 20

3 Xây dựng mô hình 3.1 Xây dựng baseline model

Bài phân tích xây dựng 5 mô hình theo các phương pháp: K-nearest neighbors (KNN), Logistic Regression, Random Forest, AdaBoost và GradientBoosting

Đánh giá hiệu quả các mô hình dựa trên phương pháp Cross-validation với tiêu chí đánh giá là giá trị AUC của từng mô hình

Kết quả sau khi chạy model như bảng bên dưới đây:

Theo đó, phương pháp cho kết quả tốt nhất là GradientBoosting với AUC = 0.8630

Trong phần tiếp theo, nhóm sẽ thực hiện tối ưu mô hình này để dự đoán khả năng trả nợ của khách hàng

3.2 Tối ưu mô hình GradientBoosting và đánh giá kết quả

Nhóm sử dụng phương pháp GridSearchCV trong thư viện sklearn để tối ưu các tham số cho mô hình, kết quả thu được như sau:

Trang 21

 'loss' = 'exponential' 'max_depth': 4 'n_estimators': 100

Chạy lại mô hình GradientBoosting với tham số trên, thu được kết quả AUC = 0.8643, trực quan hóa bằng đường cong ROC như bên dưới

Nhóm lựa chọn điểm tối ưu cho bài toán là 0.0667, tức là nếu xắc suất để khách hàng có rủi ro trả nợ quá hạn lớn hơn 90 ngày là 6,67% thì được dán nhãn là 1, ngược lại thì dán nhãn là 0 và quyết định cho khách hàng vay Theo đó, kết quả dự đoán với tập dữ liệu test được tóm tắt bằng confusion matrix và classification report như sau

Confusion matrix

Trang 22

Classification report

Dựa vào ma trận trên ta thấy mô hình dự đoán chính xác 111,538 khách hàng không bị quá hạn trả nợ hơn 90 ngày và 7,910 khách hàng bị quá hạn trả nợ hơn 90 ngày Tỷ lệ dự báo chính xác accuracy = (TP+TN)/ (TP+FP+TN+FN) = 80%

4 Xây dựng demo webapp

Nhóm sử dụng thư viện Pickle để lưu lại và tái sử dụng mô hình Nhóm đã xây dựng 1 website để hiển thị kết quả dự báo khả năng trả nợ quá hạn trên 90 ngày của khách hang Cán bộ ngân hang có thể nhập các thông số của khách hàng và website sẽ đưa ra kết quả dự báo về khả năng trả nợ của khách hàng

Website được xây dựng giao diện bằng thư viện streamlit có giao diện như bên dưới đây

5 Kết luận

Bài toán đánh giá rủi ro trả nợ quá hạn của khách hàng là một trong những bài toán rất phổ biến và có tính thực tiễn, quan trọng trong ngành ngân hàng Cũng chính vì lý do này, nhóm nghiên cứu đã quyết định lựa chọn đề tài cuối kỳ liên quan đến rủi ro tín dụng dựa trên bộ dữ liệu được lấy từ một cuộc thi trên Kaggle mang tên “Give me some credit” Thông qua bài nghiên cứu, các thành viên trong nhóm đã có cơ hội nghiên cứu và thực

Trang 23

hành tất cả các giai đoạn của một dự án về phân tích dữ liệu bao gồm: thu thập dữ liệu, tìm hiểu dữ liệu, làm sạch dữ liệu, xây dựng mô hình, tối ưu và đánh giá mô hình, kiểm thử, … Các kiến thức đã được học trong bộ môn đều được áp dụng xuyên suốt quá trình thực hiện dự án Nhóm cũng đã xây dựng một website để người dùng có thể thực hành dự báo kết quả dựa trên những dự liệu đầu vào Sau cùng, mặc dù đây là một bài toán thực tế, tuy nhiên vì lý bảo mật dữ liệu nên các số liệu thực tế của ngành ngân hàng rất khó tiếp cận, do vậy, khi áp dụng những ngiên cứu trong dự án này vào thực tế chắc chắn sẽ còn những điểm cần nghiên cứu cũng như xử lý thêm để tối ưu và phù hợp với thực tiễn

TÀI LIỆU THAM KHẢO

[1] Gurarie, E (n.d.) GLM: Logistic Regression and Model Selection Retrieved from University of Maryland

[2] Generalized Linear Models With Examples in R-Springer - Peter K Dunn · Gordon K Smyth [3] https://docs.python.org/3/library/re.html

[3] https://www.kaggle.com/c/GiveMeSomeCredit/discussion

[4] approach-4899757d0bcb

https://medium.com/@MLJARofficial/give-me-some-credit-machine-learning-[6] Mô hình hồi quy và Khám phá Khoa học - GS Nguyễn Văn Tuấn [7] Jason Brownlee-Machine Learning Mastery with Python 2016 [8] Christopher M Bisho- Pattern Recognition and Machine Learning

Ngày đăng: 14/05/2024, 16:08

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan