Menu
CoddyTech

Theo dõi gian lận thẻ

Thuộc phần Học không giám sát trong hành trình Machine Learning của Coddy. Bài học 49 trên 51.

Nhóm phụ trách thẻ của một quỹ tín dụng chỉ có thể kiểm tra thủ công một vài khoản thanh toán mỗi ngày. Tháng trước, các giao dịch gian lận ẩn ở những vùng rìa:

300 khoản thanh toán bằng thẻ trong tháng trước, giờ trong ngày trên trục ngang và số tiền trên trục dọc theo thang logarit: các khoản thanh toán hợp lệ màu xám tập trung ở khoảng giữa ban ngày, dấu chéo màu đỏ đánh dấu 12 vụ gian lận được báo cáo, có những khoản rất nhỏ vào ban đêm và những khoản rất lớn vào bất kỳ giờ nào

Nhưng không ai phát hiện được hành vi gian lận cho đến khi khách hàng khiếu nại vài tuần sau. Vì vậy, hai bộ phát hiện phải tìm những khoản thanh toán bất thường hoàn toàn không có nhãn.

Đã có các khiếu nại trong tuần này. Bộ phát hiện nào có thể bắt được nhiều hơn?

challenge icon

Thử thách

Khó

400 khoản thanh toán tuần này nằm trong payments.csv; chương trình đọc số khoản mà nhóm có thể kiểm tra, budget.

  1. Chuẩn hóa bốn đặc trưng.
  2. Đánh dấu budget khoản thanh toán bằng thuật toán cô lập (isolation forest) (random_state=0) và hệ số ngoại lệ cục bộ (local outlier factor) (20 láng giềng).
  3. Chỉ lúc này mới mở fraud: in ra số khoản mà mỗi danh sách phát hiện được và số khoản thanh toán hợp lệ mà nhóm phải kiểm tra.
  4. Gửi cho nhóm danh sách phát hiện được nhiều khoản hơn: the isolation forest's list hoặc the local outlier factor's list, nếu bằng nhau thì gửi either list, they tie.

Với tháng trước và ngân sách là 10:

Budget: 10 of 300 payments
Isolation forest: caught 6 of 12 frauds, 4 honest payments checked
Local outlier factor: caught 10 of 12 frauds, 0 honest payments checked
Send the team: the local outlier factor's list

Tự làm thử

import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.ensemble import IsolationForest
from sklearn.neighbors import LocalOutlierFactor

# Mỗi giao dịch thanh toán bằng thẻ chiếm một hàng; fraud là 1 nếu khách hàng báo cáo giao dịch đó là gian lận sau vài tuần
payments = pd.read_csv("payments.csv")
features = ["amount_eur", "hour", "km_from_home", "minutes_since_last"]

# Số giao dịch thanh toán mà nhóm có thể kiểm tra thủ công
budget = int(input())

# Viết code của bạn bên dưới
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Học không giám sát

Tự luyện tập: Trình biên dịch Python online