BÁO CÁO BÀI TẬP LỚN HỌC PHẦN NHẬP MÔN LÝ THUYẾT NHẬN DẠNG:PHÁT HIỆN THẺ GIẢ MẠO BẰNG SUPPORT VECTOR MACHINE (SVM) Ưu ngược điểm thuật toán(Từ A đến Z lý thuyết+ đính kèm link Code Python và Giải thích CODE chi tiết)
BỘ CÔNG NGHIỆP TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN ======***====== BÁO CÁO BÀI TẬP LỚN HỌC PHẦN NHẬP MÔN LÝ THUYẾT NHẬN DẠNG PHÁT HIỆN THẺ GIẢ MẠO BẰNG SUPPORT VECTOR MACHINE Giáo viên: TS Trần Hùng Cường Lớp: 20211IT6043003 Sinh viên: Doãn Thị Lan Anh – 2019600624 Hoàng Văn Thắng – 2019600645 Phạm Bảo Trung – 2019601001 Đồng Văn Thượng – 2019602408 Hà Nội - 2022 MỤC LỤC Lời mở đầu Lời giới thiệu Chương Tổng quan nhận dạng Khái niệm nhận dạng Vai trò nhận dạng .5 Một số ứng dụng nhận dạng thực tiễn Tổng kết chương Chương Thuật toán Support Vector Machine Giới thiệu toán 1.1 Tổng quan SVM .9 1.2 Lịch sử 11 1.3 Cách hoạt động 11 1.4 Nhận xét 13 Mẫu liệu sử dụng 14 Ngôn ngữ sử dụng 15 Chương Ứng dụng SVM toán nhận biết thẻ giả mạo Bài toán 16 Xây dựng chương trình 16 Tổng kết Tài liệu tham khảo Lời mở đầu Lời cho phép chúng em gửi lời cảm ơn sâu sắc tới thầy cô khoa Công nghệ thông tin - Trường Đại học Công Nghiệp Hà Nội, người truyền đạt dẫn cho chúng em kiến thức, học quý báu bổ ích Đặc biệt chúng em xin bày tỏ tri ân xin chân thành cảm ơn giảng viên Trần Hùng Cường người trực tiếp hướng dẫn, bảo chúng em suốt trình học tập, nghiên cứu hoàn thành tập lớn Sau nữa, chúng em xin gửi tình cảm sâu sắc tới gia đình bạn bè ln bên cạnh khuyến khích, động viên, giúp đỡ vật chất linh tinh thần cho chúng em suốt quy trình học tập để chúng em hồn thành tốt việc học tập thân Trong trình nghiên cứu làm đề tài, lực, kiến thức, trình độ thân chúng em cịn hạn hẹp nên khơng tránh khỏi thiếu sót chúng em mong mỏi nhận thơng cảm góp ý từ quý thầy cô bạn lớp Chúng em xin chân thành cảm ơn! Lời giới thiệu Ở nước phát triển, việc ứng dụng hệ thống AI nhận dạng chất lượng sản phẩm vào quy trình sản xuất giúp kiểm tra chất lượng sản phẩm, phát lỗi sai sót đồng thời tạo sản phẩm chất lượng cần thiết quan trọng Trí tuệ nhân tạo (AI) cịn đem lại suất làm việc cao so với lao động bình thường, lý mà nhiều doanh nghiệp sản xuất lớn giới ứng dụng AI để giảm thiểu nguồn lực, giảm thiểu tiêu thụ ngun vật liệu khơng cần thiết, tiết kiệm chi phí nâng cao hiệu suất, từ nâng cao lợi nhuận cho doanh nghiệp Hiện tại, có hình thức nhận dạng khác như: nhận dạng chữ viết, dấu vân tay, khn mặt, … tốn nhận biết thẻ giả mạo nhóm chúng em quan tâm ý Các thuật toán nhận dạng xử lý ngày sử dụng rộng rãi Vì vậy, nhóm chúng em định làm ĐACN thực “ Phát thẻ giả mạo support vector machine” Nội dung đề tài “Phát thẻ giả mạo support vector machine” gồm chương: Chương Tổng quan nhận dạng Trong chương chúng em trình bày sơ lược nhận dạng cách nhìn nhận thân Chương Thuật toán Support Vector Machine Chúng em đưa khái niệm công thức liên quan đến thuật tốn SVM kèm theo liệu, ngôn ngữ lý sử dụng Chương Ứng dụng SVM toán nhận biết thẻ giả mạo Trong chương chúng em tiến hành xây dựng mơ hình để phát thẻ gian lận trình bày hiệu suất thuật toán Chương Tổng quan nhận dạng Khái niệm nhận dạng Nhận dạng đối tượng trình phân loại đối tượng biểu diễn theo mơ hình gán chúng vào lớp dựa theo qui luật mẫu chuẩn Là phương tiện để xây dựng hệ thống tin học có khả “cảm nhận – nhận thức – nhận biết” đối tượng vật lý gần giống khả người Trong đó: - Cảm nhận: cảm nhận tồn đối tượng quan sát hay đối tượng mà hệ thống cần nhận dạng (thu nhận số liệu qua cảm biến hệ thống nhận dạng …) - Nhận thức: biểu diễn q trình học, mơ hình hóa đối tượng để tiến tới hình thành phân lớp (classification) - Nhận biết: Từ đối tượng quan sát trả lời nhận biết đối tượng gì, thuộc vào lớp lớp biết Đây q trình đưa định Hình 1.1 Hình ảnh minh họa nhận dạng Để nhận dạng đối tượng, cần mơ hình hóa tốn nhận dạng: Đầu vào: X = {x} tập biểu dễn đối tượng quan sát Ω={c k } Quá trình nhận dạng thực chất tìm luật ε ánh xạ từ không biểu diễn X sang không gian miễn dịch Ω ε : X -> Ω cho xj ∈ ck Quá trình nhận dạng trải qua hai giai đoạn: - Giai đoạn học (training): Tìm luật e Học có giám sát (supervised learning): q trình học bắt đầu tự biết thông tin phân lớp tập để học Học khơng có giám sát (unsupervised learning): thông tin phân lớp - Giai đoạn định (test): Dựa sở trình học thực định phân lớp theo luật e Mơ hình hóa toán nhận dạng, cần hiểu rõ vấn đề trình nhận dạng: - Quá trình học: Tập học T= {x} qua trình học rút lớp T (đặc trưng phân biệt lớp) Hàm định (decision function): phân biệt lớp không gian đối tượng x - Ra định nhận dạng (thực phân lớp): X thuộc ck fk(x) > fj(x) với j khác k Fk(x): khoảng cách Fk(x): xác suất - Tỷ số nhận dạng: T = số đối tượng nhận dạng đúng/ tổng số đối tượng quan sát T > 95% Sơ đồ khố tổng quá trình nhận dạng: Vai trị nhận dạng Khơng thể phủ nhận vai trò nhận dạng thực tiễn ngày nay, mang lại nhiều lợi ích cho sống ngày nghiên cứu khoa học Sự đời phát triển của nhận dạng tạo bước nhảy vọt chất kỹ thuật kỹ nghệ xử lý thơng tin Trí ṭ nhân tạo chính là tảng nhận dạng, giúp nhận dạng phát triển ngày Điều này thể hiện qua mặt sau: - Các robot phát triển vượt bậc với nhận dạng Nó nhận dạng khn mặt người, cảm xúc mối nguy hiểm xảy cho người tương lai Chính mà sau nhận dạng đóng vai trị quan trọng robot nhận dạng chìa khóa để robot đưa định Nếu trình nhận dạng sai dẫn đến kết sai lầm - Con người ngày sử dụng rỗng rãi ứng dụng liên quan đến nhận dạng bảo mật khn mặt, võng mạc hay vân tay… Đó ứng dụng nhận dạng Chính tương lai khơng xa mà trí tuệ nhân tạo dẫn đầu công nghệ xu hướng giới nhận dạng đóng vai trị quan trọng cơng cách mạng Hình 1.2 Vai trị nhận dạng thực tiễn Một số ứng dụng nhận dạng thực tiễn Nhận dạng có nhiều ứng dụng thực tiễn, ứng dũng nhiều lĩnh vực từ nhiều năm Trong có hai ứng dụng phổ biến nhận dạng ứng dụng đời sống ngày: - Nhận dạng khn mặt: Nói cách dễ hiểu, công nghệ AI nhận dạng khuôn mặt công nghệ cho phép nhận dạng người cụ thể từ ảnh đoạn video Cách thức làm việc cơng nghệ so sánh hình ảnh khn mặt với hình ảnh sẵn có sở liệu để đưa kết Hệ thống thường sử dụng hệ thống an ninh so sánh với dạng sinh trắc học khác hệ thống nhận dạng vân tay hay trịng mắt Một cơng ty Nhật Bản phát triển thành cơng phần mềm trí tuệ nhân tạo có khả phân tích hình ảnh camera giám sát để phát hành vi đáng ngờ nhằm cảnh báo ngăn nạn trộm cắp cửa hàng tiện lợi trước hành vi thực xảy ra: Hình 1.3 Hình ảnh minh họa nhận diện khn mặt - Nhận dạng giọng nói: Nhận dạng giọng nói cơng nghệ có khả nhận dạng dịch lệnh thu từ giọng nói người Cơng nghệ nhận dạng giọng nói bao gồm thuật ngữ: Voice recognition Speech recognition Speech recognition việc xác định từ ngữ câu nói dịch chúng sang ngơn ngữ máy tính Voice recognition liên quan đến việc xác định giọng nói xác cá nhân đó, tương tự phương pháp nhận diện sinh trắc học Hình 1.4 Hình ảnh minh họa nhận dạng giọng nói Tổng kết chương Qua chương 1, có nhìn tổng quan nhận dạng vai trò nhận dạng thực tiễn Nhận dạng giúp ích cho nhiều sống với phát triển AI Bên cạnh đó, nhận dạng AI phát triển đặt nhiều vấn đề đáng lo ngại cho xã hội người, khơng thể phủ nhận mặt tích cực mà chúng mang lại liệu chống lại robot hay người máy chúng chống lại người tương lai? Mục đích chúng em chương nêu quan điểm kía cạnh Nhận dạng AI để có nhìn tổng quan cách sử dụng đắn thuật toán phân loại nhị phân Với ví dụ luyện tập thuộc hai thể loại cho trước, thuật toán luyện tập SVM xây dựng mơ hình SVM để phân loại ví dụ khác vào hai thể loại Một mơ hình SVM cách biểu diễn điểm không gian lựa chọn ranh giới hai thể loại cho khoảng cách từ ví dụ luyện tập tới ranh giới xa Các ví dụ biểu diễn khơng gian thuật tốn dự đốn thuộc hai thể loại tùy vào ví dụ nằm phía ranh giới Một máy vectơ hỗ trợ xây dựng siêu phẳng tập hợp siêu phẳng không gian nhiều chiều vơ hạn chiều, sử dụng cho phân loại, hồi quy, nhiệm vụ khác Một cách trực giác, để phân loại tốt siêu phẳng nằm xa điểm liệu tất lớp (gọi hàm lề) tốt, nói chung lề lớn sai số tổng qt hóa thuật tốn phân loại bé Trong nhiều trường hợp, phân chia lớp liệu cách tuyến tính không gian ban đầu dùng để mô tả vấn đề Vì vậy, nhiều cần phải ánh xạ điểm liệu không gian ban đầu vào không gian nhiều chiều hơn, để việc phân tách chúng trở nên dễ dàng không gian Để việc tính tốn hiệu quả, ánh xạ sử dụng thuật tốn SVM địi hỏi tích vô hướng vectơ liệu không gian tính dễ dàng từ tọa độ khơng gian cũ Tích vơ hướng xác định hàm hạt nhân K(x,y) phù hợp.[1] Một siêu phẳng không gian định nghĩa tập hợp điểm có tích vơ hướng với vectơ cố định khơng gian số Vectơ xác định siêu phẳng sử dụng SVM tổ hợp tuyến tính vectơ liệu luyện tập không gian với hệ số αi Với siêu phẳng lựa chọn trên, điểm x không gian đặc trưng ánh xạ vào siêu mặt phẳng điểm thỏa mãn: Σi, αi, K(xi,x) = số Ghi K(x,y) nhận giá trị ngày nhỏ y xa dần khỏi x số hạng tổng dùng để đo độ tương tự x với điểm xi tương ứng liệu luyện tập Như vậy, tác dụng tổng so sánh khoảng 10 cách điểm cần dự đoán với điểm liệu biết Lưu ý tập hợp điểm x ánh xạ vào siêu phẳng có độ phức tạp tùy ý khơng gian ban đầu, nên phân tách tập hợp chí khơng lồi khơng gian ban đầu Hình 2.1 Phân lại thống kê học máy 1.2 Lịch sử Thuật toán SVM ban đầu tìm Vladimir N Vapnik dạng chuẩn sử dụng lề mềm tìm Vapnik Corinna Cortes năm 1995 1.3 Cách hoạt động Chúng ta quay lại với toán Perceptron Learning Algorithm (PLA) Giả sử có hai class khác mô tả điểm không gian nhiều chiều, hai classes linearly separable, tức tồn siêu phẳng phân chia xác hai classes Hãy tìm siêu mặt phẳng phân chia hai classes đó, tức tất điểm thuộc class nằm phía siêu mặt phẳng ngược phía với tồn điểm thuộc class cịn lại Chúng ta biết rằng, thuật tốn PLA làm việc cho vơ số nghiệm Hình 2.7 đây: 11 Hinh ̀ 2.2 Các mặt phân cách lớp Câu hỏi đặt là: vô số mặt phân chia đó, đâu mặt phân chia tốt theo tiêu chuẩn đó? Trong ba đường thẳng minh họa Hình phía trên, có hai đường thẳng lệch phía class hình trịn đỏ Điều khiến cho lớp màu đỏ khơng vui lãnh thổ xem bị lấn nhiều Liệu có cách để tìm đường phân chia mà hai classes cảm thấy công hạnh phúc hay khơng? Chúng ta cần tìm tiêu chuẩn để đo hạnh phúc class Hãy xem Hình 2.8 đây: Hinh ̀ 2.3 Margin hai classes lớn Nếu ta định nghĩa mức độ hạnh phúc class tỉ lệ thuận với khoảng cách gần từ điểm class tới đường/mặt phân chia, Hình trái, class trịn đỏ khơng hạnh phúc cho đường phân chia gần class vuông xanh nhiều Chúng ta cần đường phân chia cho khoảng cách từ điểm gần class (các điểm khoanh tròn) tới đường phân chia 12 nhau, công Khoảng cách gọi margin (lề) Chúng ta xét tiếp Hình bên phải khoảng cách từ đường phân chia tới điểm gần class Xét hai cách phân chia đường nét liền màu đen đường nét đứt màu lục, đường làm cho hai class hạnh phúc hơn? Rõ ràng phải đường nét liền màu đen tạo margin rộng Việc margin rộng mang lại hiệu ứng phân lớp tốt phân chia hai classes rạch ròi Việc này, sau bạn thấy, điểm quan trọng giúp Support Vector Machine mang lại kết phân loại tốt so với Neural Network với layer, tức Perceptron Learning Algorithm Bài toán tối ưu Support Vector Machine (SVM) tốn tìm đường phân chia cho margin lớn Đây lý SVM cịn gọi Maximum Margin Classifier 1.4 Nhận xét Ưu điểm: Có thể mơ hình non-linear decision boundaries cách sử dụng nhiều kernels khác Ít bị overfitting đặc biệt không gian high-dimensional Nhược điểm: sử dụng nhiều RAM tricker tuning phải lựa chọn kernel phù hợp cho mơ hình khó scale tập liệu lớn 13 Mẫu liệu sử dụng Tập liệu chứa giao dịch thực thẻ tín dụng vào tháng năm 2013 chủ thẻ châu Âu Tập liệu trình bày giao dịch xảy hai ngày, nơi chúng tơi có 492 gian lận số 284.807 giao dịch Tập liệu cân bằng, loại tích cực (gian lận) chiếm 0,172% tổng số giao dịch Nó chứa biến đầu vào số kết phép biến đổi PCA Rất tiếc, vấn đề bảo mật, khơng thể cung cấp tính gốc thêm thơng tin liệu Các tính V1, V2,… V28 thành phần có với PCA, tính khơng chuyển đổi với PCA 'Thời gian' 'Số lượng' Tính 'Thời gian' chứa số giây trôi qua giao dịch giao dịch tập liệu Tính 'Số tiền' Số tiền giao dịch, tính sử dụng cho việc học tập nhạy cảm với chi phí phụ thuộc vào ví dụ Tính 'Lớp' biến phản hồi nhận giá trị trường hợp gian lận khơng Hình 2.4 Mẫu liệu sử dụng 14 Ngôn ngữ sử dụng Điều bạn nên ghi nhớ dự án AI khác với dự án phần mềm truyền thống Sự khác biệt nằm ở Tech Stack, kỹ cần thiết cho dự án AI cần thiết nghiên cứu chun sâu khơng phải có đủ thời gian thể nắm giữ tất Tech Stack được định nghĩa tập hợp công nghệ mà tổ chức sử dụng để xây dựng ứng dụng web thiết bị di động Nó kết hợp ngơn ngữ lập trình, Do đó, để thực tham vọng với dự án AI, bạn nên sử dụng ngơn ngữ lập trình ổn định, linh hoạt và có sẵn cơng cụ / thư viện hỗ trợ May mắn Python cung cấp tất thứ này, lý ngày thấy RẤT NHIỀU dự án AI làm Python Từ giai đoạn phát triển đến triển khai bảo trì, Python giúp lập trình viên làm việc hiệu tự tin phần mềm mà họ làm Bởi phần mềm họ làm có đóng góp hàng trăm não thiên tài (thơng qua cơng cụ, thư viện, framework họ sử dụng) Những lý do giúp Python được sử dụng phổ biến nhất trong dự án Học máy và dự án AI bao gồm: Tính đơn giản quán Cho phép truy cập vào thư viện framework tuyệt vời cho AI học máy (ML) Tính linh hoạt Độc lập tảng Và cộng đồng rộng lớn Chính vậy, chúng em định sử dụng Python để xây dựng chương trình giải vấn đề 15 Chương Ứng dụng SVM toán nhận biết thẻ giả mạo Bài toán Các giao dịch gian lận thẻ tín dụng diễn phổ biến gây cân tài cho ngân hàng nhà nước Tuy nhiên thơng tin tài khoản thẻ tín dụng phải bảo mật nên xử lí liệu dạng mã hóa Cần xây dựng chương trình xử lí liệu mã hóa nhận biết giao dịch gian lận để xử phạt tránh gây tổn hại tài ngân hàng nhà nước Xây dựng chương trình - Thêm thư viện cần thiết: import numpy as np # linear algebra import pandas as pd # import thư viện pandas để đọc file cơ sở dữ liệ u import matplotlib.pyplot as plt from sklearn import svm from sklearn.svm import SVC #thuat toan svm from sklearn.metrics import classification_report # Báo cáo phân loại từ thuật tốn SVM from sklearn.metrics import confusion_matrix # ma trận báo cáo thực t ế và dự kiến from sklearn.metrics import f1_score # trung bình của recall_score va precision from sklearn.metrics import accuracy_score # tỉ lệ dữ liệu dự đốn đú ng trong tổng dữ liệu kiểm thử from sklearn.metrics import recall_score # tỉ lệ dự đốn mơ hình đúng đúng trển tổng sổ mơ hình thực sự đúng from sklearn.metrics import precision_score, precision_recall_curve # tỉ lệ dự đốn mơ hình đúng trển tổng sổ mơ hình dự đốn/ tỉ lệ mơ h ình duong thực trên mơ hình dự đốn dương # auc: tính diện tích dưới đường cong ROC # average_precision_score: độ chính xác của dự đốn from sklearn.metrics import roc_auc_score, roc_curve, auc, average_pr ecision_score # độ chính xác của dự đốn # StandardScaler: biến đổi dữ liệu của bạn sao cho phân phối của nó s ẽ có giá trị trung bình là 0 và độ lệch chuẩn là 1 from sklearn.preprocessing import StandardScaler # Dùng để chia mảng hoặc ma trận thành các tập con thử nghiệm và huấn luyện ngẫu nhiên from sklearn.model_selection import train_test_split 16 # Dùng để vẽ đồ thị from mlxtend.plotting import plot_confusion_matrix # Link drive from collections import Counter from google.colab import drive drive.mount('/gdrive') # import modules để thao tác với tệp import os - Tiến hành đọc liệu hiển thị bảng liệu: - data = pd.read_csv("/gdrive/My Drive/Nhan_dang/creditcard.csv") # t iến hành đọc file cơ sở dữ liệu - #Hiển thị sự không cân bằng của dữ liệu bằng biểu đồ thanh count = pd.value_counts(data['Class'], sort = True).sort_index() count.plot(kind = 'bar') plt.title('Unbalance Data') plt.xlabel('Class') plt.ylabel('Frequency') plt.show() #Hiển thị sự khơng cân bằng của dữ liệu bằng biểu đồ trịn count = pd.value_counts(data['Class'], sort = True).sort_index() count.plot(kind = 'pie') plt.title('Unbalance Data') plt.show() Dạng cột: Hình 3.1 Biểu đồ dạng cột liệu Dạng trịn: 17 Hình 3.2 Biểu đồ dạng tròn liệu - Thống kê liệu: - - No_of_frauds= len(data[data["Class"]==1]) No_of_normals = len(data[data["Class"]==0]) total= No_of_frauds + No_of_normals Fraud_percent= (No_of_frauds / total)*100 Normal_percent= (No_of_normals / total)*100 print("The number of normal transactions(Class 0) are: ", No_of_nor mals) print("The number of fraudulent transactions(Class 1) are: ", No_of _frauds) print("Class 0 percentage = ", Normal_percent) print("Class 1 percentage = ", Fraud_percent) #Lấy mẫu tập dữ liệu dat a['normAmount']=StandardScaler().fit_transform(data['Amount'].value s.reshape(-1,1)) X=data.drop(['Time','Amount'],axis=1) y=data['Class'] # chia dữ liệu trước khi chuẩn hóa X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.25, random_state = 12) print("X_train.shape: ", X_train.shape) print("X_test.shape: ", X_test.shape) print("y_train.shape: ", y_train.shape) print("y_test.shape: ", y_test.shape) 18