Tải bản đầy đủ (.docx) (26 trang)

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)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (727.32 KB, 26 trang )

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 1. Tổng quan về nhận dạng...........................................................................
1. Khái niệm nhận dạng........................................................................................3
2. Vai trò của nhận dạng.......................................................................................5
3. Một số ứng dụng của nhận dạng trong thực tiễn............................................6
4. Tổng kết về chương 1........................................................................................8
Chương 2. Thuật toán Support Vector Machine........................................................
1. Giới thiệu bài toán.............................................................................................9
1.1. Tổng quan về SVM.......................................................................................9
1.2. Lịch sử........................................................................................................11
1.3. Cách hoạt động...........................................................................................11
1.4. Nhận xét......................................................................................................13
2. Mẫu dữ liệu sử dụng........................................................................................14
3. Ngôn ngữ sử dụng............................................................................................15
Chương 3. Ứng dụng SVM trong bài toán nhận biết thẻ giả mạo..........................
1. Bài toán.............................................................................................................16
2. 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 đầu tiên cho phép chúng em gửi lời cảm ơn sâu sắc tới các thầy
cô trong khoa Công nghệ thông tin - Trường Đại học Công Nghiệp Hà
Nội, những người đã hết mình truyền đạt và chỉ dẫn cho chúng em những
kiến thức, những bài học quý báu và bổ ích. Đặc biệt chúng em xin được
bày tỏ sự tri ân và 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, chỉ bảo chúng em trong suốt quá trình học tập,

nghiên cứu và hoàn thành được bài tập lớn này. Sau nữa, chúng em xin gửi
tình cảm sâu sắc tới gia đình và bạn bè vì đã ln bên cạnh khuyến khích,
động viên, giúp đỡ cả về vật chất linh tinh thần cho chúng em trong suốt
quy trình học tập để chúng em hoàn thành tốt việc học tập của bản thân.
Trong quá trình nghiên cứu và làm đề tài, do năng lực, kiến thức,
trình độ bản thân chúng em cịn hạn hẹp nên khơng tránh khỏi những thiếu
sót và chúng em mong mỏi nhận được sự thơng cảm và những góp ý từ
quý thầy cô cũng như các bạn trong lớp.
Chúng em xin chân thành cảm ơn!

1


Lời giới thiệu
Ở các 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 trong quy trình sản xuất giúp kiểm tra chất lượng sản phẩm,
phát hiện lỗi sai sót đồng thời tạo ra những sản phẩm chất lượng nhất là cần
thiết và quan trọng. Trí tuệ nhân tạo (AI) cịn đem lại năng suất làm việc rất
cao so với lao động bình thường, đây là lý do mà nhiều doanh nghiệp sản xuất
lớn trên thế giới đã ứng dụng AI để giảm thiểu nguồn lực, giảm thiểu tiêu thụ
nguyên vật liệu không cần thiết, tiết kiệm chi phí và nâng cao hiệu suất, từ đó
nâng cao lợi nhuận cho doanh nghiệp.
Hiện tại, có cá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, … thì bài tốn nhận biết thẻ giả mạo đang được nhóm
chúng em quan tâm chú ý.
Các thuật toán nhận dạng và xử lý ngày càng được sử dụng rộng rãi. Vì
vậy, nhóm chúng em quyết định làm ĐACN thực hiện “ Phát hiện thẻ giả mạo
bằng support vector machine”.

Nội dung của đề tài “Phát hiện thẻ giả mạo bằng support vector machine” gồm

3 chương:

Chương 1. Tổng quan về nhận dạng. Trong chương này chúng em sẽ trình
bày sơ lược về nhận dạng và cách nhìn nhận của bản thân.
Chương 2. Thuật toán Support Vector Machine. Chúng em đưa ra những khái
niệm và công thức liên quan đến thuật tốn SVM kèm theo đó là bộ dữ liệu, ngôn
ngữ và lý do sử dụng.

Chương 3. Ứng dụng SVM trong bài toán nhận biết thẻ giả mạo. Trong chương
này chúng em tiến hành xây dựng mơ hình để phát hiện thẻ gian lận và trình bày
hiệu suất của thuật toán.

.

2


Chương 1. Tổng quan về nhận dạng
1. Khái niệm nhận dạng
Nhận dạng đối tượng là một quá trình phân loại các đối tượng được biểu diễn
theo một mơ hình nào đó và gán chúng vào một lớp dựa theo các qui luật và mẫu
chuẩn.
Là phương tiện để xây dựng một hệ thống tin học có khả năng “cảm nhận –
nhận thức – nhận biết” các đối tượng vật lý gần giống khả năng của con người.
Trong đó:
-

Cảm nhận: cảm nhận được sự tồn tại của đố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 bộ cảm biến
trong 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 sự phân lớp (classification).

-

Nhận biết: Từ đối tượng quan sát được có thể trả lời nhận biết đối
tượng là gì, thuộc vào lớp nào trong các lớp đã biết. Đây chính là
q trình đưa ra quyết định.

3


Hình 1.1. Hình ảnh minh họa về nhận dạng
Để có thể nhận dạng được các đối tượng, chúng ta cần mơ hình hóa bài tốn
nhận dạng:
 Đầu vào:
 X = {x} tập các biểu dễn đối tượng quan sát.
 Ω={c k }
 Quá trình nhận dạng thực chất là tìm luật ε ánh xạ từ không biểu diễn
X sang không gian miễn dịch Ω .
 ε : X -> Ω sao 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ự sự
biết các thông tin về sự phân lớp trong tập để học.

 Học khơng có giám sát (unsupervised learning): không biết các
thông tin về sự phân lớp.

-

Giai đoạn ra quyết định (test): Dựa trên cơ sở quá trình học và thực hiện
quyết định phân lớp theo luật e.

Mơ hình hóa được bài tốn nhận dạng, chúng ta cần hiểu rõ về các vấn đề cơ
bản của quá trình nhận dạng:
-

Quá trình học:
 Tập học T= {x} qua quá trình học rút ra các lớp trong T (đặc trưng
phân biệt các lớp).
 Hàm quyết định (decision function): phân biệt giữa các lớp của
không gian đối tượng x.

-

Ra quyết định nhận dạng (thực hiện phân lớp):
 X thuộc ck nếu fk(x) > fj(x) với mọ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
được.

4


 T > 95%.
Sơ đồ khố tổng quá của quá trình nhận dạng:

2. Vai trị của nhận dạng
Khơng thể phủ nhận vai trò của nhận dạng trong thực tiễn ngày nay, mang lại
quá nhiều lợi ích cho chúng ta trong cuộc sống hằng ngày cũng như các nghiên cứu
khoa học.
Sự ra đời và phát triển của nhận dạng đã tạo ra một bước nhảy vọt về chất
trong kỹ thuật và kỹ nghệ xử lý thơng tin. Trí ṭ nhân tạo chính là nền tảng của
nhận dạng, nó đã giúp nhận dạng phát triển được như ngày nay. Điều này được thể
hiện qua các mặt sau:
-

Các robot hiện nay đã và đang phát triển vượt bậc cùng với nhận dạng.
Nó có thể nhận dạng được khuôn mặt con người, cảm xúc và có thể là các
mối nguy hiểm sắp xảy ra cho con người trong tương lai. Chính vì thế mà
có thể sau này nhận dạng sẽ đóng vai trị quan trọng đối với robot vì nhận
dạng chính là chìa khóa để robot có thể đưa ra được các quyết định. Nếu
như quá trình nhận dạng sai thì sẽ dẫn đến các kết quả sai lầm kế tiếp đó.

-

Con người ngày nay sử dụng rất rỗng rãi các ứng dụng liên quan đến
nhận dạng như bảo mật bằng khuôn mặt, võng mạc hay vân tay… Đó đều
là các ứng dụng của nhận dạng.

Chính vì thế trong một tương lai khơng xa khi mà trí tuệ nhân tạo dẫn đầu

cơng nghệ và xu hướng của thế giới thì nhận dạng sẽ đóng một vai trị rất quan
trọng trong cơng cuộc cách mạng đó.
5


Hình 1.2. Vai trị của nhận dạng trong thực tiễn
3. Một số ứng dụng của nhận dạng trong thực tiễn
Nhận dạng có rất nhiều ứng dụng trong thực tiễn, nó đã được ứng dũng trong
nhiều lĩnh vực từ nhiều năm nay. Trong đó có hai ứng dụng phổ biến nhất của nhận
dạng được ứng dụng trong đời sống hằng ngày:
-

Nhận dạng khn mặt: Nói một cách dễ hiểu, cơng nghệ AI nhận dạng
khuôn mặt là công nghệ cho phép nhận dạng một người cụ thể từ ảnh hoặc 1
đoạn video. Cách thức làm việc của công nghệ này là so sánh hình ảnh
khn mặt với những hình ảnh sẵn có trong cơ sở dữ liệu để đưa ra kết quả.
Hệ thống này thường được sử dụng trong các hệ thống an ninh và có thể
được so sánh với các dạng sinh trắc học khác như cá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ả năng phân tích hình ảnh trên camera giám sát để
phát hiện hành vi đáng ngờ nhằm cảnh báo và ngăn nạn trộm cắp ở các cửa
hàng tiện lợi trước khi hành vi thực sự xảy ra:

6


Hình 1.3 Hình ảnh minh họa về nhận diện khn mặt
-

Nhận dạng giọng nói: Nhận dạng giọng nói là cơng nghệ có khả năng nhận

dạng và dịch các lệnh thu được từ giọng nói của con người. Cơng nghệ nhận
dạng giọng nói bao gồm 2 thuật ngữ: Voice recognition và Speech
recognition.
 Speech recognition là việc xác định những từ ngữ trong câu nói rồ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 chính xác của
một cá nhân nào đó, tương tự một phương pháp nhận diện sinh trắc học.

Hình 1.4 Hình ảnh minh họa về nhận dạng giọng nói
7


4. Tổng kết về chương 1
Qua chương 1, chúng ta có cái nhìn tổng quan về nhận dạng cũng như vai trò
của nhận dạng trong thực tiễn. Nhận dạng sẽ giúp ích cho chúng ta nhiều trong cuộc
sống cùng với sự phát triển của AI.
Bên cạnh đó, nhận dạng và AI phát triển đặt ra nhiều vấn đề đáng lo ngại cho xã
hội con người, mặc dù không thể phủ nhận các mặt tích cực mà chúng mang lại
nhưng liệu chúng ta có thể chống lại những con robot hay người máy nếu như
chúng chống lại con người trong tương lai?
Mục đích của chúng em trong chương này chính là nêu quan điểm của mình về
các kía cạnh của Nhận dạng và AI để có một cái nhìn tổng quan và cách sử dụng
đúng đắn.

8


Chương 2. Thuật toán Support Vector Machine
1. Giới thiệu bài tốn
Việc gian lận diễn ra phổ biến vì vậy mà chúng ta cần phải có biện pháp đối

phó với nó. Nhưng việc dữ liệu người dùng bị bảo mật và khơng được cơng khai thì
chúng ta xử lý như nào? Xử lý bằng biện pháp gì?
SVM (tên tiếng anh là Support Vector Machine) là một thuật tốn phân lớp có
độ chính xác cao và hiệu quả tốt. So với các thuật tốn khác, SVM có khá hiệu quả
trong lớp các bài toán phân loại nhị phân và dự báo của học có giám sát. Thuật tốn
này có ưu điểm là hoạt động tốt đối với những mẫu dữ liệu có kích thước lớn và
thường mang lại kết quả vượt trội so với lớp các thuật tốn khác trong học có giám
sát.
Chính vì tính hiệu quả mà SVM thường được áp dụng trong các tác vụ phân
loại và dự báo, cũng như được nhiều công ty ứng dụng và triển khai trên mơi trường
prodcution. Chúng ta có thể liệt kê một số ứng dụng của thuật tốn SVM đó là:
Mơ hình chuẩn đoán bệnh. Dựa vào biến mục tiêu là những chỉ số xét nghiệm
lâm sàng, thuật toán đưa ra dự báo về một số bệnh như tiểu đường, suy thận, máu
nhiễm mỡ, …
Trước khi thuật toán CNN và Deep Learning bùng nổ thì SVM là lớp mơ hình
cực kì phổ biến trong phân loại ảnh.
Mơ hình phân loại tin tức. Xác định chủ đề của một đoạn văn bản, phân loại
cảm xúc văn bản, phân loại thư rác.
Mơ hình phát hiện gian lận.
Chính vì SVM có hiệu quả cao trong tác vụ phân loại và mơ hình phát hiện gian
lận nên chúng em quyết định sử dụng SVM để xây dựng mơ hình phát hiện thẻ gian
lận.
1.1. Tổng quan về SVM
Máy vectơ hỗ trợ (SVM - viết tắt tên tiếng Anh support vector machine) là một
khái niệm trong thống kê và khoa học máy tính cho một tập hợp các phương pháp
học có giám sát liên quan đến nhau để phân loại và phân tích hồi quy. SVM dạng
chuẩn nhận dữ liệu vào và phân loại chúng vào hai lớp khác nhau. Do đó SVM là
9



một thuật toán phân loại nhị phân. Với một bộ các ví dụ luyện tập thuộc hai thể loại
cho trước, thuật tốn luyện tập SVM xây dựng một mơ hình SVM để phân loại các
ví dụ khác vào hai thể loại đó. Một mơ hình SVM là một cách biểu diễn các điểm
trong không gian và lựa chọn ranh giới giữa hai thể loại sao cho khoảng cách từ các
ví dụ luyện tập tới ranh giới là xa nhất có thể. Các ví dụ mới cũng được biểu diễn
trong cùng một khơng gian và được thuật tốn dự đốn thuộc một trong hai thể loại
tùy vào ví dụ đó nằm ở phía nào của ranh giới.
Một máy vectơ hỗ trợ xây dựng một siêu phẳng hoặc một tập hợp các siêu
phẳng trong một không gian nhiều chiều hoặc vô hạn chiều, có thể được sử dụng
cho phân loại, hồi quy, hoặc các nhiệm vụ khác. Một cách trực giác, để phân loại tốt
nhất thì các siêu phẳng nằm ở càng xa các điểm dữ liệu của tất cả các lớp (gọi là
hàm lề) càng tốt, vì nói chung lề càng lớn thì sai số tổng qt hóa của thuật tốn
phân loại càng bé.
Trong nhiều trường hợp, không thể phân chia các lớp dữ liệu một cách tuyến
tính trong một khơng gian ban đầu được dùng để mô tả một vấn đề. Vì vậy, nhiều
khi cần phải ánh xạ các điểm dữ liệu trong không gian ban đầu vào một không gian
mới nhiều chiều hơn, để việc phân tách chúng trở nên dễ dàng hơn trong khơng gian
mới. Để việc tính toán được hiệu quả, ánh xạ sử dụng trong thuật tốn SVM chỉ địi
hỏi tích vơ hướng của các vectơ dữ liệu trong khơng gian mới có thể được tính dễ
dàng từ các tọa độ trong khơng gian cũ. Tích vô hướng này được xác định bằng một
hàm hạt nhân K(x,y) phù hợp.[1] Một siêu phẳng trong không gian mới được định
nghĩa là tập hợp các điểm có tích vơ hướng với một vectơ cố định trong khơng gian
đó là một hằng số. Vectơ xác định một siêu phẳng sử dụng trong SVM là một tổ
hợp tuyến tính của các vectơ dữ liệu luyện tập trong không gian mới với các hệ số

αi. Với siêu phẳng lựa chọn như trên, các điểm x trong không gian đặc trưng được
ánh xạ vào một siêu mặt phẳng là các điểm thỏa mãn:

Σi, αi, K(xi,x) = hằng số.
Ghi chú rằng nếu K(x,y) nhận giá trị ngày càng nhỏ khi y xa dần khỏi x thì mỗi

số hạng của tổng trên được dùng để đo độ tương tự giữa x với điểm xi tương ứng
trong dữ liệu luyện tập. Như vậy, tác dụng của tổng trên chính là so sánh khoảng
10


cách giữa điểm cần dự đoán với các điểm dữ liệu đã biết. Lưu ý là tập hợp các điểm
x được ánh xạ vào một siêu phẳng có thể có độ phức tạp tùy ý trong không gian ban
đầu, nên có thể phân tách các tập hợp thậm chí khơng lồi trong không gian ban đầu.

Hình 2.1 Phân lại thống kê trong học máy
1.2. Lịch sử
Thuật toán SVM ban đầu được tìm ra bởi Vladimir N. Vapnik và dạng chuẩn
hiện nay sử dụng lề mềm được tìm ra bởi Vapnik và Corinna Cortes năm 1995.
1.3. Cách hoạt động
Chúng ta cùng quay lại với bài toán trong Perceptron Learning Algorithm
(PLA). Giả sử rằng có hai class khác nhau được mơ tả bởi các điểm trong không
gian nhiều chiều, hai classes này linearly separable, tức tồn tại một siêu phẳng phân
chia chính xác hai classes đó. Hãy tìm một siêu mặt phẳng phân chia hai classes đó,
tức tất cả các điểm thuộc một class nằm về cùng một phía của siêu mặt phẳng đó và
ngược phía với tồn bộ các điểm thuộc class cịn lại. Chúng ta đã biết rằng, thuật
tốn PLA có thể làm được việc này nhưng nó có thể cho chúng ta vơ số nghiệm như
Hình 2.7 dưới đây:

11


Hinh
̀ 2.2 Các mặt phân cách 2 lớp
Câu hỏi đặt ra là: trong vơ số các mặt phân chia đó, đâu là mặt phân chia tốt
nhất theo một tiêu chuẩn nào đó? Trong ba đường thẳng minh họa trong Hình 1 phía

trên, có hai đường thẳng khá lệch về phía class hình trịn đỏ. Điều này có thể khiến
cho lớp màu đỏ khơng vui vì lãnh thổ xem ra bị lấn nhiều q. Liệu có cách nào để
tìm được đường phân chia mà cả hai classes đều cảm thấy công bằng và hạnh phúc
nhất hay khơng?
Chúng ta cần tìm một tiêu chuẩn để đo sự hạnh phúc của mỗi class. Hãy xem
Hình 2.8 dưới đây:

Hinh
̀ 2.3 Margin của hai classes là bằng nhau và lớn nhất có thể.
Nếu ta định nghĩa mức độ hạnh phúc của một class tỉ lệ thuận với khoảng cách
gần nhất từ một điểm của class đó tới đường/mặt phân chia, thì ở Hình 2 trái, class
trịn đỏ sẽ khơng được hạnh phúc cho lắm vì đường phân chia gần nó hơn class
vng xanh rất nhiều. Chúng ta cần một đường phân chia sao cho khoảng cách từ
điểm gần nhất của mỗi class (các điểm được khoanh tròn) tới đường phân chia là
12


như nhau, như thế thì mới cơng bằng. Khoảng cách như nhau này được gọi là
margin (lề).
Chúng ta xét tiếp Hình 2 bên phải khi khoảng cách từ đường phân chia tới các
điểm gần nhất của mỗi class là như nhau. Xét hai cách phân chia bởi đường nét liền
màu đen và đường nét đứt màu lục, đường nào sẽ làm cho cả hai class hạnh phúc
hơn? Rõ ràng đó phải là đường nét liền màu đen vì nó tạo ra một margin rộng hơn.
Việc margin rộng hơn sẽ mang lại hiệu ứng phân lớp tốt hơn vì sự phân chia
giữa hai classes là rạch ròi hơn. Việc này, sau này các bạn sẽ thấy, là một điểm khá
quan trọng giúp Support Vector Machine mang lại kết quả phân loại tốt hơn so với
Neural Network với 1 layer, tức Perceptron Learning Algorithm.
Bài toán tối ưu trong Support Vector Machine (SVM) chính là bài tốn đi tìm
đường phân chia sao cho margin là lớn nhất. Đây cũng là lý do vì sao SVM còn
được gọi là Maximum Margin Classifier.

1.4. Nhận xét
 Ưu điểm:

 Có thể mơ hình non-linear decision boundaries bằng cách
sử dụng nhiều kernels khác nhau
 Ít bị overfitting đặc biệt ở không gian high-dimensional.
 Nhược điểm:

 sử dụng nhiều RAM
 tricker khi tuning do phải lựa chọn kernel phù hợp cho mơ hình
 khó scale khi tập dữ liệu quá lớn

13


2. Mẫu dữ liệu sử dụng
Tập dữ liệu chứa các giao dịch được thực hiện bằng thẻ tín dụng vào tháng 9
năm 2013 bởi các chủ thẻ châu Âu.
Tập dữ liệu này trình bày các giao dịch xảy ra trong hai ngày, nơi chúng tơi có
492 gian lận trong số 284.807 giao dịch. Tập dữ liệu rất mất 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ỉ chứa các biến đầu vào số là kết quả của một phép biến đổi PCA. Rất
tiếc, do các vấn đề bảo mật, chúng tôi không thể cung cấp các tính năng gốc và
thêm thơng tin cơ bản về dữ liệu. Các tính năng V1, V2,… V28 là các thành phần
chính có được với PCA, các tính năng duy nhất không được chuyển đổi với PCA là
'Thời gian' và 'Số lượng'. Tính năng 'Thời gian' chứa số giây trơi qua giữa mỗi giao
dịch và giao dịch đầu tiên trong tập dữ liệu. Tính năng 'Số tiền' là Số tiền giao dịch,
tính năng này có thể được 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 năng 'Lớp' là biến phản hồi và nó nhận giá trị 1 trong trường hợp
gian lận và 0 nếu khơng.


Hình 2.4 Mẫu dữ liệu sử dụng

14


3. Ngôn ngữ sử dụng
Điều đầu tiên bạn nên ghi nhớ là các dự án về AI khác với các dự án phần mềm
truyền thống.
Sự khác biệt nằm ở Tech Stack, các kỹ năng cần thiết cho một dự án AI và sự
cần thiết của những nghiên cứu chuyên sâu không phải ai cũng có đủ thời gian thể
nắm giữ tất cả.
Tech Stack được định nghĩa là tập hợp các công nghệ mà một tổ chức sử dụng
để xây dựng một ứng dụng web hoặc thiết bị di động. Nó là sự kết hợp của các ngơn
ngữ lập trình, ...
Do đó, để thực hiện 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ác công cụ / thư viện hỗ trợ. May mắn là Python
cung cấp tất cả những thứ này, đây cũng chính là lý do tại sao ngày nay chúng ta
thấy RẤT NHIỀU dự án AI làm bằng Python.
Từ giai đoạn phát triển đến triển khai và bảo trì, Python giúp các lập trình viên
làm việc hiệu quả và tự tin về phần mềm mà họ làm ra. Bởi vì phần mềm của họ làm
ra có sự đóng góp của hàng trăm bộ não thiên tài trong đó (thơng qua các 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 các dự án Học
máy và dự án AI bao gồm:
 Tính đơn giản và nhất quán
 Cho phép truy cập vào các thư viện và framework tuyệt vời cho AI và
học máy (ML)
 Tính linh hoạt
 Độc lập nền tảng

 Và cộng đồng rộng lớn.
Chính vì vậy, chúng em quyết định sử dụng Python để xây dựng chương trình
giải quyết vấn đề

15


Chương 3. Ứng dụng SVM trong bài toán nhận
biết thẻ giả mạo
1. Bài tốn
Các giao dịch gian lận thẻ tín dụng diễn ra phổ biến gây mất cân bằng tài chính
cho các ngân hàng và nhà nước. Tuy nhiên thơng tin của các tài khoản thẻ tín dụng
phải được bảo mật nên chỉ có thể xử lí dữ liệu dưới dạng mã hóa.
Cần xây dựng chương trình xử lí bộ dữ liệu mã hóa đó và nhận biết các giao
dịch gian lận để xử phạt tránh gây tổn hại tài chính của ngân hàng và nhà nước.
2. Xây dựng chương trình
-

Thêm các 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 dữ liệu và hiển thị bảng dữ 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 của bộ dữ liệu
Dạng tròn:

17


Hình 3.2 Biểu đồ dạng trịn của bộ dữ liệu
- Thống kê dữ 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



×