Nghiên cưa bài toán phân lớp dữ liệu lp svm đối với dữ liệu không khả tách tuyến

60 0 0
Nghiên cưa bài toán phân lớp dữ liệu lp   svm đối với dữ liệu không khả tách tuyến

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Các thông tin này được tổ chức thành cặp dữ liệu có gán nhãn data, label, đây là nhóm thuật toán khá phổ biến trong các thuật toán Machine Learning và có nhiều ứng dụng liên quan đến bài

Trang 1

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

-o0o -

VŨ THỊ HOA

NGHIÊN CỨU BÀI TOÁN PHÂN LỚP DỮ LIỆU lP - SVM ĐỐI VỚI DỮ LIỆU KHÔNG KHẢ TÁCH TUYẾN TÍNH

LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH

Thái Nguyên - năm 2022

Trang 2

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

ĐỒNG VĂN THẮNG

NGHIÊN CỨU BÀI TOÁN PHÂN LỚP DỮ LIỆU lP - SVM ĐỐI VỚI DỮ LIỆU KHÔNG KHẢ TÁCH TUYẾN TÍNH

Chuyên ngành: KHOA HỌC MÁY TÍNH Mã số: 8 48 01 01

LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH

NGƯỜI HƯỚNG D N KHOA HỌC TS Nguyễn Đình Dũng

Trang 3

LỜI CẢM ƠN

Luận văn này được hoàn thành tại Trường Đại học Công nghệ Thông tin và Truyền thông dưới sự hướng dẫn của TS Nguyễn Đình Dũng Tác giả xin bày tỏ lòng biết ơn tới các thầy cô giáo thuộc Trường Đại học Công nghệ Thông tin và Truyền thông đã tạo điều kiện, giúp đỡ tác giả trong quá trình học tập và làm luận văn tại Trường, đặc biệt tác giả xin bày tỏ lòng biết ơn tới TS Nguyễn Đình Dũng đã tận tình hướng dẫn và cung cấp nhiều tài liệu cần thiết để tác giả có thể hoàn thành luận văn đúng thời hạn

Xin chân thành cảm ơn anh chị em học viên cao học và bạn bè đồng nghiệp đã trao đổi, khích lệ tác giả trong quá trình học tập và làm luận văn tại Trường Đại học Công nghệ Thông tin và Truyền thông – Đại học Thái Nguyên

Cuối cùng tác giả xin gửi lời cảm ơn đến gia đình, những người đã luôn bên cạnh, động viên và khuyến khích tôi trong quá trình thực hiện đề tài

Thái Nguyên, ngày 10 tháng 8 năm 2022

Học viên cao học

Vũ Thị Hoa

Trang 4

LỜI CAM ĐOAN

Tôi xin cam đoan luận văn này do chính tôi thực hiện, dưới sự hướng dẫn khoa học của TS Nguyễn Đình Dũng, các kết quả lý thuyết được trình bày trong luận văn là sự tổng hợp từ các kết quả đã được công bố và có trích dẫn đầy đủ, nếu sai tôi hoàn toàn chịu trách nhiệm

Thái Nguyên, tháng 8 năm 2022

Học viên

Vũ Thị Hoa

Trang 5

CHƯƠNG 1 TỔNG QUAN VỀ PHÂN LỚP DỮ LIỆU 10

1.1 Giới thiệu về phân lớp dữ liệu 10

1.2 Lý thuyết tối ưu lồi 12

1.2.1 Một số khái niệm về tối ưu lồi 12

1.2.2 Bài toán tối ưu lồi 13

1.3 Thư viện CVXOPT trong python giải bài toán tối ưu lồi 15

1.3.1 Quy hoạch tuyến tính 15

1.3.2 Quy hoạch toàn phương 16

1.4 Kết luận chương 1 18

CHƯƠNG 2 PHÂN LỚP DỮ LIỆU SỬ DỤNG MÁY HỖ TRỢ VÉC TƠ 19

2.1 Bài toán tối ưu SVM 19

2.2 Hàm đối ngẫu Lagrange 22

2.3 Bài toán đối ngẫu SVM 23

2.4 Phương pháp tìm nghiệm cho bài toán SVM 25

2.4.1 Tìm nghiệm theo công thức 26

2.4.2 Tìm nghiệm có sử dụng thư viện SKLEARN 28

2.5 Bài toán SVM biên mềm 29

2.5.1 Phương pháp nhân tử Lagrange 30

2.5.2 Phương pháp Gradient Descent 35

2.6 Kết luận chương 2 39

CHƯƠNG 3 PHƯƠNG PHÁP HÀM NHÂN VÀ BÀI TOÁN lP-SVM 40

Trang 6

3.1 Phương pháp hàm nhân 40

3.1.1 Khái niệm hàm nhân 40

3.1.2 Tính chất hàm nhân và một số hàm nhân thông dụng 42

3.2 Bài toán lp-SVM 43

3.2.1 Phát biểu bài toán 43

3.2.2 Bài toán đối ngẫu Lagrange 44

3.2.3 Phương pháp hàm nhân 46

3.3 Một số kết quả tính toán thực nghiệm 48

3.3.1 Bài toán phân biệt giới tính 48

3.3.2 Bài toán XOR 51

3.4 Kết luận chương 3 54

KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 56

TÀI LIỆU THAM KHẢO 57

Trang 7

DANH MỤC CÁC TỪ VIẾT TẮT Từ hoặc

SVM Support Vector Machine Máy véc tơ hỗ trợ

CVXOPT Convex Optimization Thƣ viện CVXOPT trong Python KKT Karush-Kuhn-Tucker Hệ điều kiện Karush-Kuhn-Tucker

SKLEARN Scikit-learn Thƣ viện mã nguồn mở dành cho học máy

lp - SVM lP - Support Vector Machine Bài toán SVM trong không gian lp

Trang 8

DANH MỤC CÁC HÌNH ẢNH

Hình 1.1 Sử dụng thư viện CVXOPT giải bài toán quy hoạch toàn phương 17 Hình 2.2 Tìm bộ phân lớp tuyến tính theo công thức 28 Hình 2.2 Dữ liệu không khả tách tuyến tính (a) và gần khả tách tuyến tính (b) 29 Hình 3.1 Các ví dụ mẫu trong AR Face database thu gọn 49

Trang 9

MỞ ĐẦU

Trong những năm gần đây, Học máy (Machine Learning) là lĩnh vực được nhiều chuyên gia trong và ngoài nước quan tâm Đã có nhiều công trình công bố có giá trị học thuật, ứng dụng cao trong đời sống xã hội, điều này như là một bằng chứng của cuộc cách mạng công nghiệp lần thứ tư Các thuật toán học máy thường được chia làm 4 nhóm: học có giám sát (Supervised learning), học không giám sát (Unsupervised learning), học bán giám sát (Semi-supervised lerning) và học tăng cường (Reinforcement learning) Trong đó, học có giám sát là thuật toán dự đoán đầu ra của một dữ liệu mới dựa trên các thông tin đầu vào đã biết trước Các thông tin này được tổ chức thành cặp dữ liệu có gán nhãn (data, label), đây là nhóm thuật toán khá phổ biến trong các thuật toán Machine Learning và có nhiều ứng dụng liên quan đến bài toán phân lớp [1] (Bài toán phân biệt giới tính dựa trên ảnh khuôn mặt, bài toán phân biệt 2 chữ số viết tay,…), có thể kể đến một số thuật toán tiêu biểu: thuật toán K láng giềng gần nhất (K-nearest neighbors), thuật toán học Perceptron và hồi quy Logistic, hồi quy Softmax và một trong những thuật toán phân lớp phổ biến nhất là thuật toán SVM (Máy vec tơ hỗ trợ - Support Vector Machine)

Đối với bài toán phân lớp [2], ta giả sử rằng có hai lớp khác nhau được mô tả bởi các điểm trong không gian nhiều chiều, hai lớp này là khả tách tuyến tính, tức tồn tại một siêu phẳng phân chia chính xác hai lớp đó Bài toán đặt ra là tìm một siêu mặt phẳng phân chia hai lớp đó sao cho tất cả các điểm thuộc một lớp nằm về cùng một phía của siêu phẳng và ngược phía với toàn bộ các điểm thuộc lớp còn lại, trong đó siêu phẳng phải đảm bảo là mặt phân chia tốt nhất theo một tiêu chí nào đó Bài toán tối ưu như vậy được gọi là bài toán tối ưu SVM Nếu siêu phẳng phân chia có dạng là   {z Rd:w z+b=0}T thì hàm mục tiêu là

Trang 10

Bài toán này còn gọi là bài toán tối ưu SVM biên cứng (Hard margin SVM) Trong một số trường hợp, tập dữ liệu là tập không khả tách tuyến tính hoặc gần khả tách tuyến tính [3] thì bài toán tối ưu là không khả lồi, tức là tập khả lồi là tập rỗng, khi đó bài toán tối ưu SVM trở nên vô nghiệm, lúc này biên phân chia bởi siêu phẳng còn gọi là biên cứng (Hard margin) Khắc phục hạn chế này, ta có thể chấp nhận một số điểm dữ liệu nằm ở gần biên giữa hai lớp lấn sang phía bên kia biên hay còn nói cách khác là chấp nhận một số điểm dữ liệu thuộc vùng không khả tách, biên tạo bởi mặt phân cách và mặt biên được gọi là biên mềm (soft margin)

Với bài toán SVM biên mềm (soft margin SVM), hàm mục tiêu sẽ có thêm một số hạng nhằm tối thiểu dữ liệu thuộc vùng không khả tách Từ đó ta có

ở đây C là hằng số dương dùng để điều chỉnh biên (margin) và dữ liệu thuộc

vùng không khả tách, Remp(H) là hàm độ đo sự không an toàn của những điểm nhiễu của điểm dữ liệu thứ i, nếu điểm xi thuộc lớp phân tách thì i 0

Khi nghiên cứu về bài toán tối ưu SVM biên mềm, ta có hai cách tiếp cận khác nhau: Hướng tiếp cận thứ nhất [4] là đưa về bài toán tối ưu không ràng buộc và sử dụng phương pháp Gradient descent để tìm lời giải tối ưu cho bài toán Hướng tiếp cận thứ hai là giải một bài toán tối ưu có ràng buộc bằng cách giải bài toán đối ngẫu giống như đối với việc tìm lời giải cho bài toán tối ưu SVM biên cứng, phương pháp giải dựa vào bài toán đối ngẫu là cơ sở cho phương pháp hàm nhân (kernel) SVM khi tập dữ liệu không khả tách tuyến tính hoặc gần khả tách tuyến tính [5]

Trang 11

Phương pháp hàm nhân là tìm một phép biến đổi không gian sao cho dữ liệu ban đầu giữa hai lớp là không khả tách tuyến tính được biến đổi sang không gian mới Ở không gian mới này, dữ liệu trở nên khả tách, khi đó, ta có thể dùng các bộ phân lớp thông thường như PLA, hồi quy Logistic, hay SVM biên cứng/mềm để phân lớp dữ liệu Các hàm nhân thường tạo ra dữ liệu mới có số chiều cao hơn số chiều của dữ liệu ban đầu, thậm chí là vô hạn chiều Nếu tính toán các hàm này trực tiếp, chắc chắn chúng ta sẽ gặp các vấn đề về bộ nhớ và hiệu năng tính toán Có một cách tiếp cận là sử dụng các hàm nhân mô tả quan hệ giữa hai điểm dữ liệu bất kỳ trong không gian mới, thay vì đi tính toán trực tiếp từng điểm dữ liệu trong không gian mới

Hiện nay, đã có nhiều công trình mở rộng bài toán (2) từ chuẩn Euclide l2 sang dạng tổng quát lp ([6]-[9]), khi sử dụng chuẩn l l1,  [9] thì bài toán SVM dẫn về bài toán quy hoạch tuyến tính, sử dụng thuật toán SVM sẽ cho ta bộ phân lớp thưa mà điều này rất dễ dẫn tới hiện tượng quá khớp (Overfitting), đây là hiện tượng không mong muốn trong học máy

Trong luận văn này, học viên tập trung vào việc nghiên cứu bài toán phân

lớp SVM trong không gian l2, trên cơ sở những kết quả đạt được luận văn tiếp

tục mở rộng (2) từ chuẩn l2 sang chuẩn lp với 1  p , trong đó có sử dụng phương pháp hàm nhân để chuyển bài toán sang không gian mới mà tại đó tập dữ liệu là khả tách (tức là tồn tại nghiệm là một mặt phân tách tập dữ liệu thành 2 lớp, thường là phân tách phi tuyến) nhằm tìm được bộ phân lớp tối ưu cho bài toán:

Ngoài phần mở đầu, kết luận và tài liệu tham khảo, nội dung chính của luận văn được bố cục thành 3 chương:

Chương 1 trình bày tổng quan về phân lớp dữ liệu và các kiến thức cơ bản về tối ưu lồi được sử dụng trong luận văn;

Chương 2 là giới thiệu bài toán phân lớp dữ liệu sử dụng máy hỗ trợ véc tơ

Chương 3 là Phương pháp hàm nhân, bài toán lp-SVM và một số kết quả tính toán thực nghiệm

Trang 12

CHƯƠNG 1

TỔNG QUAN VỀ PHÂN LỚP DỮ LIỆU

Chương này giới thiệu tổng quan về phân lớp dữ liệu và các kiến thức nền tảng toán học phục vụ cho quá trình xây dựng mô hình phân lớp đó là lý thuyết tối ưu lồi Các kiến thức về lý thuyết tối ưu lồi được tham khảo chủ yếu từ tài liệu tham khảo [11] Bao gồm các nội dung chính sau:

 Giới thiệu về phân lớp dữ liệu  Lý thuyết tối ưu lồi

 Thư viện CVOPT trong python giải bài toán tối ưu lồi

1.1 Giới thiệu về phân lớp dữ liệu

Bài toán phân lớp là quá trình phân lớp một đối tượng dữ liệu vào một hay nhiều lớp đã cho trước nhờ một mô hình phân lớp

 Mô hình này được xây dựng dựa trên một tập dữ liệu được xây dựng trước đó có gán nhãn còn gọi là tập huấn luyện

 Quá trình phân lớp là quá trình gán nhãn cho đối tượng dữ liệu

Nhiệm vụ của bài toán phân lớp là cần tìm một mô hình phân lớp để khi

có dữ liệu mới thì có thể xác định được dữ liệu đó thuộc vào phân lớp nào

Có nhiều bài toán phân lớp dữ liệu như phân lớp nhị phân, phân lớp đa lớp, phân lớp đa trị

 Bài toán phân lớp nhị phân là bài toán gán nhãn dữ liệu cho đối tượng vào một trong hai lớp khác nhau dựa vào việc dữ liệu đó có hay không có các đặc trưng của bộ phân lớp

 Bài toán phân lớp đa lớp là quá trình phân lớp dữ liệu với số lượng lớp từ hai lớp trở lên Như vậy với từng dữ liệu phải xem xét và phân lớp chúng vào những lớp khác nhau chứ không phải là hai lớp như bài toán phân lớp nhị phân

Trang 13

Ứng dụng của bài toán này được sử dụng rộng rãi trong thực tế, ví dụ như bài toán nhận dạng khuôn mặt, nhận diện giọng nói, phát hiện email spam,

Để xây dựng được mô hình phân lớp và đánh giá được mô hình phải trải qua các quá trình sau:

Bước 1: Chuẩn bị tập dữ liệu huấn luyện và rút trích đặc trưng

Công đoạn này được xem là công đoạn quan trọng trong các bài toán về học máy Vì đây là đầu vào cho việc học để tìm ra mô hình của bài toán Chúng ta phải biết cần chọn ra những đặt trưng tốt của dữ liệu, lược bỏ những đặc trưng không tốt, gây nhiễu Vấn đề đặt ra là ước lượng số chiều của dữ liệu bao nhiêu là tốt hay nói cách khác là chọn bao nhiêu đặc trưng Nếu số chiều quá lớn gây khó khăn cho việc tính toán thì phải giảm số chiều của dữ liệu nhưng vẫn giữ được độ chính xác của dữ liệu

Ở bước này ta chuẩn bị bộ dữ liệu để kiểm tra trên mô hình Thông thường sẽ sử dụng kiểm tra chéo để chia tập dữ liệu thành hai phần, một phần phục vụ cho huấn luyện và phần còn lại phục vụ cho mục đích kiểm tra trên mô

hình Có hai cách thường sử dụng trong kiểm tra chéo là splitting và k-fold

Bước 2: Xây dựng mô hình phân lớp

Mục đích của mô hình huấn luyện là tìm ra hàm f(x) và thông qua hàm f tìm được để gán nhãn cho dữ liệu, bước này thường được gọi là bước huấn luyện: y=f(x)

Thông thường để xây dựng mô hình phân lớp cho bài toán này cần sử dụng các thuật toán học giám sát (supervised learning) như k-nearest neighbors, Neural Network, SVM, Decision tree, Naive Bayes

Bước 3: Kiểm tra dữ liệu với mô hình

Sau khi đã tìm được mô hình phân lớp ở bước 2, thì ở bước này sẽ đưa vào các dữ liệu mới để kiểm tra trên mô hình phân lớp

Trang 14

Bước 4: Đánh giá mô hình phân lớp và chọn ra mô hình tốt nhất

Bước cuối cùng là đánh giá mô hình bằng cách đánh giá độ chính xác của dữ liệu kiểm tra và dữ liệu huấn luyện thông qua mô hình tìm được Nếu không đạt được kết quả mong muốn thì phải thay đổi các tham số của các thuật toán học để tìm ra các mô hình tốt hơn và kiểm tra, đánh giá lại mô hình phân lớp, và cuối cùng chọn ra mô hình phân lớp tốt nhất cho bài toán

Nhằm phục vụ trình bày các lý thuyết ở chương 2 và chương 3, sau đây là một số kiến thức nền tảng toán học cơ bản liên quan đến học máy

1.2 Lý thuyết tối ưu lồi

1.2.1 Một số khái niệm về tối ưu lồi

Định nghĩa 1.1 Một đường thẳng đi qua hai điểm (hai véc tơ) a, b trong

được gọi là một tập lồi nếu D chứa mọi đoạn thẳng đi qua hai điểm bất kỳ của nó Tức là D lồi khi và chỉ khi ∀x, y ∈ D, λ ∈ [0, 1] ⇒ λx + (1 - λ)y ∈ D

Định nghĩa 1.4 Một tập D được gọi là tập affine nếu nó chứa mọi đường

thẳng đi qua hai điểm bất kỳ của nó, tức là

Trang 15

Một siêu phẳng sẽ chia không gian ra hai nửa không gian Nửa không gian

| a, x} là nửa không gian mở

Định nghĩa 1.8 Một tập D được gọi là nón nếu ∀λ > 0, ∀x ∈ D ⇒ λx ∈

D Một nón được gọi là nón lồi nếu nó đồng thời là một tập lồi Một nón được

gọi là nón nhọn nếu nó không chứa đường thẳng Nếu nón này là một tập lồi đa diện thì ta nói nó là nón lồi đa diện

Khi biến x là một ma trận, các hàm affine được định nghĩa có dạng:

chéo của một ma trận vuông, a là một ma trận có cùng chiều với x

Định nghĩa 1.11 Dạng toàn phương

Cho biến là một vector x, một dạng toàn phương là một hàm số có dạng:

Nếu A là một ma trận nửa xác định dương thì f(x) là một hàm lồi

1.2.2 Bài toán tối ưu lồi

a) Phát biểu bài toán

Các bài toán về học máy thường dẫn về các bài toán tối ưu, trong mục này trình bày một bài toán tối ưu tổng quát như sau:

Xét bài toán tìm điểm cực tiểu của một hàm lồi trên một tập lồi có dạng sau:

Trang 16

XR là một tập lồi đóng khác rỗng, f g, i là các hàm lồi hữu hạn trên

X , hj là các hàm affine hữu hạn và độc lập tuyến tính trên tập affine của X Bài toán (1.1) được hiểu là tìm một điểm *

Bài toán (1.1), (1.2) có thể đưa về đưa về bài toán tối ưu không ràng buộc bằng phương pháp nhân tử Lagrange, theo phương pháp này, ta đưa Bài toán (1.1), (1.2) về tìm điểm cực tiểu của hàm sau: Bài toán tìm điểm tối ưu của (1.3) có thể giải được bằng cách giải hệ phương trình đạo hàm bằng không theo từng thành phần, tức là tìm nghiệm của hệ phương trình x, , L x( , , ) 0

Việc giải Bài toán (1.1) cho ta điểm tối ưu *

x , điểm tối ưu này có thể là điểm tối ưu toàn cục hoặc điểm tối ưu cục bộ Điểm tối ưu cục bộ nếu tồn tại

x được gọi là điểm tối ưu toàn cục Trong bài toán tối ưu lồi, điểm tối ưu cục bộ là điểm tối ưu toàn cục

b) Điều kiện tối ưu cho hàm mục tiêu

Xét bài toán tối ưu toàn cục (1.1) Có bốn trường hợp xảy ra:

x sao cho *

f xinff x

Trang 17

Như vậy để Bài toán (1.1), (1.2) giải được ta cần đặt ra các điều kiện để

bài toán thuộc trường hợp (iv), các kết quả về điều kiện này được đưa ra trong

[11] và được thể hiện bởi định lý sau:

 và các điều kiện đạo hàm triệt tiêu, điều kiện độ lệch bù cũng là điều kiện đủ để điểm chấp nhận *

x là nghiệm tối ưu của Bài toán (1.1)

1.3 Thư viện CVXOPT trong python giải bài toán tối ưu lồi

CVXOPT là một thư viện trên Python giúp giải rất nhiều các bài toán Thư viện này được dùng để tối ưu nhiều bài toán tối ưu lồi, dễ sử dụng và thời gian chạy tương đối nhanh, mục này giới thiệu thư viện CVOPT là công cụ giải các bài toán tối ưu lồi, bao gồm các bài toán thuộc lớp các bài toán quy hoạch tuyến tính và quy hoạch toàn phương Quy hoạch tuyến tính và quy hoạch toàn phương đóng một vài trò quan trọng trong toán tối ưu, được sử dụng nhiều trong các thuật toán Machine Learning

1.3.1 Quy hoạch tuyến tính

Dạng tổng quát của Bài toán quy hoạch tuyến tính là

Sau đây là một bài toán quy hoạch tuyến tính và sử dụng thư viện CVXOPT để giải bài toán

xarg max {2x 3x 5}

Trang 18

Sau khi đưa bài toán về dạng tổng quát, ta thực hiện thủ tục sau from cvxopt import matrix, solvers

Chạy đoạn chương trình ta được kết quả x1=2.67; x2 =7.33 là nghiệm tối ưu

của bài toán

1.3.2 Quy hoạch toàn phương

Bài toán quy hoạch toàn phương có dạng tổng quát như sau:

Trang 19

Để hàm mục tiêu là hàm lồi thì P là ma trận nửa xác định dương Dễ thấy quy hoạch tuyến tính là trường hợp đặc biệt của quy hoạch toàn phương khi P là ma trận không

Sau đây là một bài toán quy hoạch toàn phương và sử dụng thư viện CVXOPT để giải bài toán

Miền ràng buộc D được mô tả như sau:

Hình 1.1 Sử dụng thư viện CVXOPT giải bài toán quy hoạch toàn phương

Giải bài toán này bằng thủ tục sau:

from cvxopt import matrix, solvers P = matrix([[1., 0.], [0., 1.]])

q = matrix([-10., -10.])

Trang 20

Chương này, học viên nhắc lại bài toán phân lớp dữ liệu bao gồm khái niệm về bài toán phân lớp, các bước để xây dựng được mô hình và đánh giá mô hình phân lớp

Ngoài ra, để thuận tiện cho việc trình bày lý thuyết trong các chương tiếp theo, luận văn trình bày một số khái niệm cơ bản về tối ưu lồi, các điều kiện tối ưu lồi Các bài toán quy hoạch tuyến tính, quy hoạch dạng toàn phương cũng được giới thiệu trong chương này, bên cạnh đó chương này cũng giới thiệu thư viện CVXOPT trong python giải bài toán tối ưu lồi Các vấn đề về tối ưu lồi cũng sẽ được nhắc lại trong chương 2 Cụ thể, trong chương 2, luận văn sẽ trình bày bài toán tối ưu SVM và lời giải tìm được nhờ việc giải bài toán đối ngẫu tương ứng

Trang 21

CHƯƠNG 2

PHÂN LỚP DỮ LIỆU SỬ DỤNG MÁY HỖ TRỢ VÉC TƠ

Chương này giới thiệu về máy hỗ trợ vec tơ SVM, bài toán đối ngẫu SVM và một số phương pháp giải bài toán SVM tìm bộ phân lớp dữ liệu Các kiến thức chương này được tham khảo chủ yếu từ tài liệu tham khảo [2], [5], [12] Bao gồm các nội dung chính sau:

 Bài toán tối ưu SVM  Hàm đối ngẫu Lagrange  Bài toán đối ngẫu SVM

 Phương pháp tìm nghiệm cho bài toán SVM  Bài toán SVM biên mềm

2.1 Bài toán tối ưu SVM

Quá trình phân lớp còn được gọi là quá trình gán nhãn cho các tập dữ liệu Nhiệm vụ của bài toán phân lớp dữ liệu là cần xây dựng một mô hình phân lớp để khi có một dữ liệu mới vào thì mô hình phân lớp sẽ cho biết dữ liệu đó thuộc lớp nào Có nhiều cách để biểu diễn mô hình phân lớp và có rất nhiều thuật toán để giải nó, có thể kể đến các thuật toán tiêu biểu như mạng nơ ron, cây quyết định, mạng Bayes,…, trong đó thuật toán máy hỗ trợ vect tơ (SVM) được coi là công cụ mạnh, phổ biến và đặc biệt thích hợp cho phân lớp dữ liệu lớn và nhiều chiều

Thuật toán SVM ban đầu được tìm ra bởi Vladimir N Vapnik [12] 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 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à một thuật toán phân loại nhị phân Trước hết ta xét bài toán phân lớp đơn giản nhất là phân lớp hai lớp C1, C2 với tập dữ liệu mẫu cho trước

Trang 22

Giả sử các cặp dữ liệu của tập dữ liệu huấn luyện là (x , ),iyii1, 2, ,N, trong đó xiRddữ liệu đầu vào của một điểm dữ liệu, yi là nhãn của điểm dữ liệu đó và có giá trị là 1 nếu xi thuộc lớp C1, có giá trị là -1 nếu xi thuộc lớp C2

Trong trường hợp tập dữ liệu (x , ),iyii1, 2, ,N là khả tách tuyến tính, tức là tồn tại một siêu phẳng phân chia các điểm dữ liệu về hai nửa không gian C1 và C2 Bài toán đặt ra là tìm một siêu phẳng phân tách tập dữ liệu thành hai lớp Để thực hiện phân tách, hiện nay đã có nhiều thuật toán và cho kết quả là nhiều siêu phẳng phân tách

Nhiều bài toán thực tế dẫn về việc tìm siêu phẳng phân tách tốt nhất theo một nghĩa nào đó Mô hình phân lớp SVM được xét đến trong luận văn này thì tiêu chuẩn của siêu phẳng phân tách là khoảng cách từ các điểm dữ liệu huấn luyện tới mặt phân tách là lớn nhất có thể, đây chính là ý tưởng phân tách biên rộng

Để xác định một bộ phân lớp tuyến tính ta sử dụng hàm tuyến tính có dạngyf(x)w,xb làm siêu phẳng phân tách, trong đó ve tơ w là vec tơ

trọng số, b được gọi là độ dịch Trong không gian hai chiều w,x0 tương ứng với đường thẳng đi qua gốc toạ độ, trong không gian ba chiều thì nó là mặt phẳng đi qua gốc toạ độ Siêu phẳng phân chia không gian thành hai không gian phụ thuộc vào dấu của f(x) và f(x) này được gọi là bộ phân lớp tuyến tính

Hình 2.1 Bộ phân lớp tuyến tính

Trang 23

Với mỗi cặp dữ liệu (x , )iyi , khoảng cách từ điểm đó tới mặt phân tách là

ta cần một siêu phẳng phân chia sao cho khoảng cách từ điểm gần

nhất của mỗi lớp tới siêu phẳng phân chia là như nhau, khoảng cách như nhau

này được gọi là margin

Việc margin rộng hơn sẽ mang lại hiệu ứng phân lớp tốt hơn đây chính là

điểm nổi bật mang lại kết quả phân loại tốt hơn so với mạng nơ ron một lớp (thuật toán học Perceptron) Theo nghĩa này thì bài toán tối ưu SVM chính là bài

toán đi tìm siêu phẳng phân chia sao cho margin là lớn nhất Khoảng cách

Trong (2.2), ta thay w bởi kw và b bởi kb trong đó k là một hằng số dương

thì siêu phẳng phân chia không thay đổi, tức khoảng cách từ từng điểm đến siêu

phẳng không đổi, tức margin không đổi Dựa trên tính chất này, ta giả sử:

yb  (2.3) Khi đó yi(w xTib) 1,  i 1, 2, , N và bài toán tối ưu (2.1) đưa về bài toán tối ưu có ràng buộc sau:

Trong bài toán (2.4), (2.5), hàm mục tiêu và các ràng buộc là hàm lồi nên nó là bài toán tối ưu lồi có ràng buộc thuộc lớp các bài toán quy hoạch toàn phương

Trang 24

Từ (2.4) dễ thấy hàm mục tiêu là lồi chặt vì w 22 w IwT , I là ma trận đơn vị có tính chất xác định dương Vì vậy bài toán (2.4), (2.5) có nghiệm duy nhất

và có thể tìm được nghiệm khi sử dụng thư viện CVXOPT của Python đã được

trình bày trong Chương 1 Tuy nhiên, việc giải bài toán này trở nên phức tạp khi số chiều d của không gian dữ liệu và số điểm dữ liệu N tăng lên cao Để khắc phục các hạn chế này thì thay vì giải bài toán (2.4), (2.5) ta đi giải bài toán đối ngẫu tương ứng vì hai lý do sau: Thứ nhất, bài toán đối ngẫu có những tính chất khiến nó được giải hiệu quả hơn Thứ hai, trong quá trình xây dựng bài toán đối ngẫu SVM có thể được áp dụng cho những bài toán mà dữ liệu không khả tách tuyến tính, tức là mặt phân chia không phải là một siêu phẳng mà có thể là các mặt có hình thù phức tạp hơn

2.2 Hàm đối ngẫu Lagrange

Trong chương 1, luận văn đã trình bày các điều kiện tồn tại nghiệm của bài toán tối ưu lồi, nếu bài toán lồi thoả mãn tiêu chuẩn Slater thì bài toán đối ngẫu cũng thoả mãn điều kiện Slater và nghiệm của bài toán chính là nghiệm của hệ điều kiện KKT Để đưa bài toán (2.4), (2.5) về bài toán đối ngẫu, ta sử dụng phương pháp nhân tử Lagrange

Phương pháp nhân tử Lagrange là phương pháp giúp tìm các điểm cực trị của hàm mục tiêu trên tập khả lồi của bài toán Nếu ta đưa được bài toán này về một bài toán không ràng buộc thì có thể tìm được nghiệm bằng cách giải hệ phương trình đạo hàm theo từng thành phần bằng 0 (giả sử rằng việc giải hệ phương trình này là khả thi)

Đối với Bài toán (2.4), (2.5) luôn luôn có một (siêu) mặt phẳng phân chia hai lớp nếu hai lớp đó là khả tách tuyến tính, tức bài toán có nghiệm, nên tập khả lồi của bài toán tối ưu (2.4) phải khác rỗng Tức luôn luôn tồn tại cặp (w0,b0) sao cho

1yi(w xTib )0, i 1, 2, , N

Trang 25

Hay có thể viết tương đương 1yi(2w xT0 i2b0) 1, i 1, 2, , N Từ đây, nếu ta chọn w12w ,0 b12b0 thì khi đó ta có 1yi(w x1Tib1)  1 0 Như vậy Bài toán (2.4), (2.5) thỏa mã điều kiện Slater và hàm Lagrang của bài toán sẽ có

Nếu ta ký hiệu ma trân A=[y1x1, y2x2, , yNxN], véc tơ 1=[1,1, ,1] thì

(2.9) có thể viết gọn lại như sau:

Đặt BA AT , dễ thấy TA AT B 22 0 nên B là ma trận nửa xác định

dương Vậy ta có hàm đối ngẫu Lagrange là

2.3 Bài toán đối ngẫu SVM

Từ hàm đối ngẫu Lagrange và các điều kiện (2.8) ta có bài toán đối ngẫu SVM sau:

Trang 26

Đây cũng là bài toán tối ưu lồi thuộc lớp các bài toán quy hoạch toàn

phương và hoàn toàn có thể giải được bằng thư viện CVXOPT như đã trình bày

trong Chương 1

Trong bài toán đối ngẫu này, số tham số phải tìm là N, là chiều của λ, tức

là số điểm dữ liệu Trong khi đó, với bài toán gốc (2.4)-(2.5), số tham số phải

tìm là d+1, là tổng số chiều của w và b, tức là số chiều của mỗi điểm dữ liệu

cộng với 1 Trong rất nhiều trường hợp, số điểm dữ liệu có được trong tập huấn luyện lớn hơn số chiều dữ liệu rất nhiều Nếu giải trực tiếp bằng các công cụ giải quy hoạch toàn phương, có thể bài toán đối ngẫu còn phức tạp hơn (tốn thời gian hơn) so với bài toàn gốc Tuy nhiên, điểm ưu việt của bài toán đối ngẫu này là

nhân SVM (Kernel SVM), tức là cho các bài toán mà dữ liệu không phải là khả

tách tuyến tính hoặc gấn khả tách tuyến tính Ngoài ra, dựa vào tính chất đặc biệt của hệ điều kiện KKT mà SVM có thể được giải bằng nhiều phương pháp hiệu

Trang 27

Những điểm thoả mãn (2.18) thường chiếm tỷ lệ không nhiều trong tập N điểm và chỉ cần dựa trên những điểm vec tơ này, ta hoàn toàn có thể xác định được siêu phẳng phân tách cần tìm Điều này cho thấy, hầu hết các i 0, vậy mặc dù vec tơ RN có thể có số chiều rất lớn, phần tử khác không là không đáng kể và vec tơ RN được gọi là vec tơ thưa, lúc này máy hỗ trợ vec tơ thuộc nhóm mô hình thưa Với những mô hình thưa thường có cách giải hiệu quả hơn các mô hình khác, đây chính là lý do mà bài toán đối ngẫu SVM được quan tâm nhiều hơn so với bài toán SVM gốc (2.4)-(2.5)

Sau khi giải bài toán đối ngẫu (2.11)-(2.13) tìm được , ta tìm được w từ

(2.16), tìm được b từ (2.15) và (2.17) Trong những tính toán này, để giảm thiểu

khối lượng tính toán, ta chỉ cần quan tâm tới những những i 0 Gọi

S i:i 0 , NS là số phần tử của tập S, với mỗi iS ta có 1yi(w xTib )0

hoặc có thể viết là w xTi byi

Như vậy, nếu chỉ có một cặp (x , )iyi ta cũng có thể xác định được b Ở đây

w được xác định tại (2.16) Thông thường để đảm bảo sự ổn định trong tính toán

2.4 Phương pháp tìm nghiệm cho bài toán SVM

Trong mục này trình bày hai phương pháp tìm nghiệm cho bài toán SMV Phương pháp thứ nhất là tìm nghiệm bài toán (2.4) theo công thức (2.11)-(2.13) và (2.16), (2.19); phương pháp thứ hai là sử dụng trực tiếp thư viện SKLEARN

Trang 28

2.4.1 Tìm nghiệm theo công thức

Tìm nghiệm theo công thức được thực theo các bước sau:

X0 = np.random.multivariate_normal(means[0], cov, N) # class 1 X1 = np.random.multivariate_normal(means[1], cov, N) # class -1 X = np.concatenate((X0.T, X1.T), axis = 1) # all data

y = np.concatenate((np.ones((1, N)), -1*np.ones((1, N))), axis = 1) # labels

Bước 2: Giải bài toán (2.11)

from cvxopt import matrix, solvers # build K

V = np.concatenate((X0.T, -X1.T), axis = 1)

K = matrix(V.T.dot(V)) # see definition of V, K near eq (8) p = matrix(-np.ones((2*N, 1))) # all-one vector

Trang 29

[[8.54018321e-01 2.89132533e-10 1.37095535e+00 6.36030818e-10 4.04317408e-10 8.82390106e-10 6.35001881e-10 5.49567576e-10 8.33359230e-10 1.20982928e-10 6.86678649e-10 1.25039745e-10 2.22497367e+00 4.05417905e-09 1.26763684e-10 1.99008949e-10 2.13742578e-10 1.51537487e-10 3.75329509e-10 3.56161975e-10]] Từ kết quả trên ta nhận thấy rằng hầu hết các giá trị của lambda đều rất nhỏ, Có 3 giá trị lớn so với 0 Ta chuyển sang Bước 3

Trang 30

Kết quả phân lớp đƣợc minh hoạ nhƣ hình sau:

Hình 2.2 Tìm bộ phân lớp tuyến tính theo công thức 2.4.2 Tìm nghiệm có sử dụng thư viện SKLEARN

Để tìm nghiệm của bài toán (2.4), ta có thể sử dụng thƣ viện SKLEARN tại hàm sklearn.svm.SVC Sau đây là cách sử dụng thƣ viện giải bài toán

from sklearn.svm import SVC y1 = y.reshape((2*N,))

X1 = X.T # each sample is one row

clf = SVC(kernel = 'linear', C = 1e5) # just a big number

Ngày đăng: 02/04/2024, 16:28

Tài liệu cùng người dùng

Tài liệu liên quan