Professional Documents
Culture Documents
BTL TTNT STQ SVM
BTL TTNT STQ SVM
1
Đề bài: Trình bày về SVM (Support Vector Machines).
Áp dụng cho bài toán: có 2 nhóm điểm ngẫu nhiên trên mặt phẳng, mỗi nhóm có
30 điểm. Tìm bộ phân lớp bằng SVM để phân loại nhóm đối tượng trên.
Yêu cầu:
- Hoàn chỉnh lý thuyết.
- Hoàn thiện chương trình minh họa.
- Có nhận xét tương ứng.
1. Tổng quan
Thuật toán máy vector hỗ trợ (Support Vector Machines - SVM) được
Corters và Vapnik giới thiệu vào năm 1995.
Phương pháp phân lớp sử dụng máy vec-tơ hỗ trợ SVM (support vector
machine) là một phương pháp nổi tiếng dựa trên việc cực đại hóa dải biên phân
lớp (max margin classification) . Phương pháp này được sử dụng rộng rãi để giải
quyết nhiều bài toán của tin sinh học do tính hiệu quả, độ chính xác cao, và khả
năng xử lý đối với các bộ dữ liệu lớn.
SVM rất hiệu quả để giải quyết các bài toán với dữ liệu có số chiều lớn
như các vector biểu diễn văn bản. Thuật toán SVM ban đầu chỉ được thiết kế để
giải quyết bài toán phân lớp nhị phân tức là số lớp hạn chế là hai lớp. Hiện nay,
SVM được đánh giá là bộ phân lớp chính xác nhất cho bài toán phân lớp văn
bản, bởi vì đó là bộ phân lớp tốc độ rất nhanh và hiệu quả đối với bài toán phân
lớp văn bản. SVM còn ứng dụng trong nhiều lĩnh vực khác như: Nhận dạng,
phân lớp, phân loại văn bản, phân tích dữ liệu, tin sinh học …
Phương pháp SVM được coi là phương pháp hiệu quả để giải quyết bài
toán phân lớp với dữ liệu có số chiều lớn như các vector biểu diễn văn bản. Về
mặt lý thuyết, thuật toán phân lớp nhị phân này cũng có thể sử dụng cho bài toán
phân lớp đa lớp bằng cách chuyển bài toán đa lớp thành bài toán nhị phân. Tuy
nhiên, đối với bài toán phân lớp văn bản sử dụng phương pháp SVM thì việc lựa
chọn thuộc tính cho từng phân lớp lại là vấn đề cực kỳ quan trọng, nó quyết định
đến hiệu quả của phân lớp.
2
Phân lớp (classification) là một tiến trình xử lý nhằm xếp các
mẫu dữ liệu hay các đối tượng vào một trong các lớp đã được định
nghĩa trước. Các mẫu dữ liệu hay các đối tượng được xếp vào các lớp dựa
vào giá trị của các thuộc tính (attributes) cho một mẫu dữ liệu hay đối
tượng. Sau khi đã xếp tất cả các đối tượng đã biết trước vào các lớp tương
ứng thì mỗi lớp được đặc trưng bởi tập các thuộc tính của các đối tượng chứa
trong lớp đó.
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ô hình (bộ)
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ột mô hình phân lớp và có
rất nhiều thuật toán giải quyết nó. Các thuật toán phân lớp tiêu biểu bao gồm
như mạng neural, cây quyết định, suy luận quy nạp, mạng Beyesian, Support
Vector Machine (SVM),… Trong các kỹ thuậ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.
Trong đó:
w ∈ Rm là vector trọng số hay vector chuẩn của siêu phẳng phân cách, T là
kí hiệu chuyển vị.
b ∈ R là độ lệch
ϕ ( x ) ∈ R m là véc tơ đặc trưng, ϕ làm hàm ánh xạ từ không gian đầu vào
sang không gian đặc trưng.
Tập dữ liệu đầu vào gồm N mẫu input vector {x 1, x2,...,xN}, với các giá trị nhãn
tương ứng là {t1,…,tN} trong đó t n ∈ {−1 ,1 }.
Lưu ý cách dùng từ ở đây: điểm dữ liệu, mẫu… đều được hiểu là input vector
xi; nếu là không gian 2 chiều thì đường phân cách là đường thẳng, nhưng trong
không gian đa chiều thì gọi đó là siêu phẳng.
Giả sử tập dữ liệu của ta có thể phân tách tuyến tính hoàn toàn (các mẫu đều
được phân đúng lớp) trong không gian đặc trưng (feature space), do đó sẽ tồn tại
giá trị tham số w và b theo (1) thỏa y ( x n ) >0 cho những điểm có nhãn t n=+1 và
y ( x n ) <0 cho những điểm có t n=−1, vì thế mà t n y ( x n ) >0 cho mọi điểm dữ liệu huấn
luyện.
4
SVM tiếp cận giải quyết vấn đề này thông qua khái niệm gọi là lề, đường biên…
(margin). Lề được chọn là khoảng cách nhỏ nhất từ đường phân cách đến mọi
điểm dữ liệu hay là khoảng cách từ đường phân cách đến những điểm gần nhất.
Trong SVM, đường phân lớp tốt nhất chính là đường có khoảng cách margin lớn
nhất (tức là sẽ tồn tại rất nhiều đường phân cách xoay theo các phương khác
nhau, và ta chọn ra đường phân cách mà có khoảng cách margin là lớn nhất).
Ta có công thức tính khoảng cách từ điểm dữ liệu đến mặt phân cách như sau:
| y ( x )|
‖w‖
5
Hình 5: Minh họa tính khoảng cách từ điểm dữ liệu đến mặt phân cách
Do ta đang xét trong trường hợp các điểm dữ liệu đều được phân lớp đúng
nên t n y ( x n ) >0 cho mọi n. Vì thế khoảng cách từ điểm x n đến mặt phân cách được
viết lại như sau:
T
t n y ( x n ) t n (w ϕ ( x n ) + b)
= (2)
‖w‖ ‖w‖
Lề là khoảng cách vuông góc đến điểm dữ liệu gần nhất x n từ tập dữ liệu,
và chúng ta muốn tìm giá trị tối ưu của w và b bằng cách cực đại khoảng cách
này. Vấn đề cần giải quyết sẽ được viết lại dưới dạng công thức sau:
arg max
w ,b {‖ ‖
1
min [ t n (w ϕ ( x n ) +b) ]
w n
T
} (3)
1
Chúng ta có thể đem nhân tử ‖w‖ ra ngoài bởi vì w không phụ thuộc n. Giải
quyết vấn đề này một cách trực tiếp sẽ rất phức tạp, do đó ta sẽ chuyển nó về
một vấn đề tương đương dễ giải quyết hơn. Ta sẽ scale w → ϑw và b → ϑb cho mọi
điểm dữ liệu, từ đây khoảng cách lề trở thành 1, việc biến đổi này không làm
thay đổi bản chất vấn đề.
t n ( w T ϕ ( x n ) + b )=1 (4)
Từ bây giờ, các điểm dữ liệu sẽ thỏa ràng buộc:
t n ( w T ϕ ( x n ) + b ) ≥ 1 ,n=1 , … , N (5)
Vấn đề tối ưu yêu cầu ta cực đại ‖w‖−1 được chuyển thành cực tiểu ‖w‖2, ta
viết lại công thức:
1 2
arg min ‖w‖ (6)
w ,b 2
Việc nhân hệ số ½ sẽ giúp thuận lợi cho lấy đạo hàm về sau.
6
Lý thuyết Nhân tử Lagrange:
Vấn đề cực đại hàm f(x) thỏa điều kiện g(x )≥ 0 sẽ được viết lại dưới dạng tối ưu
của hàm Lagrange như sau:
L ( x , λ ) ≡ f ( x )+ λg(x)
Trong đó x và λ phải thỏa điều kiện Karush-Kuhn-Tucker (KKT) như sau:
g(x )≥ 0
λ≥0
λg ( x )=0
Nếu là cực tiểu hàm f(x) thì hàm Lagrange sẽ là
L ( x , λ ) ≡ f ( x )−λg(x )
Để giải quyết bài toán trên, ta viết lại theo hàm Lagrange như sau:
N
1
L ( w , b , a ) = ‖w‖ −∑ an {t n ( w T ϕ ( x n ) + b )−1 } (7)
2
2 n=1
Loại bỏ w và b ra khỏi L(w,b,a) bằng cách thế (8), (9) vào. Điều này sẽ dẫn ta
đến vấn đề tối ưu:
N N N
~ 1
L ( a )=∑ a n− ∑ ∑ a n a m t n t m k (x n , x m) (10)
n=1 2 n=1 m=1
Thỏa các ràng buộc:
a n ≥ 0 , n=1 , … , N (11)
N
∑ an tn =0 (12)
n =1
T
Ở đây hàm nhân (kernel function) được định nghĩa là k ( x n , x m ) =ϕ ( x n ) ϕ ( x m ).
Vấn đề tạm thời gác lại ở đây, ta sẽ thảo luận kỹ thuật giải quyết (10) thỏa (11),
(12) này sau.
Để phân lớp cho 1 điểm dữ liệu mới dùng mô hình đã huấn luyện, ta tính dấu
của y(x) theo công thức (1), nhưng thế w trong (8) vào:
N
y ( x )=∑ a n t n k ( x , x n ) +b (13)
n=1
7
Thỏa các điều kiện KKT sau:
an≥ 0 (14)
t n y ( x n )−1 ≥ 0 (15)
a n { t n y ( x n) −1 }=0 (16)
Vì thế với mọi điểm dữ liệu, hoặc là a n=0 hoặc là t n y ( x n )=1. Những điểm dữ liệu
mà có a n=0 sẽ không xuất hiện trong (13) và do đó mà không đóng góp trong
việc dự đoán điểm dữ liệu mới.
Những điểm dữ liệu còn lại (a ¿¿ n ≠0) ¿ được gọi là support vector, chúng thỏa
t n y ( x n )=1 , đó là những điểm nằm trên lề của siêu phẳng trong không gian đặc
trưng.
Support vector chính là cái mà ta quan tâm trong quá trình huấn luyện của SVM.
Việc phân lớp cho một điểm dữ liệu mới sẽ chỉ phụ thuộc vào các support
vector.
Giả sử rằng ta đã giải quyết được vấn đề (10) và tìm được giá trị nhân tử a, bây
giờ ta cần xác định tham số b dựa vào các support vector x n có t n y ( x n )=1. Thế
(13) vào:
tn
(∑ a t
m ∈S
m m
)
k ( x n , x m ) + b =1 (17)
Trong đó S là tập các support vector. Mặc dù ta chỉ cần thế một điểm support
vector xn vào là có thể tìm ra b, nhưng để đảm bảo tính ổn định của b ta sẽ tính b
theo cách lấy giá trị trung bình dựa trên các support vector.
Đầu tiên ta nhân tn vào (17) (lưu ý t 2n=1 ¿, và giá trị b sẽ là:
1
b=
(
∑ t − ∑ a t k ( xn , xm)
N S n∈ S n m∈ S m m ) (18)
Trong đó Ns là tổng số support vector.
Ban đầu để dễ trình bày thuật toán ta đã giả sử là các điểm dữ liệu có thể
phân tách hoàn toàn trong không gian đặc trưng ϕ ( x ). Nhưng việc phân tách hoàn
toàn này có thể dẫn đến khả năng tổng quát hóa kém, vì thực tế một số mẫu
trong quá trình thu thập dữ liệu có thể bị gán nhãn sai, nếu ta cố tình phân tách
hoàn toàn sẽ làm cho mô hình dự đoán quá khớp.
8
Hình 6: Mô hình dự đoán quá khớp
Để chống lại sự quá khớp, chúng ta chấp nhận cho một vài điểm bị phân lớp sai.
Để làm điều này, ta dùng các biến slack variables ξ n ≥0 , v ớ i n=1 , … , N cho mọi
điểm dữ liệu.
ξ n=0 cho những điểm nằm trên lề hoặc phía trong của lề
ξ n=‖t n− y (x n)‖ cho những điểm còn lại.
Do đó những điểm nằm trên đường phân cách y ( x n )=0 sẽ có ξ n=1
Còn những điểm phân lớp sai sẽ có ξ n >1
9
N N N
1
L ( w , b , a ) = ‖w‖ +C ∑ ξn −∑ an {t n y ( x n ) −1+ξ n }−∑ μ n ξ n
2
(21)
2 n =1 n=1 n=1
∂L
=0→ a n=C−μn (30)
∂ ξn
Thế (29), (30), (31) vào (22) ta được:
N N N
~ 1
L ( a )=∑ a n− ∑ ∑ a n a m t n t m k (x n , x m) (31)
n=1 2 n=1 m=1
Từ (23), (26) và (31) ta có: a n ≤ C
Vấn đề cần tối ưu giống hệt với trường hợp phân tách hoàn toàn, chỉ có điều
kiện ràng buộc khác biệt như sau:
0 ≤ an ≤C (32)
N
∑ an tn =0 (33)
n =1
Thế (29) vào (1), ta sẽ thấy để dự đoán cho một điểm dữ liệu mới tương tự như
(13).
Như trước đó, tập các điểm có a n=0không có đóng góp gì cho việc dự đoán điểm
dữ liệu mới.
Những điểm còn lại tạo thành các support vector. Những điểm có a n> 0 và theo
(25) thỏa:
t n y ( x n )=1−ξ n (34)
Nếu a n< C theo (31) có μn >0 , từ (28) suy ra ξ n=0 và đó là những điểm nằm trên
lề.
10
Những điểm có a n=C có thể là những điểm phân lớp đúng nằm giữa lề và đường
phân cách nếu ξ n ≤1 hoặc có thể là phân lớp sai nếu ξ n >1
Để xác định tham số b trong (1) ta sẽ dùng những support vector mà 0< an <C có
ξ n=0 vì thế t n y ( x n )=1 :
tn
(∑ a t
m ∈S
m m
)
k ( x n , x m ) + b =1 (35)
Lần nữa, để đảm bảo tính ổn định của b ta tính theo trung bình:
1
b=
(
∑ t − ∑ a t k ( xn , xm)
N M n∈ M n m∈ S m m ) (36)
Trong đó M là tập các điểm có 0< an <C
Để giải quyết (10) và (32) ta dùng thuật toán Sequential Minimal Optimization
(SMO) do Platt đưa ra vào 1999.
Hình 8: Mặt phân chia phi tuyến có thể trở thành một siêu phẳng
trong không gian lớn
Ánh xạ từ không gian Rn vào không gian Rd:
11
Gọi ánh xạ được áp dụng là ∅, như vậy:
∅: Rn →Rd
x→∅(x)
Ví dụ x = (x1, x2) ∈ R2. Định nghĩa hàm ánh xạ ∅: R2 →R3 như sau:
∅(x) = (x12, x1x2, x22) với ánh xạ trên thì mặt hình vuông [-1, 1][-1, 1]sẽ trở
thành một mặt cong trong không gian R 3 hình vẽ . Bây giờ dùng một mặt phẳng
trong không gian R3 này thì có thể chia mặt cong trên thành 2 phần (mà trong
không gian R2 phải dùng một
đường cong mới có kết quả
phân chia tương ứng).
F u ∅(x) = uiyjK(xi, x) + b
Tuy 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à một ví dụ về K và ∅:
Với x = (x1, x2) ∈ R2, ∅(x) = (1, x1, x2,x12, x22, x1x2 ∈ R6 thì K(x, y) =
∅(x) ∅(y) = (1+x.y)2
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 quyết bài toán soft-margin hyperplane với việc thay x 1x2 = K(x1, x2) để
tìm ra u và b.
Cuối cùng xây dựng hàm nhận dạng đối với mẫu thử x* nào đó là:
13
quả có giá trị bé nhất thì mẫu thử x thuộc lớp thứ i đó. Ví dụ về nhận dạng 4 lớp
trong không gian Rd
Hình 11: Hàm nhận dạng của SVM 2-vs-rest có giá trị bé nhất nên mẫu
cần nhận dạng là lớp thứ 2
One – vs – one
Phương pháp one-vs-one do, John Platt và Nello Cristianini đưa ra. Trong
phương pháp này, các lớp không phải là kết quả nhận dạng được loại trừ dần
dần. Ứng với mỗi cặp lớp I, j, một SVM (i, j) chỉ được thiết lập dựa trên những
mẫu của 2 lớp này (i là lớp -1, j là lớp +1). Đặc điểm của SVM này là nếu một
mẫu thử có kết quả âm thì nó chỉ kết luận mẫu này không phụ thuộc vào lớp j và
ngược lại (Hình 12). Có K(K+1)/2 SVM như vậy.
Khi bắt đầu nhận dạng, SVM (1, 2) sẽ xem xét để xem cần phải loại trừ
lớp 1 hay loại trừ lớp 2. Nếu loại trừ lớp 2 thì SVM (1, 3) sẽ được xem xét tiếp
còn ngược lại thì SVM (2, 3) sẽ được xem xét. Cứ loại trừ dần như vậy cho đến
khi chỉ còn lại một
lớp cuối cùng
thì lớp đó là kết quả
nhận dạng (hình
13).
14
Hình 13: Sơ đồ loại trừ các tình huống.
Có thể thấy rằng việc nhận dạng một mẫu không cần phải trải qua hết
K(K-1)/2 SVM mà chỉ cần trải qua K-1 SVM mà thôi. Do đó số lượng các giá
trị các Kernel K(x, y) cần phải tính chỉ là (K-1)* M s với Ms là số lượng support
vector trung bình của SVM hai lớp i, j. Vì M s nhỏ hơn nhiều so với Ns nên thời
gian nhận dạng sẽ được giảm bớt so với phương pháp one-vs-rest.
Hình: 14
Chia thành những khối dữ liệu nhỏ phân trên các máy tính con
Học độc lập và song song
Tập hợp những mô hình con để sinh ra mô hình tổng thể
15
Hình: 15
Hình: 16
Giải thuật Boosting SVM
Với yi mang giá trị 1 hoặc −1, xác định lớp của điểm . Mỗi là một vectơ
thực p-chiều. Ta cần tìm siêu phẳng có lề lớn nhất chia tách các điểm có
và các điểm có . Mỗi siêu phẳng đều có thể được viết dưới dạng một tập
hợp các điểm thỏa mãn
Với “ “ kí hiệu cho tích vô hướng và là một vectơ pháp tuyến của siêu
phẳng.
Tham số xác định khoảng cách giữa gốc tọa độ và siêu phẳng theo hướng
vectơ pháp tuyến .
Chúng ta cần chọn và để cực đại hóa lề, hay khoảng cách giữa hai siêu mặt
song song ở xa nhau nhất có thể trong khi vẫn phân chia được dữ liệu. Các siêu
mặt ấy được xác định bằng
và
Để ý rằng nếu dữ liệu huấn luyện có thể được chia tách một cách tuyến tính, thì
ta có thể chọn hai siêu phẳng của lề sao cho không có điểm nào ở giữa chúng và
sau đó tăng khoảng cách giữa chúng đến tối đa có thể. Bằng hình học, ta tìm
được khoảng cách giữa hai siêu phẳng là . Vì vậy ta muốn cực tiểu hóa giá
trị . Để đảm bảo không có điểm dữ liệu nào trong lề, ta thêm vào các điều
kiện sau, với mỗi ta có
thuộc lớp thứ nhất
hoặc
thuộc lớp thứ hai
Có thể viết gọn lại như sau với mọi
Nhận dạng: tiếng nói, ảnh, chữ viết tay (hơn mạng nơron)
Phân loại văn bản, khai mỏ dữ liệu văn bản
Phân tích dữ liệu theo thời gian
Phân tích dữ liệu gien, nhận dạng bệnh, công nghệ bào chế thuốc
Phân tích dữ liệu marketing
Ví dụ
Nhận dạng chữ viết tay
18
Phân loại gen
Bước 1: Tạo nhóm 1gồm: 30 điểm ngẫu nhiên trên mặt phẳng
20
Bước 2: Ấn nút Change để tạo nhóm 2 gồm: 30 điểm ngẫu nhiên trên mặt phẳng
21
Bước 3: Ấn nút Run để phân loại hai nhóm điểm trên bằng bộ phân lớp SVM
22
Tài liệu tham khảo
2. Tạp chí Khoa học và Phát triển 2011: Tập 9, số 6: 1021 - 1031 TRƯỜNG
ĐẠI HỌC NÔNG NGHIỆP HÀ NỘI
3. http://www.csie.ntu.edu.tw/~cjlin/libsvm/
23