Tuy nhiên việc phát hiện mã độc hại của các chương trình hiện nay thường dựa trên các thuật toán đối sánh mẫu và quan trọng là một cơ sở dữ liệu đầy đủ và cập nhật thường xuyên những mẫu
Trang 1ĐẠI HỌC THÁI NGUYÊN
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH
NGƯỜI HƯỚNG DẪN KHOA HỌC:
TS.Lương Thế Dũng
THÁI NGUYÊN - 2015
Trang 2LỜI CAM ĐOAN
Tôi cam đoan đây là công trình của riêng tôi
Các số liệu, kết quả nêu trong luận văn là trung thực và chưa từng được
ai công bố trong bất kỳ công trình nào khác
Qua đây tôi xin chân thành cảm ơn toàn thể các thầy cô trong khoa đào tạo sau đại học Trường Đại học Công nghệ Thông tin và Truyền thông – Đại học Thái Nguyên, những người đã trực tiếp giảng dạy, truyền đạt cho tôi kiến thức chuyên môn và phương pháp làm việc khoa học
Đặc biệt, tôi xin chân thành cảm ơn TS Lương Thế Dũng ,đã tận tình
hướng dẫn để tôi có thể hoàn thành luận văn này
Tôi cũng xin gửi lời cảm ơn tới gia đình, bạn bè, đồng nghiệp đã giúp
đỡ, động viên và tạo điều kiện cho tôi trong quá trình làm luận văn
Tác giả luận văn
Hà Mạnh Kiên
Trang 3MỤC LỤC
ĐẶT VẤN ĐỀ 1
CHƯƠNG 1: TỔNG QUAN VỀ MÃ ĐỘC HẠI 2
1.1 Các loại mã độc 2
1.1.1 Virus 2
1.1.2 Worm 3
1.1.3 Trojan Horse 3
1.1.4 Malicious Mobile Code 5
1.1.5 Tracking Cookie 6
1.1.6 Phần mềm gián điệp (Spyware) 6
1.1.7 Attacker Tool 7
1.1.8 Phishing 9
1.2 Phương pháp phát hiện mã độc hại 9
1.2.1 Phần mềm phát hiện mã độc 9
1.2.2 Kỹ thuật phát hiện phần mềm mã độc 10
1.2.3 Kỹ thuật phát hiện dựa mẫu nhận dạng 10
1.2.4 Phát hiện dựa trên đặc điểm 12
1.2.5 Phát hiện dựa trên hành vi 12
1.2.6 Kỹ thuật gây nhiễu 13
1.2.7 Phân tích sự tương tự 14
1.2.8 Chuẩn hóa mã độc 15
CHƯƠNG 2: MỘT SỐ KỸ THUẬT PHÂN LỚP 16
2.1 Tổng quan về khai phá dữ liệu 16
2.1.1 Khái niệm về khai phá dữ liệu 16
2.1.2 Ứng dụng trong khai phá dữ liệu 16
2.1.3 Các bài toán chính trong khai phá dữ liệu 17
2.1.4 Tiến trình khai phá dữ liệu 20
Trang 42.2 Một số kỹ thuật phân lớp dữ liệu 22
2.2.1 Khái niệm phân lớp 22
2.2.2 Mục đích của phân lớp 24
2.2.3 Các tiêu chí để đánh giá thuật tốn phân lớp 24
2.2.4 Các phương pháp đánh giá độ chính xác của mơ hình phân lớp phương pháp holdout 25
2.3 Phân lớp dựa trên phương pháp học Nạve bayes 26
2.3.1 Giới thiệu 26
2.3.2 Bộ phân lớp Nạve Bayes 28
2.4 Phân lớp dựa trên câu quyết định (Decision Tree) 29
2.4.1 Khái niệm cây quyết định: 29
2.4.2 Các vấn đề cần xem xét khi phân lớp dựa cây quyết định 42
2.5 Kỹ thuật phân loại máy vector hỗ trợ 44
2.5.1 Giới thiệu 44
2.5.2 SVM với tuyến tính 46
CHƯƠNG 3: ỨNG DỤNG KỸ THUẬT PHÂN LỚP TRONG PHÁT HIỆN MÃ ĐỘC 52
3.1 Mơ hình bài tốn 52
3.1.1 Thu thập dữ liệu 52
3.1.2 Tiền xử lý dữ liệu 53
3.1.3 Lựa chọn thuộc tính 54
3.1.4 Xây dựng bộ phân lớp 58
3.2 Tiến hành thực nghiệm 59
3.2.1 Phân lớp cây quyết định 59
3.2.2 Phân lớp SVM 60
3.3 Phân tích và bình luận 61
KẾT LUẬN 63
TÀI LIỆU THAM KHẢO 64
Trang 5DANH MỤC BẢNG
Bảng 3.1 Bảng kết quả độ chính xác cây quyết định bộ phân lớp đa lớp 60 Bảng 3.2 Bảng kết quả độ chính xác cây quyết định bộ phân lớp nhị phân 60 Bảng 3.3 Bảng kết quả xây dựng bộ phân lớp SVM: 61
Trang 6DẠNH MỤC HÌNH
Hình 1.1 Mô tả về Phishing 9
Hình 1.2 Kiểu phần mềm mã độc cơ bản 10
Hình 1.3 Mã độc đa hình 11
Hình 1.4 Phần mềm độc hại siêu đa hình 11
Hình 1.5 Bộ phát hiện mã độc dựa trên hành vi 13
Hình 1.6 Kỹ thuật gây nhiễu 14
Hình 2.1 Quy trình phát hiện tri thức 20
Hình 2.2 Ước lượng độ chính xác của mô hình phân lớp vớiphương pháp holdout 25
Hình 3.1 Các bước xây dựng mô hình phát hiện mã độc 52
Hình 3.2 Quá trình trích rút các hàm API 56
Hình 3.3 Chi tiết quá trình xây dựng mô hình phát hiện mã độc 58
Hình3.4 Biểu đồ so sánh độ chính xác (%) của hai thuật toán 62
Trang 7ĐẶT VẤN ĐỀ
Khi nhu cầu về việc sử dụng internet của con người ngày càng tăng thì cũng là lúc mối đe dọa xuất hiện ngày càng nhiều, nổi bật là đe dọa của mã độc hại Mã độc là một loại phần mềm hệ thống do các tin tặc hay các kẻ nghịch ngợm tạo ra nhằm gây hại cho máy tính Tùy theo cách thức mà tin tặc dung, sự nguy hại của các loại phần mềm khác nhau từ chỗ chỉ hiển thị các cửa sổ thông báo cho đến việc tấn công chiếm máy và lây lan sang máy khác như virut Xuất hiện bất kỳ đâu trên môi trường của các thiết bị điện tử như các dĩa mềm, usb, đến môi trường Internet trong các webside, trong các tin nhắn, trong hòm thư điện tử của người dùng, trong các phần mềm tiện ích……Khi mã độc hại đã nhiễm vào một máy tính nào đó thì nó sẽ lây lan sang máy tính khác là khá nhanh và khó lường trước được
Công nghệ thông tin liên tục phát triển và thay đổi, nhiều phần mềm mới ra đời mang đến cho con người nhiều tiện ích hơn Do vậy để chống lại các loại mã độc hại người ta thường sử dụng các chương trình phát hiện và loại bỏ mã độc hại Tuy nhiên việc phát hiện mã độc hại của các chương trình hiện nay thường dựa trên các thuật toán đối sánh mẫu và quan trọng là một cơ
sở dữ liệu đầy đủ và cập nhật thường xuyên những mẫu mới Để có một cơ sở
dữ liệu như đã nêu cần một chương trình quản lý một cách hiệu quả và tốt rất nhiều công sức để tạo ra các mẫu mã độc hại Một phương pháp mới hiện nay
là dựa trên các mô hình toán học để phát hiện ra các mã độc hại mới mà không sử dụng các cơ sở dữ liệu mẫu, trong đó khai phá dữ liệu là một phương pháp quan trọng và đang được nhiều người quan tâm Chính vì vậy luận văn này tiến hành nghiên cứu, tìm hiểu các kỹ thuật phân lớp dữ liệu và ứng dụng trong phát hiện mã độc Nhằm xấy dựng ra các mô hình, thuật toán
để phát hiện và đánh giá các mô hình đó
Trang 8CHƯƠNG 1 TỔNG QUAN VỀ MÃ ĐỘC HẠI
1.1 Các loại mã độc
1.1.1 Virus
Virus là một loại mã độc hại (Maliciuos code) có khả năng tự nhân bản
và lây nhiễm chính nó vào các file, chương trình hoặc máy tính Như vậy virus máy tính phải luôn luôn bám vào một vật chủ (đó là file dữ liệu hoặc file ứng dụng) để lây lan Các chương trình diệt virus dựa vào đặc tính này để thực thi việc phòng chống và diệt virus, để quét các file trên thiết bị lưu, quét các file trước khi lưu xuống ổ cứng… Điều này cũng giải thích vì sao đôi khi các phần mềm diệt virus tại PC đưa ra thông báo “phát hiện ra virus nhưng không diệt được” khi thấy có dấu hiệu hoạt động của virus trên PC, bởi vì
“vật mang virus” lại nằm ở máy khác nên không thể thực thi việc xoá đoạn
mã độc hại đó
Compiled Virus là virus mà mã thực thi của nó đã được dịch hoàn chỉnh
bởi một trình biên dịch để nó có thể thực thi trực tiếp từ hệ điều hành Các loại boot virus như (Michelangelo và Stoned), file virus (như Jerusalem) rất phổ biến trong những năm 80 là virus thuộc nhóm này, compiled virus cũng có thể là pha trộn bởi cả boot virus và file virus trong cùng một phiên bản
Interpreted Virus là một tổ hợp của mã nguồn mã chỉ thực thi được
dưới sự hỗ trợ của một ứng dụng cụ thể hoặc một dịch vụ cụ thể trong hệ thống Một cách đơn giản, virus kiểu này chỉ là một tập lệnh, cho đến khi ứng dụng gọi thì nó mới được thực thi Macro virus, scripting virus là các virus nằm trong dạng này Macro virus rất phổ biến trong các ứng dụng Microsoft Office khi tận dụng khả năng kiểm soát việc tạo và mở file để thực thi và lây nhiễm Sự khác nhau giữa macro virus và scripting virus là: Macro virus là
Trang 9tập lệnh thực thi bởi một ứng dụng cụ thể, còn scripting virus là tập lệnh chạy bằng một service của hệ điều hành Melisa là một ví dụ xuất sắc về Macro virus, Love Stages là ví dụ cho scripting virus
1.1.2 Worm
Worm cũng là một chương trình có khả năng tự nhân bản và tự lây nhiễm trong hệ thống tuy nhiên nó có khả năng “tự đóng gói”, điều đó có nghĩa là Worm không cần phải có “file chủ” để mang nó khi nhiễm vào hệ thống Như vậy, có thể thấy rằng chỉ dùng các chương trình quét file sẽ không diệt được Worm trong hệ thống vì Worm không “bám” vào một file hoặc một vùng nào đó trên đĩa cứng Mục tiêu của Worm bao gồm cả làm lãng phí nguồn lực băng thông của mạng và phá hoại hệ thống như xoá file, tạo backdoor, thả keylogger,… Tấn công của Worm có đặc trưng là lan rộng cực
kỳ nhanh chóng do không cần tác động của con người (như khởi động máy, copy file hay đóng/mở file) Worm có thể chia làm 2 loại:
Network Service Worm lan truyền bằng cách lợi dụng các lỗ hổng
bảo mật của mạng, của hệ điều hành hoặc của ứng dụng Sasser là ví dụ cho loại sâu này
Mass Mailing Worm là một dạng tấn công qua dịch vụ mail, tuy nhiên
nó tự đóng gói để tấn công và lây nhiễm chứ không bám vào vật chủ là email Khi sâu này lây nhiễm vào hệ thống, nó thường cố gắng tìm kiếm sổ địa chỉ
và tự gửi bản thân nó đến các địa chỉ thu nhặt được Việc gửi đồng thời cho toàn bộ các địa chỉ thường gây quá tải cho mạng hoặc cho máy chủ mail Netsky, Mydoom là ví dụ cho thể loại này
1.1.3 Trojan Horse
Trojan Horse là loại mã độc hại được đặt theo sự tích “Ngựa thành Troy” Trojan horse không có khả năng tự nhân bản tuy nhiên nó lây vào hệ thống với biểu hiện rất bình thường nhưng thực chất bên trong có ẩn chứa các đoạn mã với mục đích gây hại Trojan có thể gây hại theo ba cách sau:
Trang 10Tiếp tục thực thi các chức năng của chương trình mà nó bám vào, bên cạnh đó thực thi các hoạt động gây hại một cách riêng biệt (ví dụ như gửi một trò chơi dụ cho người dùng sử dụng, bên cạnh đó là một chương trình đánh cắp password)
Tiếp tục thực thi các chức năng của chương trình mà nó bám vào, nhưng sửa đổi một số chức năng để gây tổn hại (ví dụ như một trojan giả lập một cửa sổ login để lấy password) hoặc che dấu các hành động phá hoại khác (ví dụ như trojan che dấu cho các tiến trình độc hại khác bằng cách tắt các hiển thị của hệ thống)
Thực thi luôn một chương trình gây hại bằng cách núp dưới danh một chương trình không có hại (ví dụ như một trojan được giới thiệu như là một chò chơi hoặc một tool trên mạng, người dùng chỉ cần kích hoạt file này là lập tức dữ liệu trên PC sẽ bị xoá hết)
Có 7 loại trojan chính:
Trojan truy cập từ xa: Được thiết kế để cho kẻ tấn công có khả năng
từ xa chiếm quyền điều khiển của máy bị hại Các trojan này thường dấu vào các trò chơi và các chương trình nhỏ làm cho người dùng mất cảnh giác
Trojan gửi dữ liệu: Nó thực hiện việc lấy và gửi dữ liệu nhạy cảm như
mật khẩu, thông tin thẻ tín dụng, các tệp nhật ký, địa chỉ email… cho kẻ tấn công Trojan này có thể tìm kiếm cụ thể thông tin hoặc cài phần mềm đọc trộm bàn phím và gửi toàn bộ các phím bấm về cho kẻ tấn công
Trojan hủy hoại: Thực hiện việc xóa các tệp tin Loại trojan này giống
với virus và thường có thể bị phát hiện bởi các chương trình diệt virus
Trojan kiểu proxy: Sử dụng máy tính bị hại làm proxy, qua đó có thể
sử dụng máy bị hại để thực hiện các hành vi lừa gạt hay đánh phá các máy tính khác
Trojan FTP: Được thiết kế để mở cổng 21 và cho phép tin tặc kết nối
vào máy bị hại sử dụng FTP
Trang 11Trojan tắt phần mềm an ninh: Thực hiện việc dừng hoặc xóa bỏ
chương trình an ninh như phần mềm chống virus hay tường lửa mà người dùng không nhận ra
Trojan DoS: Được sử dụng trong các cuộc tấn công từ chối dịch vụ Ví
dụ các con bot sử dụng trong DDoS cũng có thể coi là một loại trojan
Ví dụ trojan có tên Zeus, Clampi đã mang về cho tội phạm hàng triệu USD bằng cách ghi lại thông tin tài khoản để làm thẻ giả hoặc chuyển tiền vào tài khoản của một bên trung gian - gọi là Mule Mule sau đó được trả công để đảm nhận việc gửi tiền ra nước ngoài Mule được thuê thông qua các trang tìm kiếm việc làm và họ không hề biết rằng số tiền họ nhận gửi đi
là bất hợp pháp
1.1.4 Malicious Mobile Code
Là một dạng mã phần mềm có thể được gửi từ xa vào để chạy trên một
hệ thống mà không cần đến lời gọi thực hiện của người dùng hệ thống đó Malicious Mobile Code được coi là khác với virus, worm ở đặc tính là nó không nhiễm vào file và không tìm cách tự phát tán Thay vì khai thác một điểm yếu bảo mật xác định nào đó, kiểu tấn công này thường tác động đến hệ thống bằng cách tận dụng các quyền ưu tiên ngầm định để chạy mã từ xa Các công cụ lập trình như Java, ActiveX, JavaScript, VBScript là môi trường tốt cho Malicious mobile code Một trong những ví dụ nổi tiếng của kiểu tấn công này là Nimda, sử dụng JavaScript
Kiểu tấn công này của Nimda thường được biết đến như một tấn công hỗn hợp (Blended Atatck) Cuộc tấn công có thể đi tới bằng một email khi người dùng mở một email độc bằng web-browser Sau khi nhiễm vào máy này, Nimda
sẽ cố gắng sử dụng sổ địa chỉ email của máy đó để phát tán tới các máy khác Mặt khác, từ máy đã bị nhiễm, Nimda cố gắng quét các máy khác trong mạng có thư mục chia sẻ mà không bảo mật, Nimda sẽ dùng dịch vụ NetBIOS như
Trang 12phương tiện để chuyển file nhiễm virus tới các máy đó Đồng thời Nimda cố gắng dò quét để phát hiện ra các máy tính có cài dịch vụ IIS có điểm yếu bảo mật của Microsoft Khi tìm thấy, nó sẽ copy bản thân nó vào server Nếu một web client có điểm yếu bảo mật tương ứng kết nối vào trang web này, client đó cũng bị nhiễm (lưu ý rằng bị nhiễm mà không cần “mở email bị nhiễm virus”)
Quá trình nhiễm virus sẽ lan tràn theo cấp số nhân
1.1.5 Tracking Cookie
Là một dạng lạm dụng cookie để theo dõi một số hành động duyệt web của người sử dụng một cách bất hợp pháp Cookie là một file dữ liệu chứa thông tin về việc sử dụng một trang web cụ thể nào đó của web-client Mục tiêu của việc duy trì các cookie trong hệ thống máy tính nhằm căn cứ vào đó
để tạo ra giao diện, hành vi của trang web sao cho thích hợp và tương ứng với từng web-client Tuy nhiên tính năng này lại bị lạm dụng để tạo thành các phần mềm gián điệp (spyware) nhằm thu thập thông tin riêng tư về hành vi duyệt web của cá nhân
1.1.6 Phần mềm gián điệp (Spyware)
Là loại phần mềm chuyên thu thập các thông tin từ các máy chủ (thông thường vì mục đích thương mại) qua mạng Internet mà không có sự nhận biết và cho phép của chủ máy Một cách điển hình, spyware được cài đặt một cách bí mật như là một bộ phận kèm theo của các phần mềm miễn phí (freeware) và phần mềm chia sẻ (shareware) mà người ta có thể tải về từ Internet Một khi đã cài đặt, spyware điều phối các hoạt động của máy chủ trên Internet và lặng lẽ chuyển các dữ liệu thông tin đến một máy khác (thường là của những hãng chuyên bán quảng cáo hoặc của các tin tặc) Phần mềm gián điệp cũng thu thập tin tức về địa chỉ thư điện tử và ngay cả mật khẩu cũng như là số thẻ tín dụng
Khác với Worm và Virus, Spyware không có khả năng tự nhân bản
Trang 131.1.7 Attacker Tool
Là những bộ công cụ tấn công có thể sử dụng để đẩy các phần mềm độc hại vào trong hệ thống Các bộ công cụ này có khả năng giúp cho kẻ tấn công có thể truy nhập bất hợp pháp vào hệ thống hoặc làm cho hệ thống bị lây nhiễm mã độc hại Khi được tải vào trong hệ thống bằng các đoạn mã độc hai, Attacker tool có thể chính là một phần của đoạn mã độc đó (ví dụ như trong một trojan) hoặc nó sẽ được tải vào hệ thống sau khi nhiễm Ví dụ như một hệ thống đã bị nhiễm một loại worm, worm này có thể điều khiển hệ thống tự động kết nối đến một web-site nào đó, tải attacker tool từ site đó và cài đặt Attacker tool vào hệ thống Attacker tool thường gặp là backdoor và keylogger
Backdoor là một thuật ngữ chung chỉ các phần mềm độc hại thường trú
và đợi lệnh điều khiển từ các cổng dịch vụ TCP hoặc UDP Một cách đơn giản nhất, phần lớn các backdoor cho phép một kẻ tấn công thực thi một số hành động trên máy bị nhiễm như truyền file, dò mật khẩu, thực hiện mã lệnh… Backdoor cũng có thể được xem xét dưới 2 dạng: Zoombie và Remote Administration Tool
Zoombie (có thể đôi lúc gọi là bot) là một chương trình được cài đặt
lên hệ thống nhằm mục đích tấn công hệ thống khác Kiểu thông dụng nhất của Zoombie là các Agent dùng để tổ chức một cuộc tấn công DDoS Kẻ tấn công có thể cài Zoombie vào một số lượng lớn các máy tính rồi ra lênh tấn công cùng một lúc Trinoo và Tribe Flood Network là hai Zoombie nổi tiếng
Remote Administration Tool là các công cụ có sẵn của hệ thống cho
phép thực hiện quyền quản trị từ xa Tuy nhiên hacker cũng có thể lợi dụng tính năng này để xâm hại hệ thống Tấn công kiểu này có thể bao gồm hành động theo dõi mọi thứ xuất hiện trên màn hình cho đến tác động vào cấu hình của hệ thống Ví dụ về công cụ RAT là: Back Orifice, SubSeven…
Keylogger là phần mềm được dùng để bí mật ghi lại các phím đã được
Trang 14nhấn bằng bàn phím rồi gửi tới hacker Keylogger có thể ghi lại nội dung của email, của văn bản, user name, password, thông tin bí mật Ví dụ một số loại keylogger như: KeySnatch, Spyster…
Rootkits là tập hợp của các file được cài đặt lên hệ thống nhằm biến
đổi các chức năng chuẩn của hệ thống thành các chức năng tiềm ẩn các tấn công nguy hiểm Ví dụ như trong hệ thống Windows, Rootkit có thể sửa đổi, thay thế file, hoặc thường trú trong bộ nhớ nhằm thay thế, sửa đổi các lời gọi hàm của hệ điều hành Rootkit thường được dùng để cài đặt các công cụ tấn công như cài backdoor, cài keylogger Ví dụ về Rootkit là: LRK5, Knark, Adore, Hack Defender
Web Browser Plug-in là phương thức cài mã độc hại thực thi cùng với
trình duyệt web Khi được cài đặt, kiểu mã độc hại này sẽ theo dõi tất cả các hành vi duyệt web của người dùng (ví dụ như tên web site đã truy nhập) sau đó gửi thông tin ra ngoài Một dạng khác là phần mềm gián điệp có chức năng quay
số điện thoại tự động, nó sẽ tự động kích hoạt modem và kết nối đến một số điện thoại ngầm định mặc dù không được phép của chủ nhân
Email Generator là những chương trình cho phép tạo ra và gửi đi một
số lượng lớn các email Mã độc hại có thể gieo rắc các Email generator vào trong hệ thống Các chương trình gián điệp, spam, mã độc hại có thể được đính kèm vào các email được sinh là từ Email generator và gửi tới các địa chỉ
có trong sổ địa chỉ của máy bị nhiễm
Attacker Toolkit là các bộ công cụ có thể được tải xuống và cài vào hệ
thống khi hệ thống đã bị khống chế bởi phần mềm độc hại Các công cụ kiểu như các bộ dò quét cổng (port scanner), bộ phá mật khẩu (password cracker),
bộ dò quét gói tin (Packet Sniffer) chính là các Attacker Toolkit thường hay được sử dụng
Trang 151.1.8 Phishing
Là một hình thức tấn công thường có thể xem là kết hợp với mã độc hại Phishing là phương thức dụ người dùng kết nối và sử dụng một hệ thống máy tính giả mạo nhằm làm cho người dùng tiết lộ các thông tin bí mật về danh tính (ví dụ như mật khẩu, số tài khoản, thông tin cá nhân…) Kẻ tấn công phishing thường tạo ra trang web hoặc email có hình thức giống hệt như các trang web hoặc email mà nạn nhân thường hay sử dụng như trang của Ngân hàng, của công ty phát hành thẻ tín dụng… Email hoặc trang web giả mạo này sẽ đề nghị nạn nhân thay đổi hoặc cung cấp các thông tin bí mật về tài khoản, về mật khẩu… Các thông tin này sẽ được sử dụng để trộm tiền trực tiếp trong tài khoản hoặc được sử dụng vào các mục đích bất hợp pháp khác
Hình 1.1 Mô tả về Phishing
1.2 Phương pháp phát hiện mã độc hại
1.2.1 Phần mềm phát hiện mã độc
Một phần mềm phát hiện mã độc D được định nghĩa là một hàm mà miền xác định và miền giá trị là tập hợp các chương trình thực thi P và tập hợp {malicious, benign} Nói cách khác phần mềm mã độc có thể được định nghĩa như hàm dưới đây:
Trang 16D(p) = Phần mềm thực hiện hiện quét các chương trình p P để kiểm tra xem một chương trình là bình thường hay độc hại
1.2.2 Kỹ thuật phát hiện phần mềm mã độc
Kỹ thuật được sử dụng để phát hiện phần mềm mã độc có thể được chia làm hai loại: phát hiện dựa trên bất thường và phát hiện dựa trên mẫu nhận dạng Phát hiện dựa trên bất thường sử dụng các tri thức về những hành động được xem là bình thường trên hệ thống để tìm ra những hành độc của
mã độc, những hành động bất thường Một kiểu đặc biệt của kỹ thuật phát hiện dựa trên bất thường là phát hiện dựa trên đặc điểm, phát hiện dựa trên đặc điểm làm việc sử dụng tập luật được coi là bình thường để quyết định một chương trình có cố ý vi phạm tập những luật đó không Những chương trình vi phạm tập hợp luật được coi là phần mềm độc hại Phát hiện dựa trên mẫu nhận dạng sử dụng một cơ sở dữ liệu về các mẫu mã độc để kiểm tra một chương trình có độc hại không
1.2.3 Kỹ thuật phát hiện dựa mẫu nhận dạng
Những phần mềm quét mã độc thương mại tìm kiếm các mẫu nhận dạng là một chuỗi các byte trong mã độc để xác định một chương trình đã quét có phải là mã độc không Về cơ bản có ba loại phần mềm độc hại: cơ bản, đa hình, siêu đa hình Trong phần mềm độc hại cơ bản điểm khởi đầu chương trình được thay đổi quyền kiểm soát sang đoạn mã độc Phần mềm
sẽ phát hiện ra một chương trình là mã độc nếu một mẫu mã độc có thể được tìm thấy trong đoạn mã của chương trình Hình 1.3 cho ta thấy kiểu kiến trúc của một phần mềm độc hại cơ bản
Hình 1.2 Kiểu phần mềm mã độc cơ bản
Trang 17Phần mềm mã độc đa hình chứa mã độc đã được mã hóa cùng với bộ giải mã Để kích hoạt mã độc đa hình thì mã độc cần có cơ chế đa hình hóa trong thân của nó Cơ chế đa hình hóa tạo ra một biến thể mới mỗi khi nó chạy Việc phát hiện dựa trên mẫu nhận dạng cho loại mã độc này là tương đối khó khăn vì mỗi biến thể sẽ sinh ra mẫu mã độc mới Việc phân tích trình
tự các hàm API được sử dụng để phát hiện mã độc loại này Hình 1.4 cho ta thấy cấu trúc của mã độc đa hình:
Hình 1.3 Mã độc đa hình
Phần mềm độc hại siêu đa hình có thể lập trình lại chính nó sử dụng
kỹ thuật xáo trộn để tạo ra như những biến thể không giống mã độc gốc Như vậy loại phần mềm này sẽ tránh được sự phát hiện của phần mềm phát hiện mã độc vì mỗi biến thể mới được tạo ra sẽ có mẫu khác nhau, do đó không thể lưu trữ tất cả các mẫu của cùng một mã độc Để phát hiện cơ chế siêu đa hình, thực hiện phân tích một vài đoạn mã đã được dịch ngược Sau khi dịch ngược, sẽ thực hiện biến đổi mã chương trình và tạo ra đoạn mã mới, đoạn mã này vẫn duy trì chức năng cũ và sẽ trông khác với đoạn mã ban đầu Hình 1.5 cho ta thấy phần mềm độc hại siêu đa hình và các mẫu nhận dạng tương ứng với các biến thể
Hình 1.4 Phần mềm độc hại siêu đa hình
Trang 18Giả sử S là tập hợp các mẫu nhận dạng của phần mềm độc hại Đối với hình 1.5, Si S là các mẫu nhận dạng các biến thể siêu đa hình từ một bản mẫu siêu hình
Một số vấn đề chính đối với phương pháp nhận dạng theo mẫu là:
Việc tạo và phân phối mẫu rất phức tạp
Việc tạo mẫu cần làm thủ công và yêu cầu phải phân tích kỹ
Các mẫu dễ bị bỏ qua khi mẫu mới được tạo ra
Kích thước của kho lưu trữ mẫu tăng lên nhanh chóng
1.2.4 Phát hiện dựa trên đặc điểm
Phát hiện dựa trên đặc điểm là trường hợp riêng của phát hiện dựa trên bất thường Thay vì mô phỏng hoạt động của hệ thống hay ứng dụng, phát hiện dựa trên đặc điểm mô phỏng yêu cầu của hệ thống hay ứng dụng Trong phát hiện dựa trên đặc điểm tồn tại một giai đoạn học để cố gắng tìm hiểu tất
cả các hành vi có thể của hệ thống hay ứng dụng cần kiểm tra Hạn chế của hệ thống phát hiện dựa trên đặc điểm là rất khó để xác định chính xác hành vi của hệ thống hay ứng dụng Một công cụ là Panorama cho phép ghi lại dòng thông tin trong hệ thống của chương trình bằng việc kiểm tra trên hệ thống, kiểm tra các hành vi không có trong tập luật
1.2.5 Phát hiện dựa trên hành vi
Phát hiện dựa trên hành vi khác với phương pháp khác ở chỗ nó xác định hành động của phần mềm độc hại chứ không phải là dựa trên các chuỗi
đã biết trước Các chương trình mã độc có thể có mã nguồn khác nhau nhau, nhưng các hành vi như nhau, do đó phát hiện dựa trên hành vi có thể xác định nhiều biến thể khác nhau của phần mềm độc hại Loại cơ chế xác định này giúp cho việc phát hiện phần mềm độc hại có khả năng tạo ra biến thể mới vì chúng luôn sử dụng tài nguyên hệ thống và dịch vụ theo cách giống nhau Bộ phát hiện dựa trên hành vi gồm những thành phần sau:
Trang 19Thu thập dữ liệu: bộ phận này thu thập thông tin tĩnh hoặc động đã ghi lại
Bộ biên dịch: bộ phận này chuyển đổi dữ liệu thu được ban đầu thành dữ liệu tạm thời
Thuật toán tương ứng: được sử dụng để so sánh dữ liệu tạm thời với mẫu hành vi
Hình 1.5 Bộ phát hiện mã độc dựa trên hành vi
1.2.6 Kỹ thuật gây nhiễu
Mục đích của gây nhiễu là che giấu thông tin khiến cho người khác không thể thấy ý nghĩa thực sự của nó Các nhà sản xuất phần mềm sử dụng biện pháp gây nhiễu để gây khó khăn cho việc dịch ngược Phần mềm độc hại được viết mang những đặc điểm này và việc gây nhiễu phần mềm mã độc có được sử dụng bằng nhiều kỹ thuật, vì vậy mã độc rất khó bị dịch ngược và do
đó không thể hiểu được mục đích của chúng Lý thuyết gây nhiễu có thể được
định nghĩa như sau: cho một chương trình P và một hàm biến đổi T, hàm biến đổi thực hiện biến đổi P thành P’ và đảm bảo một số tính chất sau:
P’ khó bị dịch ngược
P’ có các chức năng như P
Có thể so sánh giữa P và P’
Trang 20Hình 1.6 Kỹ thuật gây nhiễu
Nhiều phần mềm mã độc đa hình và siêu hình được viết sử dụng công nghệ gây nhiễu, vì vậy nó có thể chống lại phương pháp phát hiện dựa trên mẫu
Kỹ thuật gây nhiễu có thể dễ dàng biến đổi các mẫu của phần mềm độc hại
Phần mềm độc hại bị gây nhiễu có thể phát hiện được bằng cách thu thập nhiều phiên bản khác nhau của một phần mềm độc hại và phân tích các phiên bản hoặc tạo ra bản mã được chuẩn hóa
1.2.7 Phân tích sự tương tự
Các mẫu mã độc giống như Win32.Evol tạo ra nhiều tệp (biến thể) bằng kỹ thuật xáo trộn Để phát hiện mẫu này, một cách là phân tích sự tương
tự giữa hai tệp bằng việc tính khoảng cách Euclidian Khoảng cách giữa hai
vector x và y được tính bằng công thức sau:
Mỗi chương trình được biểu diễn như một số hàm, mỗi hàm bao gồm
một số lệnh và tạo ra các vector giống như x và y Dưới đây là một số bước để
phát hiện ra các phần mềm độc hại sử dụng phương pháp tính độ tương tự:
Bước 1 Phần mềm được giải nén, nếu nó bị nén
Bước 2 Phần mềm được dịch ngược sử dụng các công cụ IDA pro hoặc
Trang 21Bước 5 Giá trị khoảng cách được so sánh với một giá trị ngưỡng, nếu
giá trị này nhỏ hơn một ngưỡng định nghĩa trước thì phần mềm đang được kiểm tra không phải mã độc, ngược lại nó là mã độc
Chú ý: Độ chính xác của thuật toán phụ thuộc vào giá trị ngưỡng được chọn, khi giá trị này cao thì xác suất báo động nhầm tăng, ngược lại khi giá trị này thấp thì xác suất bỏ sót phần mềm độc hại lại tăng lên
1.2.8 Chuẩn hóa mã độc
Bộ chuẩn hóa mã độc chấp nhận các phiên bản của mã độc và loại bỏ các phiên bản xáo trộn của phần mềm để tạo ra một phần mềm chuẩn hóa, do đó bộ chuẩn hóa làm tăng khả năng phát hiện mã độc của các chương trình phát hiện Các bước dưới đây mô tả phương pháp phát hiện dựa trên chuẩn hóa:
Bước 1 Phần mềm được giải nén, nếu nó bị nén
Bước 2 Phần mềm được dịch ngược sử dụng các công cụ IDA pro hoặc
OllyDbg
Bước 3 Mỗi phần mềm được dịch ngược sau đó được đưa qua bộ chuẩn
hóa, bộ chuẩn hóa kiểm tra mã xáo trộn để loại bỏ và tạo ra mã chuẩn hóa
Bước 4 Mã chuẩn hóa được đưa đến bộ phát hiện để tạo ra dấu hiệu
chuẩn hóa, so sánh với dấu hiệu được lưu trong kho dữ liệu mẫu
Bước 5 Việc so sánh dựa trên sự trùng khớp lớn nhất giữa dấu hiệu trong kho và dấu hiệu của mã chuẩn hóa, cuối cùng dấu hiệu được chuẩn hóa
sẽ được lưu trữ trong kho để sử dụng cho việc phát hiện mã độc
Trang 22CHƯƠNG 2 MỘT SỐ KỸ THUẬT PHÂN LỚP 2.1 Tổng quan về khai phá dữ liệu
2.1.1 Khái niệm về khai phá dữ liệu
Khai phá dữ liệu được dùng để mô tả quá trình phát hiện ra tri thức trong CSDL Quá trình này kết xuất ra các tri thức tiềm ẩn từ dữ liệu giúp cho việc dự báo trong kinh doanh, các hoạt động sản xuất, Khai phá dữ liệu làm giảm chi phí về thời gian so với phương pháp truyền thống trước kia (ví dụ như phương pháp thống kê)
Sau đây là một số định nghĩa mang tính mô tả của nhiều tác giả về khai phá dữ liệu:
Định nghĩa của Ferruzza: “Khai phá dữ liệu là tập hợp các phương
pháp được dùng trong tiến trình khám phá tri thức để chỉ ra sự khác biệt, các mối quan hệ và các mẫu chưa biết bên trong dữ liệu”
Định nghĩa của Parsaye: “Khai phá dữ liệu là quá trình trợ giúp
quyết định, trong đó chúng ta tìm kiếm các mẫu thông tin chưa biết và bất
ngờ trong CSDL lớn” Định nghĩa của Fayyad: “Khai phá tri thức là một
quá trình không tầm
thường nhận ra những mẫu dữ liệu có giá trị, mới, hữu ích, tiềm năng
và có thể hiểu được”
2.1.2 Ứng dụng trong khai phá dữ liệu
Phát hiện tri thức MỘT SỐ KỸ THUẬT PHÂN LỚP
và khai phá dữ liệu liên quan đến nhiều ngành, nhiều lĩnh vực: thống
kê, trí tuệ nhân tạo, cơ sở dữ liệu, thuật toán, tính toán song song và tốc độ cao, thu thập tri thức cho các hệ chuyên gia, quan sát dữ liệu Đặc biệt phát hiện tri thức và khai phá dữ liệu rất gần gũi với lĩnh vực thống kê, sử dụng các phương pháp thống kê để mô hình dữ liệu và phát hiện các mẫu, luật
Ngân hàng dữ liệu (Data Warehousing) và các công cụ phân tích trực
Trang 23tuyến (OLAP- On Line Analytical Processing) cũng liên quan rất chặt chẽ
với phát hiện tri thức và khai phá dữ liệu
Khai phá dữ liệu có nhiều ứng dụng trong thực tế, ví dụ như:
Bảo hiểm, tài chính và thị trường chứng khoán: phân tích tình hình tài chính và dự báo giá của các loại cổ phiếu trong thị trường chứng khoán Danh mục vốn và giá, lãi suất, dữ liệu thẻ tín dụng, phát hiện gian lận,
Thống kê, phân tích dữ liệu và hỗ trợ ra quyết định
Điều trị y học và chăm sóc y tế: một số thông tin về chuẩn đoán bệnh lưu trong các hệ thống quản lý bệnh viện Phân tích mối liên hệ giữa các triệu chứng bệnh, chuẩn đoán và phương pháp điều trị (chế độ dinh dưỡng, thuốc, )
Sản xuất và chế biến: Quy trình, phương pháp chế biến và xử lý sự cố Text mining và Web mining: Phân lớp văn bản và các trang Web, tóm tắt văn bản,
Lĩnh vực khoa học: Quan sát thiên văn, dữ liệu gene, dữ liệu sinh vật học, tìm kiếm, so sánh các hệ gene và thông tin di truyền, mối liên hệ gene và một số bệnh di truyền,
Mạng viễn thông: Phân tích các cuộc gọi điện thoại và hệ thống giám sát lỗi, sự cố, chất lượng dịch vụ,
2.1.3 Các bài toán chính trong khai phá dữ liệu
Quá trình khai phá dữ liệu là quá trình phát hiện ra mẫu thông tin Trong đó, giải thuật khai phá tìm kiếm các mẫu đáng quan tâm theo dạng xác định như các luật, phân lớp, hồi quy, cây quyết định,
2.1.3.1 Phân lớp (phân loại – classification)
Là việc xác định một hàm ánh xạ từ một mẫu dữ liệu vào một trong
số các lớp đã được biết trước đó Mục tiêu của thuật toán phân lớp là tìm
ra mối quan hệ nào đó giữa thuộc tính dự báo và thuộc tính phân lớp Do
Trang 24đó quá trình phân lớp có thể sử dụng mối quan hệ này để dự đoán lớp cho các mẫu mới Các tri thức được phát hiện biểu diễn dưới dạng các luật
theo cách sau: “Nếu các thuộc tính dự báo của một mẫu thoả mãn điều kiện
của các tiền đề thì mẫu này nằm trong lớp chỉ ra trong kết luận”
Ví dụ: Một mẫu biểu diễn thông tin về nhân viên có các thuộc tính dự báo là: họ tên, tuổi, giới tính, trình độ học vấn, … và thuộc tính phân loại là trình độ lãnh đạo của nhân viên
2.1.3.2 Hồi qui (regression)
Là việc học một hàm ánh xạ từ một mẫu dữ liệu thành một biến dự đoán có giá trị thực Nhiệm vụ của hồi quy tương tự như phân lớp, điểm khác nhau chính là ở chỗ thuộc tính để dự báo là liên tục chứ không phải rời rạc Việc dự báo các giá trị số thường được làm bởi các phương pháp thống
kê cổ điển, chẳng hạn như hồi quy tuyến tính Tuy nhiên, phương pháp mô hình hoá cũng được sử dụng, ví dụ: cây quyết định
Ứng dụng của hồi quy là rất nhiều, ví dụ: dự đoán số lượng sinh vật phát quang hiện thời trong khu rừng bằng cách dò tìm vi sóng bằng các thiết bị cảm biến từ xa; ước lượng sác xuất người bệnh có thể chết bằng cách kiểm tra các triệu chứng; dự báo nhu cầu của người dùng đối với một sản phẩm, …
Trang 25tả đặc trưng thể hiện theo luật có dạng sau: “Nếu một mục thuộc về lớp đã chỉ trong tiền đề thì mục đó có tất cả các thuộc tính đã nêu trong kết luận” Lưu ý rằng luật dạng này có các khác biệt so với luật phân lớp Luật phát hiện đặc trưng cho lớp chỉ sản sinh khi các mục đã thuộc về lớp đó
2.1.3.5 Mô hình hoá sự phụ thuộc (dependency modeling)
Là việc tìm kiếm một mô hình mô tả sự phụ thuộc giữa các biến,
thuộc tính theo hai mức: Mức cấu trúc của mô hình mô tả (thường dưới
dạng đồ thị) Trong đó, các biến phụ thuộc bộ phận vào các biến khác Mức
định lượng mô hình mô tả mức độ phụ thuộc Những phụ thuộc này thường
được biểu thị dưới dạng theo luật “nếu - thì” (nếu tiền đề là đúng thì kết luận
đúng) Về nguyên tắc, cả tiền đề và kết luận đều có thể là sự kết hợp logic của các giá trị thuộc tính Trên thực tế, tiền đề thường là nhóm các giá trị thuộc tính và kết luận chỉ là một thuộc tính Hơn nữa hệ thống có thể phát hiện các luật phân lớp trong đó tất cả các luật cần phải có cùng một thuộc tính do người dùng chỉ ra trong kết luận
Quan hệ phụ thuộc cũng có thể biểu diễn dưới dạng mạng tin cậy Bayes Đó là đồ thị có hướng, không chu trình Các nút biểu diễn thuộc tính và trọng số của liên kết phụ thuộc giữa các nút đó
2.1.3.6 Phát hiện sự biến đổi và độ lệch (change and deviation dectection)
Nhiệm vụ này tập trung vào khám phá hầu hết sự thay đổi có nghĩa dưới dạng độ đo đã biết trước hoặc giá trị chuẩn, phát hiện độ lệch
Trang 26đáng kể giữa nội dung của tập con dữ liệu thực và nội dung mong đợi Hai
mô hình độ lệch hay dùng là lệch theo thời gian hay lệch theo nhóm Độ
lệch theo thời gian là sự thay đổi có ý nghĩa của dữ liệu theo thời gian Độ lệch theo nhóm là sự khác nhau của giữa dữ liệu trong hai tập con dữ liệu,
ở đây tính cả trường hợp tập con dữ liệu này thuộc tập con kia, nghĩa xác định dữ liệu trong một nhóm con của đối tượng có khác đáng kể so với toàn
bộ đối tượng không? Theo cách này, sai sót dữ liệu hay sai lệch so với giá trị thông thường được phát hiện
Vì những nhiệm vụ này yêu cầu số lượng và các dạng thông tin rất khác nhau nên chúng thường ảnh hưởng đến việc thiết kế và chọn phương pháp khai phá dữ liệu khác nhau Ví dụ như phương pháp cây quyết định (sẽ được trình bày dưới đây) tạo ra được một mô tả phân biệt được các mẫu giữa các lớp nhưng không có tính chất và đặc điểm của lớp
2.1.4 Tiến trình khai phá dữ liệu
Quy trình phát hiện tri thức thường tuân theo các bước sau:
Hình 2.1 Quy trình phát hiện tri thức
Trang 27Bước thứ nhất: Hình thành, xác định và định nghĩa bài toán Là tìm
hiểu lĩnh vực ứng dụng từ đó hình thành bài toán, xác định các nhiệm vụ cần phải hoàn thành Bước này sẽ quyết định cho việc rút ra được các tri thức hữu ích và cho phép chọn các phương pháp khai phá dữ liệu thích hợp với mục đích ứng dụng và bản chất của dữ liệu
Bước thứ hai: Thu thập và tiền xử lý dữ liệu Là thu thập và xử lý thô,
còn được gọi là tiền xử lý dữ liệu nhằm loại bỏ nhiễu (làm sạch dữ liệu), xử
lý việc thiếu dữ liệu (làm giàu dữ liệu), biến đổi dữ liệu và rút gọn dữ liệu nếu cần thiết, bước này thường chiếm nhiều thời gian nhất trong toàn
bộ qui trình phát hiện tri thức Do dữ liệu được lấy từ nhiều nguồn khác nhau, không đồng nhất, … có thể gây ra các nhầm lẫn Sau bước này, dữ
liệu sẽ nhất quán, đầy đủ, được rút gọn và rời rạc hoá Bước thứ ba: Khai phá
dữ liệu, rút ra các tri thức Là khai phá dữ liệu, hay nói cách khác là trích ra
các mẫu hoặc/và các mô hình ẩn dưới các dữ liệu Giai đoạn này rất quan trọng, bao gồm các công đoạn như: chức năng, nhiệm vụ và mục đích của khai phá dữ liệu, dùng phương pháp khai phá nào? Thông thường, các bài toán khai phá dữ liệu bao gồm: các bài toán mang tính mô tả - đưa ra tính chất chung nhất của dữ liệu, các bài toán dự báo - bao gồm cả việc phát hiện các suy diễn dựa trên dữ liệu hiện có Tuỳ theo bài toán xác định được
mà ta lựa chọn các phương pháp khai phá dữ liệu cho phù hợp
Bướcthứtư: Sử dụng các tri thức phát hiện được Là hiểu tri thức đã
tìm được, đặc biệt là làm sáng tỏ các mô tả và dự đoán Các bước trên có thể lặp đi lặp lại một số lần, kết quả thu được có thể được lấy trung bình trên tất cả các lần thực hiện Các kết quả của quá trình phát hiện tri thức có thể được đưa và ứng dụng trong các lĩnh vực khác nhau Do các kết quả có thể
là các dự đoán hoặc các mô tả nên chúng có thể được đưa vào các hệ thống
Trang 28hỗ trợ ra quyết định nhằm tự động hoá quá trình này Tóm lại: KDD là một
quá trình kết xuất ra tri thức từ kho dữ liệu mà trong đó khai phá dữ liệu là công đoạn quan trọng nhất
2.2 Một số kỹ thuật phân lớp dữ liệu
2.2.1 Khái niệm phân lớp
Phân lớp dữ liệu là kỹ thuật dựa trên tập huấn luyện và những giá trị hay là nhãn của lớp trong một thuộc tính phân lớp và sử dụng nó trong việc phân lớp dữ liệu mới Phân lớp cũng là tiên đoán loại lớp của nhãn Bên cạnh kỹ thuật phân lớp có một hình thức tương tự là kỹ thuật tiên đoán, kỹ thuật tiên đoán khác với phân lớp ở chỗ phân lớp chỉ liên quan đến tiên đoán loại lớp của nhãn còn kỹ thuật tiên đoán mô hình những hàm đánh giá liên tục
Kỹ thuật phân lớp được tiến hành bao gồm 2 bước: Xây dựng mô hình và sử dụng mô hình
Xây dựng mô hình: là mô tả một tập những lớp được định nghĩa
trước trong đó: mỗi bộ hoặc mẫu được gán thuộc về một lớp được định nghĩa trước như là được xác định bởi thuộc tính nhãn lớp, tập hợp của những
bộ được sử dụng trong việc sử dụng mô hình được gọi là tập huấn luyện
Mô hình được biểu diễn là những luật phân lớp, cây quyết định và những công thức toán học
Sử dụng mô hình: Việc sử dụng mô hình phục vụ cho mục đích phân lớp
dữ liệu trong tương lai hoặc phân lớp cho những đối tượng chưa biết đến Trước khi sử dụng mô hình người ta thường phải đánh giá tính chính xác của mô hình trong đó nhãn được biết của mẫu kiểm tra được so sánh với kết quả phân lớp của
mô hình, độ chính xác là phần trăm của tập hợp mẫu kiểm tra mà phân loại đúng bởi mô hình, tập kiểm tra là độc lập với tập huấn luyện
Trang 29Thực tế đặt ra nhu cầu là từ một cơ sở dữ liệu với nhiều thông tin
ẩn, con người có thể trích rút ra các quyết định nghiệp vụ thông minh Phân lớp và dự đoán là hai dạng của phân tích dữ liệu nhằm trích rút ra một mô hình mô tả các lớp dữ liệu quan trọng hay dự đoán xu hướng dữ liệu tương lai Phân lớp dự đoán giá trị của những nhãn xác định (categorical label) hay những giá trị rời rạc (discrete value), có nghĩa là phân lớp thao tác với những đối tượng dữ liệu mà có bộ giá trị mà biết trước Trong khi
đó, dự đoán thì xây dựng lại mô hình với các hàm nhận giá trị liên tục Ví
dụ mô hình phân lớp dự báo thời tiết có thể cho biết thời tiết ngày mai là mưa hay nắng dựa vào những thông số độ ẩm, sức gió, nhiệt độ,… của ngày hôm nay và ngày trước đó Hay nhờ vào các luật về xu hướng mua hàng của khách hàng trong siêu thị, các nhân viên kinh doanh có thể ra những quyết sách đúng đắn về lượng mặt hàng cũng như chủng loại bày bán Một
mô hình dự đoán có thể dự đoán được lượng tiền tiêu dùng của khách hàng tiềm năng dựa trên những thông tin về thu nhập và nghề nghiệp của khách hàng Trong những năm qua phân lớp dữ liệu đã thu hút sự quan tâm các nhà nghiên cứu trong nhiều lĩnh vực khác nhau như học máy (machine learning),
hệ chuyên gia (expert system), thống kê (statistics)… Công nghệ này cũng
đã ứng dụng trong nhiều lĩnh vực khác nhau như: thương mại, nhà băng, kinh doanh, nghiên cứu thị trường, bảo hiểm, y tế, giáo dục … Phần lớn các thuật toán ra đời trước đều sử dụng cơ chế dữ liệu cư trú trong bộ nhớ (memory resident), thường thao tác với lượng dữ liệu nhỏ Một số thuật toán
ra đời sau này đã sử dụng kỹ thuật cư trú trên đĩa cải thiện đáng kể khả năng mở rộng của thuật toán với tập dữ liệu lớn lên tới hàng tỉ bản ghi
Trang 30Xác định được mức độ, tỉ lệ phần trăm lương thông tin rác khi hệ thống tiếp nhận thư
Trong lĩnh vực y khoa, chúng ta hy vọng là tránh được các phẩu thuật do chẩn đoán sai lầm, do vậy một hệ thống chẩn đoán độc lập, đáng tin cậy dựa vào các triệu chứng bên ngoài là rất cần thiết
Dự đoán trước để đưa ra các quyết định đầu tư tín dụng hay mua bán chứng khoán
2.2.3 Các tiêu chí để đánh giá thuật toán phân lớp
Tronng từng ứng dụng cu thể cần lựa chọn mô hính phân lớp phù hợp Việc lựa chọn phải dựa trên căn cứ so sánh các mô hình phân lớp với nhau theo các tiêu chuẩn sau:
Độ chính xác dự đoán (predictive accuracy): Độ chính xác là khả năng của mô hình để dự đoán chính xác nhãn lớp của dữ liệu mới hay dữ liệu chưa biết
Tốc độ (speed): Tốc độ là những chi phí tính toán liên quan đến quá trình tạo ra và sử dụng mô hình
Sức mạnh (robustness): Sức mạnh là khả năng mô hình tạo ra những
dự đoán đúng từ những dữ liệu nhiễu hay dữ liệu với những giá trị đặc biệt
Trang 31Khả năng mở rộng (scalability): Khả năng mở rộng là khả năng thực thi hiệu quả trên lượng lớn dữ liệu của mô hình đã học
Tính hiểu được (interrpretability): Tính hiểu được là mức độ hiểu
và hiểu rõ những kết quả sinh ra bởi mô hình đã học
Tính đơn giản (simplicity): Tính đơn giản liên quan đến kích thước của cây quyết định hay độ đo cô đọng của các luật
Trong các tiêu chuẩn trên, khả năng mở rộng của mô hình phân lớp được nhấn mạnh và chú trọng phát triển, đặc biệt với cây quyết định
2.2.4 Các phương pháp đánh giá độ chính xác của mô hình phân lớp
Ước lượng độ chính xác của bộ phân lớp là quan trọng ở chỗ nó cho phép dự đoán được độ chính xác của các kết quả phân lớp những dữ liệu tương lai Độ chính xác còn giúp so sánh các mô hình phân lớp khác nhau Luận văn này đề cập đến hai phương pháp đánh giá phổ biến là holdout và k-fold cross-validation Cả hai kỹ thuật này đều dựa trên các phân hoạch ngẫu nhiên tập dữ liệu ban đầu
Trong phương pháp holdout, dữ liệu đưa ra được phân chia ngẫu nhiên thành hai phần: tập dữ liệu đào tạo và tập dữ liệu kiểm tra Thông thường 2/3 dữ liệu cấp cho tập dữ liệu đào tạo, phần còn lại cấp cho tập
dữ liệu kiểm tra
Hình 2.2 Ước lượng độ chính xác của mô hình phân lớp với
phương pháp holdout
Tập đào tạo
Dữ liệu
Trích rút phân lớp
Ước độ chính xác Tập kiểm
thử
Trang 32Trong phương pháp k- fold cross-validation tập dữ liệu ban đầu được chia ngẫu nhiên thành k tập con (fold) cĩ kích thước xấp xỉ nhau S1, S2, … Sk Quá trình học và kiểm tra được thực hiện k lần Tại lần lặp thứ i,
Si là tập dữ liệu kiểm tra, các tập cịn lại được hợp thành tập dữ liệu đào tạo
Cĩ nghĩa là, đầu tiên việc dạy được thực hiện trên các tập S2, S3,… , Sk, sau đĩ kiểm tra trên tập S1; tiếp tục quá trình dạy được thực hiện trên tập S1, S3, S4,…., Sk, sau đĩ kiểm tra trên tập S2; và cứ tiếp tục
Độ chính xác là tồn bộ số phân lớp đứng từ k lần lặp chỉa tổng số mẫu của tập dữ liệu ban đầu
2.3 Phân lớp dựa trên phương pháp học Nạve bayes
2.3.1 Giới thiệu
Phân lớp dựa trên phương pháp học Nạve Bayes là phương pháp phân loại dựa vào xác suất được áp dụng nhiều nhất lĩnh vực học máy Trong một số lĩnh vực áp dụng thì khả năng của nĩ cĩ thể so sánh với các phương pháp học khác như mạng nơron hoặc cây quyết định và Support vector machine
Phân lớp dựa trên phương pháp học Nạve Bayes được áp dụng cho quá trình học trong các trường hợp mà ở đo mỗi thể hiện được mơ tả bởi một kết hợp các giá trị thuộc tính và hàm đích f(x) cĩ thể nhân bất kỳ giá trị nào trong tập hữu hạn V Hàm đích được cung cấp một tập dữ liệu học cùng với một thể hiện mới với một bộ giá trị của các thuộc tính
<a1,a2,….,an> Bộ phân lớp sẽ được yêu cầu dự đốn giá trị hàm đích hoặc lớp của thể hiện mới này
Cách tiếp cận để phân lớp một thể hiện mới là gán giá trị đích cĩ xác suất cao nhất vMAP cho thể hiện mới này
Trang 33VMAP = arg max P(v j | a1 , a2 , , an ) v j
Có hai số hạng mà chúng ta cần phải dự đoán trong biểu thức (2.3.2), đó
là P(vj) và P(a1,a2,….,an|vj) Chúng ta nhận thấy rằng có thể dễ dàng đoán được mỗi P(vj) bằng cách đếm tần số xuất hiện của giá trị đích vj trong tập
dữ liệu học Tuy nhiên dự đoán các số hạng khác nhau P(a1,a2,…,an|vj) theo cách này là không khả thi nếu chúng ta không có tập dữ liệu học rất lớn Vấn đề là ở chỗ số hạng này tương đương với số các thể hiện có thể có nhân với số các giá trị đích có thể có
Trang 34Do vậy, chúng ta cần quan sát nhiều lần mọi thể hiện trong khơng gian thể hiện để cĩ được các kết quả dự đốn tin cậy
2.3.2 Bộ phân lớp Nạve Bayes
Bộ phân lớp Nạve Bayes dựa trên việc đơn giản hĩa giả định ban đầu
là các giá trị thuộc tính độc lập điều kiện với giá trị đích cho trước Nĩi cách khác, chúng ta giả sử rằng với giá trị đích cho trước của một thể hiện, xác suất của bộ kết hợp quan sát được a1,a2,…an chỉ là tích của các khả
năng đối với các thuộc tính riêng biệt: P(a1,a2…an|vj) = i P(ai | vi ) Sử
dụng đẳng thức này để thay thế vào đẳng thức (2.3.2), chúng ta sẽ cĩ cách tiếp cận được sử dụng bởi bộ phân lớp nạve bayes
VNB = arg max P(v j ) P(ai | v j ) (2.3.3)
Trong đĩ, vNB: giá trị đích được cho bởi bộ phân lớp nạve bayes Lưu ý rằng trong bộ phân lớp nạve bayes số lượng các số hạng phân biệt P(ai|vj) cần phải được dự đốn từ tập dữ liệu học chỉ là số các giá trị riêng biệt của thuộc tính nhân với số các giá trị đích riêng biệt (một số nhỏ hơn nhiều so với cách ước đốn các số hạng P(a1,a2,…,an|vj) như trước đây
Tĩm lại, bộ phân lớp nạve Bayes liên quan đến một bước học mà trong đĩ các số hạng P(vj) và P(a1,a2,…,an|vj) được ước đốn dựa trên tần
số xuất hiện của chúng trên tồn bộ tập dữ liệu học Tập các dự đốn này tương ứng với kết luận được học Kết luận này sau đĩ được sử dụng để phân lớp thể hiện mới bằng cách áp dụng luật (2.3.3) Bất kỳ khi nào giả định của nạve Bayes các điều kiện độc lập được thỏa mãn thì phân lớp nạve Bayes vNB đồng nhất với phân lớp MAP
Một ưu điểm của phương pháp nạve Bayes so với các phương pháp học khác là phường pháp nạve Bayes khơng cĩ sự tìm kiếm khơng rõ ràng nào trong khơng gian các giả định cĩ thể cĩ