Lời nói đầu Việc giảm thiểu rủi ro do gian lận đến từ các giao dịch của khách hàng bài toán ở đây là thương mại điện tử là một vấn đề đang rất được quan tâm của các doanh nghiệp bởi tính
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
Hà Nội, 2020
Trang 2Lời nói đầu
Việc giảm thiểu rủi ro do gian lận đến từ các giao dịch của khách hàng (bài toán ở đây là thương mại điện tử) là một vấn đề đang rất được quan tâm của các doanh nghiệp bởi tính quan trọng của nó Các giải pháp trước đây không giải quyết được tất cả các vấn đề xung quanh nó (như về việc giảm tỷ lệ gian lận thẻ tín dụng và các khoản bồi hoàn (chargeback) phát sinh từ CNP), hơn nữa lại không thể giải quyết trong thời gian thực (do thời gian để kiểm tra, thắt chặt các tham số cho bảo mật, ) Hơn nữa các phương pháp này còn khiến một lượng lớn các giao dịch hợp
lệ không được thông qua (bị từ chối) trong khi lại để hổng những giao dịch gian lận (do những kỹ năng gian lận ngày càng tinh vi và hiện đại hơn), khiến cho
doanh nghiệp bị tổn thất khá lớn Với nhiều vấn đề bức thiết đó mà em chọn đề tài này để thực hiện
Bài báo cáo của em trình bày theo bốn chương:
Em xin chân thành cảm ơn!
Trang 3Chương 1: Đặt vấn đề
Ngày nay, với sự phát triển của internet thì thương mại điện tử đang ngày càng lớn mạnh hơn Theo thống kê, Thương mại điện tử bán lẻ toàn thế giới đạt 2.9 nghìn tỷ USD, trong đó, 2.5 nghìn tỷ theo hình thức B2B và 0.39 nghìn tỷ cho hình thức giao dịch B2C Đến năm 2018 thì có khoảng 1.8 tỷ người trên toán thế giới mua hàng trực tuyến Doanh số thương mại điện tử thế giới đạt gần 3.46 nghìn tỷ USD trong năm 2019 Con số này tăng 17.9% so với năm 2018
Thật dễ dàng để giảm thiểu rủi ro đến từ gian lận, nhưng làm điều đó mà không làm giảm doanh thu cho doanh nghiệp thì lại không đơn giản Các mối đe dọa do gian lận luôn luôn phát triển và kẻ xấu thì ngày càng hiện đại hóa các kỹ thuật gian lận hơn
Card not present (CNP) transaction: được sử dụng phổ biến cho các khoản thanh toán (giao dịch) được thực hiện qua internet CNP là nguyên nhân phổ biến cho vấn đề gian lận thẻ tín dụng (Credit Card Fraud) bởi vì rất khó để xác minh rằng chủ thẻ thực sự cho phép mua hàng hay thực hiện các giao dịch Giảm tỷ lệ gian lận thẻ tín dụng và các khoản bồi hoàn (chargeback) phát sinh từ CNP
Cách tiếp cận phổ biến để chống gian lận trước đây đó là thắt chặt các tham số bảo mật cho các giao dịch (Bảo mật tốt hơn = Ít gian lận hơn)
Nhược điểm lớn của phương pháp này đó là mặc dù có thể giảm thành công các trường hợp gian lận Tuy nhiên điều này có thể khiến một lượng lớn các giao dịch hợp pháp bị từ chối, dẫn đến việc giảm thiểu doanh thu đáng kể cho doanh nghiệp Đánh giá các giao dịch không theo thời gian thực, dẫn đến việc số lượng giao dịch hợp pháp được phê duyệt giảm đi đáng kể
Trang 4Các vấn đề cần phải giải quyết đó là: Cải thiện độ chính xác: phát hiện gian lận không chính xác thường cho phép các giao dịch xấu thông qua trong khi từ chối các giao dịch hợp lệ Giảm thiểu chi phí: ngăn chặn các khoản bồi hoàn
(chargeback) dựa trên gian lận và ngừng lãng phí thời gian và tài nguyên cho việc khắc phục nó Giải quyết vấn đề về card – not – present (CNP) transaction
Với trách nhiệm gian lận bằng không đối với các giao dịch CNP được chấp nhận, quyết định và bảo vệ theo thời gian thực và không có khoản bồi hoàn hoặc phí bồi hoàn, các nhà quản lý có thể tập trung vào vấn đề quan trọng nhất đó là điều hành doanh nghiệp của mình
Chính vì rất nhiều vấn đề cần giải quyết ở trên, các doanh nghiệp hoạt động về thương mại điện tử mới đặt ra yêu cầu về một hệ thống có khả năng phân tích lượng dữ liệu lớn đến từ thế giới thực nhằm xác định các hành vi của nhóm khách hàng có khả năng gian lận cao để có những biện pháp thắt chặt bảo mật cũng như điều chỉnh lại hệ thống giao dịch để giảm thiểu rủi ro đến từ các gian lận, cũng như ngăn chặn các khoản bồi hoàn (chargeback) do CNP và ngừng lãng phí thời gian
và tài nguyên cho việc khắc phục nó
Trang 5Chương 2: Giải pháp
Trong chương này, em sẽ trình bày giải pháp cho bài toán dự báo xác suất gian lận đến từ các giao dịch của khách hàng bằng việc sử dụng các thuật toán Machine Learing (LightGBM, XGBoost, CatBoost, ), trong đó LightGBM đạt kết quả tốt nhất và sẽ được trình bày ở đây
2.1 Tổng quan về dữ liệu sử dụng
Dữ liệu đến từ các giao dịch thương mại điện tử trong thế giới thực của Vesta Corporation (công ty về dịch vụ thanh toán hàng đầu trên thế giới) và chứa một loạt thông tin từ loại thiết bị thực hiện giao dịch đến thông tin về các sản phẩm
Bộ dữ liệu bao gồm dữ liệu về giao dịch ̣(Transaction Data) và dữ liệu về danh tính (Identity Data)
• Train Transaction Shape: (590540, 394)
• Train Identity Shape: (144233, 41)
• Test Transaction Shape: (506691, 393)
• Test Identity Shape: (141907, 41)
2.1.1 Transaction Data
• Có chứa số tiền giao dịch (USD), mua hàng và dịch vụ tặng quà khác, ví dụ như bạn đã đặt vé cho người khác,
• TransactionDT: Timedelta từ một mốc thời gian tham chiếu nhất định
(không phải là dấu thời gian thực tế)
• TransactionAmt: số tiền thanh toán các giao dịch bằng USD Một số số tiền giao dịch có ba chữ số sau dấu thập phân Dường như có một liên kết đến ba
vị trí thập phân và một trường addr1 và addr2 trống Có thể đây là những
Trang 6giao dịch nước ngoài Ví dụ, 75.887 ở hàng 12 là kết quả của việc nhân một lượng ngoại tệ với tỷ giá hối đoái (exchange rate)
• Address Feature: (addr1 & addr2): Cả hai địa chỉ đều dành cho người mua (trong đó addr1: dưới dạng vùng thanh toán; addr2: quốc gia thanh toán)
• Distance Feature: (dist1 & dist2): "khoảng cách” giữa (không giới hạn) địa chỉ thanh toán, địa chỉ gửi thư, mã zip, địa chỉ IP, khu vực điện thoại,
• ProductCD: Mã sản phẩm (sản phẩm cho mỗi giao dịch).Sản phẩm không cần thiết phải là một 'sản phẩm' thực sự (giống như một mặt hàng được thêm vào giỏ hàng) Nó có thể là bất kỳ loại dịch vụ nào
• Card Feature: (card1 - card6): thông tin thẻ thanh toán, chẳng hạn như: loại thẻ, ngân hàng phát hành, quốc gia,
• P_ and (R ) emaildomain: tên miền email người mua/giao dịch và người nhận Các giao dịch nhất định không cần người nhận thì R_emaildomain là null
• C1 – C14: đếm (counting), chẳng hạn như có bao nhiêu địa chỉ được tìm thấy có liên quan đến thẻ thanh toán, Ý nghĩa thực tế được che dấu
• D1 – D15: Timedelta, chẳng hạn như ngày giữa các giao dịch trước đó,
• M1 – M9: trùng khớp (True/False), chẳng hạn như tên trên thẻ và địa chỉ,
• Vxxx: Vesta thiết kế các tính năng phong phú, bao gồm xếp hạng, đếm và các mối quan hệ thực thể khác Ví dụ, có bao nhiêu lần thẻ thanh toán được liên kết với IP và email hoặc địa chỉ xuất hiện trong khoảng thời gian 24 giờ,
• Tất cả các tính năng Vesta có nguồn gốc là số Một số trong số chúng là số lượng đơn đặt hàng trong một cụm, khoảng thời gian hoặc điều kiện, vì vậy giá trị là hữu hạn và có thứ tự (hoặc xếp hạng)
• Categorical Features: ProductCD ; card1 - card6; addr1, addr2;
Trang 7• Chúng được thu thập bởi hệ thống chống gian lận và các đối tác bảo mật kỹ thuật số của Vesta
• id_01 – id_11 là các tính năng số để nhận dạng, được thu thập bởi Vesta và các đối tác bảo mật như xếp hạng thiết bị (Device), xếp hạng IP_Domain, xếp hạng Proxy,
• Tên trường được che dấu và không được cung cấp để bảo vệ quyền riêng tư
và thỏa thuận hợp đồng Ngoài ra, còn có thông tin ghi dấu vân tay hành vi như thời gian đăng nhập tài khoản / không đăng nhập được trong bao
lâu, Tất cả những điều này không thể giải thích do đối tác bảo mật T & C
• Categorical Featutes: Device_Type; Device_Info; id_12 - id_38
2.1.3 Labeling logic (Cách gán nhãn thế nào là gian lận - fraud)
Logic ghi nhãn của Vesta được xác định khoản bồi hoàn được báo cáo trên thẻ là giao dịch gian lận (isFraud = 1) và giao dịch sau với tài khoản người dùng, địa chỉ email hoặc địa chỉ thanh toán được liên kết trực tiếp với các thuộc tính này là lừa đảo Ở trên được báo cáo và tìm thấy sau 120 ngày, sau đó Vesta xác định là giao dịch hợp pháp (isFraud = 0) Tuy nhiên, trong hoạt động gian lận trong thế giới thực có thể không được báo cáo, ví dụ: chủ thẻ không biết hoặc quên báo cáo kịp thời và vượt quá thời gian yêu cầu, v.v Trong những trường hợp như vậy, gian lận được cho là có thể được dán nhãn là hợp pháp, nhưng chúng tôi (Vesta) không bao giờ có thể biết về chúng Vì vậy, họ nghĩ rằng chúng là những trường hợp bất thường và phần không đáng kể
Đó là một tình huống phức tạp - thông thường chúng sẽ bị gắn cờ là lừa đảo (gian lận) Nhưng không phải lúc nào bạn cũng có thể nghĩ đến một trường hợp - địa chỉ thanh toán bị phát hiện là gian lận trong giao dịch trước đây vì Thẻ tín dụng liên quan đến nó đã bị đánh cắp Nhưng chủ thẻ thực sự là nạn nhân, họ sẽ không đưa vào danh sách đen anh ta mãi mãi nếu anh ta sử dụng một thẻ hợp pháp khác cho giao dịch trong tương lai Có nhiều trường hợp khác nhưng không thể giải thích tất
cả ở đây
2.2 Thuật toán
Chương trình sử dụng thuật toán LightGBM (Light Gradient Boosting Model) Trước tiên, ta sẽ trình bày về Gradient Boosting Model:
Trang 8Hình 1: Ensemble Learning (Boosting & Bagging) Gradient Boosting là một thuật toán học kết hợp (ensemble learning) được sử dụng trong các bài toán về hồi quy và phân lớp, bằng cách tạo ra và kết hợp các mô hình
dự đoán yếu (weak learner), các mô hình sau được xây dựng dựa trên sai số của các mô hình trước đó, sau cùng ta được một mô hình cuối cùng có độ chính xác cao
Hình 2: Minh họa về Boosting Model
Trang 9Hình 3: So sánh giữa Bagging & Boosting Thuật toán tổng quát đối với nhóm các mô hình học yếu dựa trên cây (tree weak model), ở đây ta xét với bài toán hồi quy (regression):
Hình 4: General algorithm with regression tree weak models
Cách thức Gradient Boosting Model hoạt động: các cây được tạo (trồng) tuần tự và
phụ thuộc lẫn nhau (sequentially and dependently), các cây sau được đào tạo dựa
Trang 10trên những thông tin từ những cây trước đó và không liên quan đến việc lấy mẫu
có hoàn lại (boostrap) giống như bagging (random forest)
Boosting có 3 tham số điều chỉnh (tuning parameters):
• Số lượng cây B, không giống như bagging (random forest), boosting có thể gặp phải hiện tượng overfiting nếu như B là quá lớn (mặc dù việc xảy ra overfiting có xu hướng xảy ra khá chậm, nếu có) Chúng ta xử dụng cross – validation để lựa chọn B
• Tham số co ngót (shrinkage parameter ) lambda, là một số dương có giá trị nhỏ (0.001, 0.01, 0.05, 0.1, ) Giá trị lambda càng nhỏ thì để đạt được hiệu suất (performance) tốt, mô hình cần giá trị B càng lớn
• Giá trị phân tách d của mỗi cây (splits in each tree): điều khiển sự phức tạp của việc kết hợp tăng cường (boosted ensemble)
Hình 5: Gradient Boosting Algorithm Tiếp theo, ta sẽ trình bày về LightGBM
• LightGBM là một thuật toán Gradient Boosting, thuộc họ các thuật toán học tập dựa trên cây (tree based learning algorithms) như XGBoost, CatBoost, Các ưu điểm của LightGBM so với các thuật toán Gradient Boosting khác:
• Tốc độ đào tạo nhanh hơn và hiệu quả cao hơn
• Sử dụng bộ nhớ thấp hơn
Trang 11xu hướng giảm thiểu hàm mất mát tốt nhất)
Trang 12Hình 7: LightGBM grows trees leaf-wise (best – first)
2.3 Cross – Validation
Hình 8: Cross Validation
Sử dụng KFold Cross – Validation (k = 5), tức là ta chia tập training ra thành 5 tập con (không có phần tử chung) và có kích thước gần bằng nhau Tại mỗi lần kiểm
thử, được gọi là run, một trong số 5 tập con này được lấy ra và làm validation
dataset Mô hình sẽ được xây dựng (training) dựa vào hợp của 4 tập con còn lại
Mô hình cuối được xác định dựa trên trung bình của các train error và validation error
Trang 13Hình 9: KFold Cross – Validation (k = 5)
2.4 Kết quả của mô hình
Dựa trên ROC curve, ta có thể chỉ ra rằng một mô hình có hiệu quả hay không Một mô hình hiệu quả khi có FPR (False Positive Rate) thấp và TPR (True Positive Rate) cao, tức tồn tại một điểm trên ROC curve gần với điểm có toạ độ (0, 1) trên
đồ thị (góc trên bên trái) Curve càng gần thì mô hình càng hiệu quả
Có một thông số nữa dùng để đánh giá mà tôi đã sử dụng ở trên được gọi là Area Under the Curve hay AUC Đại lượng này chính là diện tích nằm dưới ROC curve
màu cam Giá trị này là một số dương nhỏ hơn hoặc bằng 1 Giá trị này càng lớn thì mô hình càng tốt
Mô hình LightGBM đạt được auc – score là 0.9557 sau công việc cross –
validation, và đạt được auc – score là 0.93737 trên tập test (kết quả khá tốt)
Trang 14Hình 10: LightGBM roc curve by Fold Tham số sử dụng cho mô hình sử dụng Bayesian Optimization để tìm kiếm bộ tham số tốt nhất:
Trang 15Chương 3: Phân tích và thiết kế hệ thống
3.1 Tổng quan về hệ thống
Hình 11: Tổng quan về hệ thống
3.2 Biểu đồ phân cấp chức năng
Hình 12: Biểu đồ phân cấp chức năng
Trang 16Mô tả chi tiết chức năng:
Quản trị hệ thống: nhà quản lý sẽ được cấp tài khoản để đăng nhập vào hệ thống Nhà quản lý sẽ nhập tên đăng nhập và mật khẩu trên giao diện để đối chiếu với dữ liệu có trong cơ sở dữ liệu
Cập nhật dữ liệu: cập nhật dữ liệu của những khách hàng mới (chưa có thông tin trong kho dữ liệu), cập nhật những thay đổi đến từ dữ liệu của những khách hàng
đã có trong kho dữ liệu
Cập nhật số liệu thống kê: đưa ra những thống kê cơ bản về dữ liệu của khách hàng hiện tại trong hệ thống (sau lần cập nhật mới nhất)
Xử lý dữ liệu: nhà quản lý đưa ra ID của khách hàng muốn kiểm tra xác suất gian lận của khách hàng đó, xem thống kê về số lượng khách hàng có khả năng gian lận cao nhất cũng như xem các biểu đồ thống kê phân tích hành vi của nhóm người đó
để qua đó ra quyết định về việc thắt chặt hơn việc bảo mật dựa trên giao dịch qua internet (các thiết bị, brower_ID, OS_ID)
Kiểm nghiệm mô hình: Khi dữ liệu mới được cập nhật vào kho dữ liệu thì mô hình
sẽ được tối ưu hóa lại sao cho đạt kết quả tốt nhất
3.3 Biểu đồ mức ngữ cảnh
Hình 13: Biểu đồ mức ngữ cảnh
3.4 Biểu đồ luồng dữ liệu mức đỉnh
Trang 17Hình 14: Biểu đồ luồng dữ liệu mức đỉnh
lý học của trung tâm nghiên cứu CERN ở Thụy Sĩ Hiện nay, HTML đã trở thành một chuẩn Internet được tổ chức W3C (World Wide Web Consortium) vận hành
và phát triển
b) CSS
CSS là chữ viết tắt của Cascading Style Sheets, là một ngôn ngữ được sử dụng để tìm và định dạng lại các phần tử được tạo ra bởi các ngôn ngữ đánh dấu (ví dụ như HTML) CSS thường sử dụng cùng với HTML và JavaScript trong hầu hết các trang web để tạo giao diện người dùng cho các ứng dụng web và giao diện người dùng cho nhiều ứng dụng di động
Trang 18c) Bootstrap
Bootstrap là một framework cho phép thiết kế website reponsive nhanh hơn và dễ dàng hơn Bootstrap bao gồm các HTML templates, CSS templates và Javascript tao ra những cái cơ bản có sẵn như: typography, forms, buttons, tables, navigation, modals, image carousels và nhiều thứ khác Trong bootstrap có thêm các plugin Javascript trong nó Giúp cho việc thiết kế reponsive của bạn dễ dàng hơn và
nhanh chóng hơn
3.5.2 Back-end
Back-end của hệ thống được lập trình bằng ngôn ngữ Python sử dụng framework Flask
Python là ngôn ngữ lập trình hướng đối tương bậc cao, dùng để phát triển website
và nhiều ứng dụng khác nhau Python được phát triển bởi Guido van Rossum trong một dữ án mã nguồn mở
Flask là một web frameworks, nó thuộc loại micro-framework được xây dựng bằng ngôn ngữ lập trình Python Flask cho phép bạn xây dựng các ứng dụng web từ đơn giản tới phức tạp Nó có thể xây dựng các api nhỏ, ứng dụng web chẳng hạn như các trang web, blog, trang wiki hoặc một website dựa theo thời gian hay thậm chí
là một trang web thương mại Flask cung cấp cho bạn công cụ, các thư viện và các công nghệ hỗ trợ bạn làm những công việc trên Flask là một micro-framework Điều này có nghĩa Flask là một môi trường độc lập, ít sử dụng các thư viện khác bên ngoài Do vậy, Flask có ưu điểm là nhẹ, có rất ít lỗi do ít bị phụ thuộc cũng như dễ dàng phát hiện và xử lý các lỗi bảo mật
3.6 Giao diện hệ thống