Báo cáo môn máy học support vectors machine
Trang 1TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN KHOA CÔNG NGHỆ THÔNG TIN Chuyên ngành Khoa học Máy tính
Lớp Cao học Khóa 22
BÁO CÁO MÔN MÁY HỌC SUPPORT VECTORS MACHINE
TP.HCM, 2012
Trang 2TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN KHOA CÔNG NGHỆ THÔNG TIN Chuyên ngành Khoa học Máy tính
Lớp Cao học Khóa 22
BÁO CÁO MÔN MÁY HỌC SUPPORT VECTORS MACHINE
Trang 3MỤC LỤC
MỤC LỤC 1
DANH MỤC CÁC HÌNH 3
DANH MỤC CÁC BẢNG 5
Phần 1 Support Vectors Classifier 1
1.1 Tuyến tính 1
1.1.1 Bài toán 1
1.1.2 Giải quyết 2
1.1.3 Nhân tử Largrange(Lagrange multiplier) 6
1.1.4 Soft Margin 7
1.2 SVC phi tuyến 8
1.2.1 Bài toán 8
1.2.2 Ví dụ minh họa 10
1.2.3 Thủ thuật Kernel 11
1.2.4 Một số ví dụ hàm kernel 13
1.3 Multiple Classification 14
1.3.1 One Versus the Rest: 14
1.3.2 Pairwise Support Vector Machines 17
1.3.3 Error-Correcting Output Coding (Thomas G.Dietterich, Ghumlum Bakiri) 19
1.4 Sequential Minimal Optimization (SMO) 21
1.4.1 Tìm kiếm theo hướng (Direction Search) 22
1.4.2 Thuật toán [6] 23
Trang 4Phần 2 Support Vectors Regression 24
2.1 Bài toán hồi quy (Regression) 24
2.2 Hàm lỗi 24
2.3 𝜺 – SVR 25
Phần 3 Thư viện hỗ trợ lập trình và các hướng phát triển 28
3.1 Các thư viện hỗ trợ lập trình SVM 28
3.2 Một số hướng nghiên cứu 29
a Hiệu quả tính toán 29
b Lựa chọn hàm kernel 29
c Học SVM có cấu trúc 30
Tài liệu tham khảo 32
Trang 5DANH MỤC CÁC HÌNH
Hình 1-1 Các dãy có thể chia tập dữ liệu [1] 2
Hình 1-2 Sơ lược về hyperlane [1] 2
Hình 1-3 Minh hoạ Largrange Multiflier 6
Hình 1-4 Vài điểm nhiễu trong bộ dữ liệu 7
Hình 1-5 (a) SVC tuyến tính với Soft Margin (b) SVC phi tuyến 8
Hình 1-6 Một mặt phân tách phi tuyến trong không gian giả thuyết có thể trở thành 1 siêu phẳng trong không gian đặc trưng 9
Hình 1-7 Ví dụ minh họa SVM phi tuyến (a)Không gian giả thuyết (b)Không gian 10
Hình 1-8 Siêu phẳng phân lớp trong không gian đặc trưng 11
Hình 1-9 Dữ liệu phân bổ dạng đường cong 14
Hình 1-10 Các classifiers của OVR 15
Hình 1-11 Trường hợp có nhiều fi(x) > 0 (chấm hỏi đỏ) và không có f(i)>0 (chấm hỏi xanh) 15
Hình 1-12 : Minh họa fuzzy 1 16
Hình 1-13 Các đường đen là kết quả của sử dụng fuzzy 16
Hình 1-14 Các classifiers của Pairwise 17
Hình 1-15 Trường hợp có nhiều i thỏa mãn điều kiện chọn lớp 18
Hình 1-16 Cây DDAG 18
Hình 1-17 Kết quả DDAG 19
Hình 1-18 Kết quả fsvm 19
Hình 1-19 Kết quả codewords 20
Hình 1-20 Hamming decoding 21
Trang 6Hình 1-21 Cho điểm bắt đầu và một hướng u khả thi, tìm kiếm theo hướng sẽ cực đại hóa hàm , với với luôn thỏa điều kiện KKT
[6] 22
Hình 2-1 Đường hồi quy của tập điểm cho trước 24Hình 2-2 Nhận thấy các đặt trưng cho ngưỡng lỗi, có hàm trải đều, có hàm phải đến ngưỡng mới tính lỗi, có hàm tuyến tính, có hàm phi tuyến 25Hình 2-3 Hàm lỗi 𝜺 26Hình 3-1 Phân lớp bằng LibSVM 28
Trang 7DANH MỤC CÁC BẢNG
Bảng 1-1 Một số thuật toán tối ưu để tìm [6] 21
Trang 8Phần 1 Support Vectors Classifier
- SVM – Support Vectors Machine là một mô hình học có giám sát, trong lĩnh vực máy học
- SVM thường được sử dụng để phân lớp dữ liệu (classification), hoặc phân ích hồi quy (regression annalysis) Là nền tảng cho nhiều thuật toán trong khai thác dữ liệu
- SVM được giới thiệu vời Vladimir Vapnik và các đồng sự vào năm 1979 Paper được công bố chính thức vào năm 1995
- Ý tưởng chính của phương pháp SVM là phân chia bộ dữ liệu vào các phân lớp bằng siêu phẳng (hyperlane) Từ ý tưởng chính, nhiều phương pháp cải tiến đã tuỳ biến từ phương pháp nguyên thuỷ, cho nhiều trường hợp sử dụng khác nhau
1.1 Tuyến tính
Với bộ dữ liệu có thể chia thành 2 lớp một cách tuyến tính (two-class linearly separable data), SVC sẽ tìm ra một siêu phẳng (hyperlane) để chia bộ dữ liệu bằng cách cực đại hoá biên (Maximal Margin)
1.1.1 Bài toán
- Cho tập điểm D = {(xi, yi)} , D là một tập có thể phân lớp tuyến tính
(separable data set) Trong đó, là vector đại diện cho phần tử thứ
i ,với mỗi sẽ được đánh nhãn { }
- Bài toán đặt ra là tìm dãy rộng nhất có thể để phân chia tập dữ liệu ban đầu thành 2 lớp
Trang 9Hình 1-1 Các dãy có thể chia tập dữ liệu [1]
1.1.2 Giải quyết
- Trong không gian 2 chiều, một dãy phân cách có thể được biểu diển bằng 1 đường thẳng (là đường thẳng chính giữa dãy - hyperlane)
- Hyperlane được biểu diễn dưới phương trình
Hình 1-2 Sơ lược về hyperlane [1]
Trang 10
⃗⃗ là vector pháp tuyến của hyperlane
- là khoảng cách giữa 2 lề của dãy phân cách Như vậy, dãy phân
cách rộng nhất sẽ là dãy có chỉ số lớn nhất
- được tính bằng 2 lần khoảng cách ngắn nhất từ các điểm trong tập
dữ liệu đến hyperlane (xem hình Error! Reference source not found.) Các điểm gần hyperlane nhất là những điểm nằm trên 2 lề, sẽ
có ý nghĩa cho việc tính khoảng cách , được gọi là Support Vector
Để thiết lập công thức tính trước hết, cần tính được khoảng cách
từ 1 điểm trong tập dữ liệu đến hyperlane
- r là khoảng cách từ một điểm x trong tập dữ liệu đến hyperlane (còn
được gọi là geometric margin)
Trang 11- Nhận thấy, giá trị r độc lập với bộ ( ⃗⃗⃗ ,b),
Vậy, có thể chọn sao cho ⃗⃗ Khi đó, biểu thức trên được thu gọn như sau :
được gọi là functional margin
*** functional margin có độ lớn phụ thuộc vào tỉ lệ scale của vector ⃗⃗ ,
còn geometric margin thì độc lập với tỉ lệ này
*** Chú ý, ta có Điều này không thay đổi hyperlane (phương trình và hoàn toàn tương đương Mục đích rút gọn này chỉ nhằm mục đích dễ dàng cho việc tính toán về sau
Từ đó, cho một mẫu đến hyperlane, ta tính được :
Trang 12⃗⃗ ⃗⃗⃗
Từ đó, tìm được biểu thức cho margin :
Như vậy, để tìm dãy phân cách rộng nhất, cũng đồng nghĩa việc tìm margin
lớn nhất Trở thành bài toán cực đại hoá , hay cực tiểu hoá (primal problem) :
{ 𝑚𝑎 𝑖𝑚𝑖𝑧𝑒
ℎ𝑎 𝑚𝑖𝑛𝑖𝑚𝑖𝑧𝑒 𝑣ớ𝑖 ⃗⃗
Để giải quyết bài toán này, ta áp dụng nhân tử largrange (Lagrange multipliers)
Trang 13Với ràng buộc
∑ ∝
∝ i … n
Vấn đề Convex quadratic programming optimization
Điều kiện Karush-Kuhn-Tucker (complementary slackness conditions):
∝ [ ] i … n
Giải bằng thuật toán Sequential Minimal Optimization (SMO) để tìm
bộ ∝ Từ đó, tìm được w,b bằng các biểu thức phía trên
*** Sau khi giải xong bài toán tối ưu hoá, ta tìm được bộ 𝛼 , thì chỉ có
những giá trị α tương ứng với những điểm nằm trên 2 biên (Support
Vector) mới có giá trị khác 0, còn giá trị α những điểm còn lại điều
Vector tiếp tuyến
Suy ra ℎ Hình 1-3 Minh hoạ Largrange
Trang 14 Khi đó, f(x,y) sẽ đạt cực trị khi
{ ℎ ℎ và song song
Suy ra
𝛼 ℎ
Viết lại, cách khác
𝛼 𝛼ℎ Biểu thức trên có nghĩa, để f(x,y) đạt cực trị thì 𝐿 𝛼
*** Có thể tìm hiểu thêm về nhân tử Largrange trong các tài liệu [2] [3]
1.1.4 Soft Margin
Trong thực tế, tập dữ liệu không luôn thoả tính chất “separable” (phân chia được),
mà đôi khi, có một vài điểm bị nhiễu (inseparable points) Vì vậy, từ phương pháp
nguyên thuỷ ban đầu, cần thêm một vài cải tiến để chấp nhận những điểm nhiễu này
Hình 1-4 Vài điểm nhiễu trong bộ dữ liệu
Trang 15• Để chấp nhận các nhiễu, công thức ban đầu được tuỳ chỉnh thêm vài tham số
min ∑
Trong đó :
• «Slack variable» mô tả độ nhiễu cho phân lớp
• C độ ảnh hưởng của lỗi (C càng lớn thì mức độ ảnh hưởng của các điểm nhiễu càng lớn, ngược lại C càng nhỏ, thì điều kiện nới lỏng hơn,
chỉ giải được nếu tập dữ liệu phân tách tuyến tính được Trong thực tế, tập dữ liệu
đa số là không phân chia tuyến tính được bằng siêu phẳng (Hình 1-5)
Hình 1-5 (a) SVC tuyến tính với Soft Margin (b) SVC phi tuyến
Trang 16Để giải quyết vấn đề dữ liệu không khả tách tuyến tính, chúng ta có hai cách tiếp cận Cách tiếp cấn thứ nhất (đã được trình bày) là sử dụng phương pháp cực đại hóa biên mềm (soft margin) như Hình 1-5(a) Tuy nhiên, trong các trường hợp dữ liệu như Hình 1-5(b) thì cách tiếp cận biên mềm không khả dụng
Trong trường hợp đó, chúng ta phải sử dụng một cách tiếp cận khác Ý tưởng chính của hướng tiếp cận này là ánh xạ các mẫu trong không gian ban đầu (không gian giả thuyết) sang 1 không gian có số chiều lớn hơn (không gian đặc trưng) Sau đó áp dụng phương pháp SVM tuyến tính để tìm ra 1 siêu phẳng phân hoạch trong không gian đặc trưng Siêu phẳng này sẽ ứng với mặt phi tuyến trong không gian giả thuyết Hình 1-6 minh họa cho phương pháp này Ta thấy, dữ liệu, sau khi được ánh
xạ từ không gian 2 chiều sang không gian 3 chiều, có thể phân tách hoàn toàn bằng
1 siêu phẳng trong không gian mới
Hình 1-6 Một mặt phân tách phi tuyến trong không gian giả thuyết có thể trở thành 1
siêu phẳng trong không gian đặc trưng
Trang 171.2.2 Ví dụ minh họa
Hình 1-7 Ví dụ minh họa SVM phi tuyến (a)Không gian giả thuyết (b)Không gian
Giả sử ta có tập dữ liệu như Hình 1-7(a) Mục tiêu đặt ra là tìm 1 siêu phẳng phân lớp dữ liệu chính xác Ta thấy trong không gian gốc, tập dữ liệu này không thể phân tách tuyến tính Do đó, ta phải ánh xạ vào không gian đặc trưng mới Giả sử ta có hàm ánh xạ như sau
( ) {(
) 𝑛 √
( ) 𝑛 𝑛 𝑖
Dữ liệu trong không gian giả thuyết sau khi ánh xạ vào không gian đặc trưng mới sẽ như Hình 1-7(b) Sau khi ánh xạ, ta sẽ sử dụng phương pháp SVC tuyến tính để tìm siêu phẳng phân lớp trong không gian đặc trưng Quay lại bài toán SVC tuyến tính,
và thay các giá trị bằng Tính tương tự như trường hợp phi tuyến ta được
w = (1,1) và b = -3 Thế vào phương trình siêu phẳng ta được siêu phẳng: y = 3 – x như hình Hình 1-8 Sau khi có được phương trình siêu phẳng, ta sẽ sử dụng nó để phân lớp tương tự như trường hợp tuyến tính
Trang 18Hình 1-8 Siêu phẳng phân lớp trong không gian đặc trưng
Đặt K(x,y)=Φ(x)Φ(y), K(x,y) được gọi là hàm hạt nhân (kernel function) [4]
Như vậy là chỉ cần biết dạng của hàm hạt nhân K(x,y) mà không cần biết cụ thể ánh
xạ Φ(x) Lúc đó hàm phân lớp trở thành:
Trang 19Tuy nhiên không thể chọn tùy ý hàm K(x,y) mà phải chọn K(x,y) sao cho tồn tại một hàm Φ mà K(x,y) = Φ(x)Φ(y) Điều kiện để bảo đảm vấn đề này là điều kiện Mercer Sau đây là 1 ví dụ về K và Φ:
Với x = (x 1 ,x 2 ) ϵ R 2 , Φ(x) = (1,√ ,√ , , , √ ) ϵ R 6 thì
K(x,y) = Φ(x)Φ(y) = (1+x.y) 2
Ánh xạ về không gian ban đầu: Sau khi giải bài toán phi tuyến, ta có được siêu
phẳng phân lớp trong không gian đặc trưng Dựa vào phương trình siêu phẳng ta xác định được các điểm support vector Sau đó, ánh xạ các support vector này về không gian giả thuyết Cuối cùng, từ các điểm support vector ta xác định được đường phân lớp trong không gian ban đầu
Vấn đề quan trọng là tìm hàm kernel K(x,y) như thế nào: Rõ ràng đây là một
vấn đề phụ thuộc vào bài toán nhận dạng Đối với những bài toán nhận dạng đơn giản trong đó sự phân bố các mẫu của 2 lớp không quá phức tạp thì có thể tìm hàm
K(x,y) đơn giản sao cho số chiều của Φ là không quá lớn
Cách xây dựng một hàm kernel: Hàm kernel phải thỏa mãn định lý Mercer
Định lý của Mercer [4] Cho K(x, x’) là một kernel đối xứng liên tục được xác định
trong khoảng cách đóng a ≤ x ≤ b và tương tự cho x’ Kernel K(x, x’) có thể được
mở rộng trong chuỗi:
với các hệ số dương, λi > 0 với tất cả i Sự mở rộng này là có cơ sở và hội tụ, nó là cần thiết và đủ điều kiện
giữ cho tất cả các ψ (-) mà
Trang 20Có thể tóm tắt các đặc điểm hữu ích nhất trong việc xây dựng kernel, mà được gọi
là Mercer kernel Đó là, đối với bất kỳ tập hợp con giới hạn ngẫu nhiên nào phụ thuộc vào không gian đầu vào X, ma trận tương ứng được xây dựng bởi hàm kernel
K(x, x’): là một ma trận đối xứng và bán xác định dương
(trị riêng của ma trận >= 0), được gọi là một ma trận Gram [5]
1.2.4 Một số ví dụ hàm kernel
Đặc tính của hàm kernel:
Nếu K 1 (x,y), K 2 (x,y) là các hàm kernel thì K 3 (x,y) cũng là hàm kernel với:
1 K3(x,y) = K1(x,y) + K2(x,y) [**]
2 K3(x,y) = aK1(x,y) với a > 0 [**]
3 K3(x,y) = K1(x,y).K2(x,y) [**]
4 K3(x,y) = aK1(x,y) + bK2(x,y) với a,b > 0 [**]
Từ các công thức trên có thể suy ra một số hàm kernel thông dụng như sau:
1 Linear: ( )
2 Hàm đa thức bậc p: ( ) ; ( )
3 Hàm Gaussian (Radial-basis function):
( ) 𝑒
Trong trường hợp nào nên sử dụng hàm kernel nào là tùy thuộc vào sự phân bố của
dữ liệu Ví dụ, nếu dữ liệu phân bố dạng đường cong như Hình 1-9 thì chúng ta phải dùng hàm nhân đa thức dạng K(x,y)=(1+x.y)p
Trang 21Hình 1-9 Dữ liệu phân bổ dạng đường cong
Chiều không gian đặc trưng ứng với kernel này là d = Kernel này có thể chuyển tất cả các mặt cong bậc p trong không gian Rn thành siêu phẳng trong không gian đặc trưng
Tóm lại phương pháp SVM phi tuyến là tìm một hàm kernel K(x,y), sau đó giải bài toán SVM tuyến tính với việc thay x 1 x 2 = K(x 1 ,x 2 ) để tìm ra w và b
1.3 Multiple Classification
1.3.1 One Versus the Rest:
1.3.1.1 Continuous Decision Functions
Huấn luyện
Với một tập m class, xây dựng một tập classifier D1, ., Dm Mỗi một fi sẽ phân biệt 1 lớp với các lớp còn lại
Trang 22Hình 1-10 Các classifiers của OVR
Như vậy ta sau khi huấn luyện ta sẽ có tập D1, ,Dm classifier để nhận diện
Nhận diện:
Ứng với mỗi giá trị x cần phân lớp:
- x sẽ thuộc lớp i nếu có duy nhất một Di(x) > 0
- Trường hợp có nhiều hơn một Di(x) > 0 hoặc không có Di(x) >0, ta sử dụng cách tính:
Nghĩa là x thuộc lớp i với Di(x) lớn nhất
Hình 1-11 Trường hợp có nhiều fi(x) > 0 (chấm hỏi đỏ)
và không có f(i)>0 (chấm hỏi xanh)
Trang 231.3.1.2 Fuzzy Support Vector Machines (FSVM):
Sử dụng fuzzy để giải quyết trường hợp không nhận diện được khi có nhiều hơn một Di(x) > 0 hoặc không có Di(x) >0
Hình 1-12 : Minh họa fuzzy 1
Sau khi tìm được mij(x), ta tìm mi(x): mi(x) = min mij(x) , j =1, ,n
x sẽ thuộc về lớp: arg max mi(x), i=1, ,n
Hình 1-13 Các đường đen là kết quả của sử dụng fuzzy
Trang 24==> FSVM và SVMs with Continuous Decision Functions là tương đương
1.3.2 Pairwise Support Vector Machines
Huấn luyện
Với một tập m class, xây dựng một tập classifier D1, , Dn(n-1)/2 Mỗi một fi sẽ phân biệt 1 lớp với 1 lớp khác trong tập
Hình 1-14 Các classifiers của Pairwise
Như vậy sau khi huấn luyện ta sẽ có n(n-1)/2 classifier để nhận diện
Nhận diện:
Để nhận biết x thuộc về lớp nào, ta tính tất cả các giá trị Di(x), i=1, ,n(n-1)/2 x sẽ thuộc về lớp:
Di(x) = ∑ 𝑖 𝑛 𝑖 arg max Di(x) , i=1, ,n
Tuy nhiên, sẽ xảy ra trường hợp có nhiều i thỏa mãn điều kiện chọn lớp, khi mà x thuộc về phần gạch chéo trong trường hợp dưới