images
12/10/2020 08:35 am

Gấu mèo đi làm Data Scientist - Phần 9: Credit Card Fraud Analysis - Part 1

Mới hôm trước Gấu Mèo thử về một số phương pháp xác định bất thường bằng unsupervised learning (Dữ liệu đầu vào không cần gán nhãn từng bản ghi là bất thường hay không).

Đang chuẩn bị livestream bán ô tô thì Gấu Mèo nghe thấy sếp gọi.

- Mày đi với anh một lát.

- Đi đâu thế sếp. Nhân tiện sếp mua ô tô mới không, em có khuyến mãi này.

- Điên, anh mày lấy tiền đâu ra. Mày sang công ty bạn anh, bên đấy làm FE Credit, đang cần tư vấn về credit card fraud detection system.


Mới hôm trước Gấu Mèo thử về một số phương pháp xác định bất thường bằng unsupervised learning (Dữ liệu đầu vào không cần gán nhãn từng bản ghi là bất thường hay không). Tuy nhiên có vẻ như với hệ thống credit card fraud detection thì như thế là chưa đủ. Hơn nữa thường có data đã được gán nhãn, tiếp cận bằng supervised có vẻ hợp lý hơn.


“Thế này thì đây là bài toán classification rồi còn gì. Có điều các class bị unbalance. Bài này thì nhiều phương pháp, Logistic Regression, k-Nearest Neighbors, Decision Trees, Naive Bayes..  hay Neural Network đều xử được. Nhưng mà cứ thử trước với mấy phương pháp đơn giản đã". Nghĩ thế nên Gấu Mèo bắt đầu với Decision Trees cho dễ nhìn.


Dữ liệu các bạn lấy ở đây nhé: https://bit.ly/3fpZt6a

Các trường V1-V28 đã được chuẩn hoá

Trường class đánh giá việc gian lận hay không (giá trị 1 tương đương gian lận)


𝒊𝒎𝒑𝒐𝒓𝒕 𝒑𝒂𝒏𝒅𝒂𝒔 𝒂𝒔 𝒑𝒅

𝒊𝒎𝒑𝒐𝒓𝒕 𝒏𝒖𝒎𝒑𝒚 𝒂𝒔 𝒏𝒑

𝒊𝒎𝒑𝒐𝒓𝒕 𝒎𝒂𝒕𝒑𝒍𝒐𝒕𝒍𝒊𝒃.𝒑𝒚𝒑𝒍𝒐𝒕 𝒂𝒔 𝒑𝒍𝒕

𝒊𝒎𝒑𝒐𝒓𝒕 𝒔𝒆𝒂𝒃𝒐𝒓𝒏 𝒂𝒔 𝒔𝒏𝒔

𝒊𝒎𝒑𝒐𝒓𝒕 𝒎𝒂𝒕𝒑𝒍𝒐𝒕𝒍𝒊𝒃

𝒇𝒓𝒐𝒎 𝒔𝒌𝒍𝒆𝒂𝒓𝒏 𝒊𝒎𝒑𝒐𝒓𝒕 𝒕𝒓𝒆𝒆

𝒇𝒓𝒐𝒎 𝒔𝒌𝒍𝒆𝒂𝒓𝒏.𝒎𝒐𝒅𝒆𝒍_𝒔𝒆𝒍𝒆𝒄𝒕𝒊𝒐𝒏 𝒊𝒎𝒑𝒐𝒓𝒕 𝒕𝒓𝒂𝒊𝒏_𝒕𝒆𝒔𝒕_𝒔𝒑𝒍𝒊𝒕

𝒅𝒇 = 𝒑𝒅.𝒓𝒆𝒂𝒅_𝒄𝒔𝒗('𝒅𝒂𝒕𝒂/𝒄𝒓𝒆𝒅𝒊𝒕𝒄𝒂𝒓𝒅.𝒄𝒔𝒗', 𝒆𝒏𝒄𝒐𝒅𝒊𝒏𝒈='𝒖𝒕𝒇-8')

𝑿 = 𝒅𝒇.𝒅𝒓𝒐𝒑('𝑪𝒍𝒂𝒔𝒔', 𝒂𝒙𝒊𝒔=1)

𝒀 = 𝒅𝒇['𝑪𝒍𝒂𝒔𝒔']

𝑿_𝒕𝒓𝒂𝒊𝒏, 𝑿_𝒕𝒆𝒔𝒕, 𝒚_𝒕𝒓𝒂𝒊𝒏, 𝒚_𝒕𝒆𝒔𝒕 = 𝒕𝒓𝒂𝒊𝒏_𝒕𝒆𝒔𝒕_𝒔𝒑𝒍𝒊𝒕(𝑿, 𝒀, 𝒕𝒆𝒔𝒕_𝒔𝒊𝒛𝒆=0.20)

𝒄𝒍𝒂𝒔𝒔𝒊𝒇𝒊𝒆𝒓 = 𝒕𝒓𝒆𝒆.𝑫𝒆𝒄𝒊𝒔𝒊𝒐𝒏𝑻𝒓𝒆𝒆𝑪𝒍𝒂𝒔𝒔𝒊𝒇𝒊𝒆𝒓()

𝒄𝒍𝒂𝒔𝒔𝒊𝒇𝒊𝒆𝒓 = 𝒄𝒍𝒇.𝒇𝒊𝒕(𝑿_𝒕𝒓𝒂𝒊𝒏, 𝒚_𝒕𝒓𝒂𝒊𝒏)


Cách sử dụng 𝗗𝗲𝗰𝗶𝘀𝗶𝗼𝗻 𝗧𝗿𝗲𝗲 có một lợi thế là dễ visualize và giải thích cho mọi người.

𝒊𝒎𝒑𝒐𝒓𝒕 𝒈𝒓𝒂𝒑𝒉𝒗𝒊𝒛 

𝒅𝒐𝒕_𝒅𝒂𝒕𝒂 = 𝒕𝒓𝒆𝒆.𝒆𝒙𝒑𝒐𝒓𝒕_𝒈𝒓𝒂𝒑𝒉𝒗𝒊𝒛(𝒄𝒍𝒇, 𝒐𝒖𝒕_𝒇𝒊𝒍𝒆=𝑵𝒐𝒏𝒆) 

𝒈𝒓𝒂𝒑𝒉 = 𝒈𝒓𝒂𝒑𝒉𝒗𝒊𝒛.𝑺𝒐𝒖𝒓𝒄𝒆(𝒅𝒐𝒕_𝒅𝒂𝒕𝒂) 

𝒈𝒓𝒂𝒑𝒉.𝒓𝒆𝒏𝒅𝒆𝒓("𝑪𝒓𝒆𝒅𝒊𝒕 𝑪𝒂𝒓𝒅 𝑭𝒓𝒂𝒖𝒅") 


Kết quả như hình 1 (Gấu Mèo chỉ chụp đoạn đầu do cây hơi dài)

Dùng hình này thì thậm chí bạn có thể tính bằng mắt một giao dịch có phải gian lận hay không bằng cách đi dần theo tree

Tuy nhiên model nào thì cũng cần đánh giá lại. 


Khi đánh giá model với tập test:

y_pred = classifier.predict(X_test)

print(confusion_matrix(y_test, y_pred))

print(classification_report(y_test, y_pred))

thì Gấu Mèo thu được kết quả như hình 2:

Đánh giá model với tập train, kết quả như hình 3:


Bạn sẽ thấy kết quả trên tập test kém hơn rất nhiều so với tập train.

Hiện tượng này là hiện tượng overfitting. Với Decision Tree mà bị overfitting thì có thể chuyển sang Random Forest.


Nhìn chung lần thử này model có vẻ không dùng được. Gấu Mèo lúc này băn khoăn giữa việc giải quyết overfitting trước hay thử các phương pháp khác trước. Thế nên nó ngồi thiền để quyết định cho tỉnh táo. Và vì thế nên nó lại chìm vào giấc ngủ lúc nào không hay...


Note:

- Dữ liệu trong bài là dữ liệu unbalanced (thực tế cũng thường như vậy) nên phương pháp đánh giá GM dùng confusion matrix thay vì accuracy. Việc đánh giá model các bạn có thể xem lại trong phần 6.

-Thực tế bài toán này không chỉ dừng lại ở việc chia thành 2 class, có gian lận hay không, mà còn chia thành nhiều cấp độ khác nhau. Bởi vì không thể bỏ sót, cũng không thể tự động chặn nhầm giao dịch hợp lệ. Thế nên nó sẽ chia nhiều cấp độ để biết chặn tự động, hay cần xét duyệt hoặc gửi yêu cầu confirm tới khách hàng.

- Hệ thống hoàn toàn có thể dùng kết hợp cả cách phát hiện anomaly theo unsupervised với model supervised để ra cảnh báo.

- Để deal với unbalanced dataset thì có một vài phương pháp, trong bài Gấu Mèo tạm bỏ qua, và sẽ nói kĩ hơn trong một bài khác.


Mời các bạn đọc lại bài Gấu mèo đi làm Data Scientist - Phần 8: Outlier - Anomaly Detection - Part 3.


và đọc tiếp Phần 2: Gấu mèo đi làm Data Scientist - Phần 9: Credit Card Fraud Analysis - Part 2


- Tech Zone -

Thư giãn chút nào!!!

Bài viết liên quan