Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 23

Mục lục

I. Giới thiệu về SVM (Support Vector Machines).................................................2


1. Tổng quan........................................................................................................2
2. Các lớp bài toán của SVM...............................................................................3
4. SVM cho vấn đề nhận dạng đa lớp................................................................13
II. Áp dụng cho bài toán phân loại nhóm điểm trên mặt phẳng............................16
III. Ứng dụng của SVM.......................................................................................17
IV. Hạn chế..........................................................................................................19
V. Kết luận và hướng phát triển............................................................................19
VI. Demo chương trình........................................................................................20
Tài liệu tham khảo...................................................................................................22

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.

I. Giới thiệu về SVM (Support Vector Machines)

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.

2. Các lớp bài toán của SVM


 Tìm siêu phẳng trong không gian N-dim để phân loại dữ liệu
 SVM + hàm kernel = mô hình
 Giải thuật SVM = lời giải của bài toán quy hoạch toàn phương
 Tối ưu toàn cục
 SVM có thể mở rộng để giải các vấn đề của hồi quy, gom nhóm, etc.
 Được ứng dụng thành công : nhận dạng, phân tích dữ liệu, phân loại gien,
ký tự, etc.
Ứng dụng của SVM trong Data mining

Hình 1: ứng dụng của SVM trong Data Mining


3
3. Giải thuật học SVM cho bài toán 2 chiều
a) Bài toán phân lớp – Tuyến tính
Ví dụ: hình vẽ 2 ta phải tìm một đường thẳng sao cho bên trái nó toàn là các
điểm đỏ, bên phải nó toàn là các điểm xanh. Bài toán mà dùng đường thẳng để
phân chia này được gọi là phân lớp tuyến tính (linear classification).

Hình 2: phân lớp tuyến tính

Hàm tuyến tính phân biệt hai lớp như sau:


y ( x )=w Φ ( x )+ b (1)
T

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.

Hình 3: Chọn đường biên

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).

Hình 4: Chọn đường biên max

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

Trong đó a=(a1 , … , aN )T là nhân tử Lagrange.


Lưu ý dấu (–) trong hàm Lagrange, bởi vì ta cực tiểu theo biến w và b, và là cực
đại theo biến a.
Lấy đạo hàm L(w,b,a) theo w và b ta có:
N
∂L
=0 → w=∑ a n t n ϕ ( x n ) (8)
∂w n=1
N
∂L
=0→ 0=∑ a n t n (9)
∂b 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

Hình 7: Cực đại lề

Công thức (5) sẽ viết lại như sau:


t n y ( x n ) ≥1−ξ n , n=1 , … , N (19)
Mục tiêu của ta bây giờ là cực đại khoảng cách lề, nhưng đồng thời cũng đảm
bảo tính mềm mỏng cho những điểm bị phân lớp sai. Ta viết lại vấn đề cần cực
tiểu:
N
1
C ∑ ξn + ‖w‖
2
(20)
n=1 2
Trong đó C > 0 đóng vai trò quyết định đặt tầm quan trọng vào biến ξ n hay là lề.
Bây giờ chúng ta cần cực tiểu (21) thỏa ràng buộc (20) và ξ n ≥0 . Theo Lagrange
ta viết lại:

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

Trong đó {an ≥0 } và {μ n ≥ 0 } là các nhân tử Lagrange.


Các điều kiện KKT cần thỏa là:
a n ≥ 0 (22)
t n y ( x n )−1+ ξn ≥ 0 (23)
a n ( t n y ( x n) −1+ξ n ) =0 (24)
μn ≥ 0 (25)
ξ n ≥0 (26)
μn ξ n=0 (27)
Với n = 1,…,N
Lấy đạo hàm (22) theo w, b và {ξ n}:
N
∂L
=0 → w=∑ a n t n ϕ ( x n ) (28)
∂w n=1
N
∂L
=0→ ∑ a n t n=0 (29)
∂b 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.

b) SVM phi tuyến


Trong trường hợp tổng quát, thực tế mặt phân hoạch có thể là một mặt phi
tuyến bât kì (hình: ). Giả sử các mẫu x i thuộc không gian Rn, không gian này
được gọi là không gian giả thiết (hypothesis space). Để tìm mặt phi tuyến trong
không gian này, có thể áp dụng một số thủ thuật là ánh xạ các vector mẫu x i từ
Rn vào một không gian Rd có số nhiều lớn hơn (d>n, d có thể bằng ). Rd được
gọi là không gian đặc trưng (feature space). Sau đó áp dụng phương trình SVM
tuyến tính để tìm ra một siêu phẳng phân hoạch trong không gian đặc trưng R d.
Siêu phẳng này sẽ ứng với mặt phẳng phi tuyến trong không gian Rn

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).

Hình 10: chia mặt cong trong không gian R3


Áp dụng siêu phẳng phân hoạch mềm (soft – margin hyperplane ) trong
không gian Rd cho các mẫu ∅(xi) thì siêu phẳng này sẽ là:

F(∅(xi)) = uiyj∅(xi) ∅(x)+b = 0


Và từ đó cũng có hàm phân hoạch là trong không gian Rn là hàm hợp f u ∅.
Đây là một hàm phi tuyến.
Cách tiếp cận trên gặp phải một vấn đề là hàm ∅(x) có thể có số chiều rất
lớn (nếu không gian Rd có d lớn). Và do đó tiêu tốn nhiều thời gian trong các
phép tính. Tuy nhiên có thể nhận xét rằng trong các phép tính ∅(x) chỉ xuất hiện
dưới dạng tích vô hướng tức là dạng ∅(x) ∅(y) mà không xuất hiện đơn lẻ. Đây
là một nhận xét quan trọng trong việc tìm ra quy tắc sau:
Thay vì sử dụng dạng tường minh của ∅(x) thì chỉ cần sử dụng hàm biểu
diễn giá trị vô hướng ∅(x) ∅(y).
Đặt K(x,y)= ∅(x) ∅(y), K(x,y) được gọi là hàm hạt nhân (kernel function)
12
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 nhận dạng trở thành:

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à:

4. SVM cho vấn đề nhận dạng đa lớp


Phần trên ta đã đề cập đến vấn đề sử dụng phương pháp SVM để nhận dạng hai
lớp, yi = {-1, 1}. Phương pháp SVM chỉ được xây dựng trên nền tảng nhận dạng
hai lớp. Vậy phương pháp nhận dạng đa lớp thì sao? Vấn đề này có thể giải
quyết được bằng cách kết hợp nhiều SVM lợi với nhau.
One –vs-rest
Giả sử cần phải nhận dạng K lớp thì cần sử dụng K SVM. SVM thứ I sẽ phân
biệt lớp thứ I và các lớp còn lại (I là lớp -1, còn lại là lớp 1). Một mẫu thử x sẽ
được cho kiểm tra trên K SVM này. Hàm nhận dạng của SVM thứ I nào đó cho
ra
kết

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.

Hình 12 SMV loại trừ

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.

5. Giải thuật SVM cho khối dữ liệu khổng lồ


a) Giải thuật active SVM
 Chọn tập dữ liệu con từ tập dữ liệu ban đầu
 Học trên tập dữ liệu con đó

Hình: 14

b) Giải thuật học song song SVM

 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

c) Giải thuật học tiến hóa (Incremental learning)


 Chia thành những khối dữ liệu nhỏ
 Load lần lượt từng khối
 Cập nhật mô hình
d) Giải thuật học trên dữ liệu Symbolic
 Chuyển dữ liệu về dạng trình bày ở mức cao hơn
 Có thể là clusters, interval, ...
 học trên dữ liệu trừu tượng này
 Thay đổi cách tính hàm kernel

Hình: 16
Giải thuật Boosting SVM

 Lấy mẫu con từ tập dữ liệu ban đầu


 Học trên tập dữ liệu con này
 Phân loại toàn bộ dữ liệu
 Những dữ liệu bị phân loại sai sẽ được cập nhật trọng lượng tăng
 Lấy mẫu dựa trên trọng lượng gán cho dữ liệu
 Tiếp tục học, etc.
 Quá trình lặp k lần
16
 Các mô hình con sẽ bình chọn khi phân loại dữ liệu mới đến
II. Áp dụng cho bài toán phân loại nhóm điểm trên mặt phẳng
Mô tả vector đặc trưng của nhóm điểm: Là vector có số chiều là số đặc trưng
trong toàn tập dữ liệu, các đặc trưng này đôi một khác nhau. Nếu điểm có đặc
trưng đó sẽ có giá trị 1, ngược lại là 0.
Việc cài đặt SVM khá phức tạp ta nên dùng các thư viện/chương trình cài sẵn
trên mạng như LibSVM, SVMLight.
Thuật toán gồm 2 giai đoạn huấn luyện và phân lớp.
Ta có một tập huấn luyện gồm n điểm có dạng

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

Để ý 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

Tóm lại, ta có bài toán tối ưu hóa sau:


17
Cực tiểu hóa (theo )
Với điều kiện (với mọi )

III. Ứng dụng của SVM

 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

Phân loại text

18
Phân loại gen

IV. Hạn chế


 Khó dịch kết quả
 Độ phức tạp còn cao
 Xử lý dữ liệu kiểu số
 Tham số đầu vào

V. Kết luận và hướng phát triển


 Phương pháp học mới
 Cung cấp nhiều công cụ
 Nền tảng lý thuyết học thống kê
19
 Tối ưu toàn cục, mô hình chất lượng cao, chịu đựng được nhiễu
 Thành công trong nhiều ứng dụng

Hướng phát triển


 Multi-class
 Clustering
 Xử lý dữ liệu lớn
 Dữ liệu không phải kiểu số
 Dữ liệu không cân bằng
 Xây dựng hàm nhân
 Dịch kết quả
 Tìm kiếm thông tin (ranking)

VI. Demo chương trình


Á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.

Chương trình LIBSVM


Vào thư mục / libsvm-3.17/windows -> chạy file svm-toy.exe

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

1.NỘIChương 4: Phương pháp nhận dạng Support vecto Machine – SVM

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

You might also like