Xây dựng siêu phẳng tuyến tính

Một phần của tài liệu Nghiên cứu các giải thuật máy học và áp dụng vào bài toán dự đoán bệnh thận tại bệnh viện đa khoa tỉnh điện biên dùng ngôn ngữ python (Trang 34)

Trong phần này, Tôi sẽ dùng [3] để tham khảo chính.

2.1.2.1 Bộ phân lớp tuyến tính

Trong hệ tọa độ 𝑅𝑛, ta có phương trình:

〈𝑤, 𝑥〉 + 𝑏 = 0 ∑𝑛 𝑤𝑘𝑥𝑘

𝑘=1 + 𝑏 = 0 (2.1.1)

Định nghĩa một siêu phẳng (n-1)-chiều. Trong đó vector khác không w là vector pháp tuyến của siêu phẳng𝑤 = (𝑤1, … , 𝑤𝑛) ∈ Rn, và b ∈ R là đại lượng vô hướng.〈𝑤, 𝑥〉 là tích vô hướng của 2 vector. Ứng với một bộ (w,b), tập tất cả các vector

𝑥 = (𝑥1, … , 𝑥𝑛) ∈ Rn thỏa mãn phương trình (2.1.1) sẽ xác định một siêu phẳng. Chúng ta kí hiệu siêu phẳng này là 𝜋(𝑤, 𝑏). Nghĩa của từ siêu phẳng (hyperplan) hàm chứa rằng số chiều của mặt phẳng nhỏ hơn 1 so với số chiều của không gian Rn (xem Hình 2.1.4).

25

Hình 2.1. 4: Một siêu phẳng (trong không gian 2 chiều) khi 𝒃 < 𝟎, 𝒘𝟏 > 𝟎, 𝒘𝟐 > 𝟎

Vectơ pháp tuyến w xác định hướng của siêu phẳng trong không gian, trong khi khoảng cách từ gốc tọa độ (𝑶 = (0, … 0)) tới siêu phẳng được xác định bởi tỉ lệ 𝑏

‖𝑤‖. Vector pháp tuyến trực giao với mọi vector song song với siêu phẳng của nó.

Siêu phẳng 𝜋 tách không gian 𝑅𝑛 thành 2 phần, gọi là phần dương (𝑹𝑛)𝜋+ và phần âm (𝑹𝑛)𝜋−. Với mọi vector𝑥 ∈ (𝑹𝑛)𝜋+ ta có 〈𝑤, 𝑥〉 + 𝑏 > 0, trong khi mọi vector𝑥 ∈ (𝑹𝑛)𝜋− ta có 〈𝑤, 𝑥〉 + 𝑏 < 0.

26

Chú ý rằng, một siêu phẳng có thể có vô số các cặp (w,b). Thực vậy, phương trình (2.1.1) cũng đúng cho mọi cặp (cw,cb) với 𝑐 ≠ 0. Nói một cách khác, nếu hai siêu phẳng 𝜋1 và 𝜋2 được xác định bởi hai bộ tham số (𝑤1, 𝑏1) và (𝑤2, 𝑏2), và 𝑤1 = 𝑐𝑤2, 𝑏1 = 𝑐𝑏2, thì hai siêu phẳng 𝜋1 và 𝜋2 là một.

Hình 2.1. 6: Siêu phẳng với sự thay đổi của các tham số w và b

Khoảng cách 𝜌(𝑥, 𝜋) của vectơ x tới siêu phẳng 𝜋(𝑤, 𝑏) được tính theo công thức:

𝜌(𝑥, 𝜋) =〈𝑤,𝑥〉+𝑏‖𝑤‖ (2.1.2) Chú ý khoảng cách ở đây có gán dấu: 𝜌(𝑥, 𝜋) > 0 khi 𝑥 ∈ (𝑹𝑛)𝜋+ và 𝜌(𝑥, 𝜋) < 0 khi 𝑥 ∈ (𝑹𝑛)𝜋−. Rõ ràng 𝜌(𝑥, 𝜋) = 0 khi 𝑥 ∈ 𝜋. Khoảng cách từ góc tọa độ tới siêu phẳng là ‖𝑤‖𝑏 . Chúng ta có một vài quan sát sau đây (giúp cho việc tính toán sau này): Gốc tọa độ ở trong phần dương, (𝑹𝑛)𝜋+, nếu 𝑏 > 0, và ở phần âm nếu 𝑏 < 0. Nếu 𝑏 = 0 thì siêu phẳng đi qua gốc tọa độ, Hình 2.1.6.a.

Khi giá trị tuyệt đối của |b| tăng, siêu phẳng sẽ di chuyển ra xa khỏi gốc tọa độ. Ngược lại, khi giá trị tuyệt đối của |b| giảm, siêu phẳng sẽ di chuyển gần vào gốc tọa độ. Xem Hình 2.1.6.a.

Bằng cách thay đổi vectơ pháp tuyến nhưng vẫn giữ chuẩn không đổi ||w||, chúng ta đang di chuyển siêu phẳng quanh gốc tọa độ theo đường tròn có bán kính ‖𝑤‖|𝑏|. Xem Hình 2.1.6.b.

27

Khi giảm chiều dài của vectơ pháp tuyến w nhưng vẫn giữ hướng của nó, siêu phẳng sẽ di chuyển ra xa gốc tọa độ. Và khi tăng chiều dài của vectơ pháp tuyến w

nhưng vẫn giữ hướng của nó, siêu phẳng sẽ di chuyển vào phía gốc tọa độ (Hình 2.1.6.c). Như vậy siêu phẳng sẽ di chuyển song song với chính nó bằng 2 cách: thay đổi giá trị của b, hoặc thay đổi chiều dài của w. Nhưng nếu chúng ta cùng tăng b

w theo cùng một tỉ lệ thì siêu phẳng giữ nguyên.

Giả sử chúng ta có tập dữ liệu m điểm: X = {(xi, yi)|xi ∈ Rn, yi ∈ {+1, −1}}m. Trong bài toán phân lớp nhị phân này, mỗi một dữ liệu xi được gọi là một điểm trong không gian n-chiều.

Nếu tồn tại một bộ (𝑤, 𝑏) ∈ 𝑅𝑛× 𝑅, sao cho siêu phẳng 𝜋(𝑤, 𝑏) phân lớp mọi điểm trong đúng, thì ta có:

〈𝑤, 𝑥𝑖〉 + 𝑏 > 0, ∀𝑦𝑖 = +1

〈𝑤, 𝑥𝑖〉 + 𝑏 < 0, ∀𝑦𝑖 = −1} ⟹ yi(〈𝑤, 𝑥𝑖〉 + 𝑏) > 0, ∀𝑖 = {1, … , 𝑚}

Nếu tồn tại bộ (𝑤, 𝑏) thỏa mãn điều kiện trên thì khi đó tồn tại 𝜀 > 0 sao cho:

yi(〈𝑤, 𝑥𝑖〉 + 𝑏) ≥ 𝜀, ∀𝑖 = {1, … , 𝑚} ⟹ yi(〈𝑤

𝜀 , 𝑥𝑖〉 +𝑏 𝜀) ≥ 1

Như trên đã trình bày, bằng cách đặt lại = 𝑤𝜀, 𝑏 = 𝑏𝜀 , chúng ta vẫn giữ nguyên siêu phẳng phân tách cho m điểm của X. Nghĩa là, ta có bất phương trình: (adsbygoogle = window.adsbygoogle || []).push({});

yi(〈𝑤, 𝑥𝑖〉 + 𝑏) ≥ 1, ∀𝑖 = {1, … , 𝑚} (2.1.3) Tóm lại, siêu phẳng mà chúng ta cần tìm để phân tách đúng tập dữ liệu sẽ thỏa mãn hệ bất phương trình (2.1.3).

Giả sử tập các điểm (𝑥i, yi = −1) là lớp C1, và tập các điểm (𝑥i, yi = +1) là lớp C2. Siêu phẳng 𝜋 phân tách hai lớp C1C2 có lề 𝑚(𝜋, 𝐶1, 𝐶2) được định nghĩa như sau:

𝑚(𝜋, 𝐶1, 𝐶2) = 𝜌(𝜋, 𝐶1) + 𝜌(𝜋, 𝐶2) (2.1.4)

Trong đó khoảng cách từ siêu phẳng 𝜋 tới lớp Ci (có thể là C1 hoặc C2) chính là độ dài từ một điểm trong Ci có khoảng cách nhỏ nhất:

𝜌(𝜋, 𝐶𝑖) = min

28

Hình 2.1. 7:Khoảng cách từ lớp C1 và C2 tới siêu phẳng

Theo công thức (2.1.4) có thể có nhiều siêu phẳng có khoảng cách giống nhau tới hai lớp cần phân tách, xem Hình 2.1.8.

Hình 2.1. 8: Tất cả 5 siêu phẳng đều thỏa mãn có tổng lề lớn nhất để phân tách 2 lớp

Tuy nhiên, thuật toán SVM sẽ tìm ra siêu phẳng cách đều 2 lớp, như vậy khi có dữ liệu mới (cần phán đoán), chúng ta sẽ chia đều độ tự tin cho 2 lớp, Hình 2.1.9.

29 𝑑 = 𝜌(𝜋, 𝐶1) = 𝜌(𝜋, 𝐶2) và là lớn nhất [3].

Theo công thức (2.1.2), khoảng cách từ một điểm tới siêu phẳng được tính theo dấu, và và (2.1.3), ta có thể suy ra độ dài khoảng cách từ một điểm thuộc 1 lớp tới siêu phẳng 𝜋 là: |𝜌(𝑥, 𝜋)| =yi〈𝑤, 𝑥𝑖〉 + 𝑏 ‖𝑤‖ Ta có 𝜌(𝜋, 𝐶) = min 𝑥∈𝐶 |𝜌(𝜋, 𝑥)| = min 𝑖=1,…,𝑚 yi〈𝑤, 𝑥𝑖〉 + 𝑏 ‖𝑤‖ Chúng ta biết rằng: min 𝑖∈{1,…,𝑚}yi〈𝑤, 𝑥𝑖〉 + 𝑏 = 1 Do vậy 𝜌(𝜋, 𝐶) =‖𝑤‖1 (2.1.6) Vì 𝑑 = 𝜌(𝜋, 𝐶1) = 𝜌(𝜋, 𝐶2) nên bây giờ việc tìm siêu phẳng cho lề (margin) lớn nhất chính là tìm siêu phẳng 𝜋 sao cho 𝜌(𝜋, 𝐶) đạt giá trị lớn nhất (C ={C1,C2}):

max

𝜋 𝜌(𝜋, 𝐶) .

Từ (2.1.6) ta suy ra việc tìm siêu phẳng:

max

𝜋 𝜌(𝜋, 𝐶) = max

w,b 1

‖𝑤‖ (2.1.7)

30

Tóm lại siêu phẳng cần tìm sẽ dẫn tới việc giải bài toán tối ưu:

max 𝑤∈𝑅𝑛,𝑏∈𝑅 1 2‖𝑤‖⟹𝑤∈𝑅min𝑛,𝑏∈𝑅 1 2‖𝑤‖

với điều kiện đảm bảo không có điểm dữ liệu nào trong lề xác định bởi phương trình.

min

𝑖=1,…,𝑚yi〈𝑤, 𝑥𝑖〉 + 𝑏 = 1

Bài toán được viết gọn:

min

𝑤∈𝑅𝑛,𝑏∈𝑅 1

2‖𝑤‖ (2.1.8)

yi(〈𝑤, 𝑥𝑖〉 + 𝑏) ≥ 1, ∀𝑖 = {1, … , 𝑚} (2.1.9) Có một vài tính chất cho bài toán này: (adsbygoogle = window.adsbygoogle || []).push({});

Bài toán tối ưu quy hoạch toàn phương với ràng buộc là các bất phương trình tuyến tính. Các ràng buộc xác định một miền lồi (convex).

Hàm mục tiêu là hàm bậc 2.

Bài toán có nghiệm toàn cục duy nhất. Bài toán đối ngẫu cho (2.1.8) và (2.1.9) là:

max 𝛼 𝐿𝑑(𝛼) (2.1.10) 𝛼 = (𝛼1, 𝛼2, … , 𝛼𝑚), 𝛼𝑖 ≥ 0, ∀𝑖 = {1, … , 𝑚} (2.1.11) Trong đó: 𝐿𝑑(𝛼) = min 𝑤,𝑏 𝐿(𝑤, 𝑏, 𝛼) (2.1.12) Và nhân tử Lagrange được định nghĩa:

𝐿(𝑤, 𝑏, 𝛼) =12‖𝑤‖2− ∑𝑚 𝛼𝑖[𝑦𝑖(〈𝑤, 𝑥𝑖〉 + 𝑏) − 1]

𝑖=1 (2.1.13)

Vì nhân tử Lagrange là một hàm lồi (convex) nên với mọi 𝛼 cặp (𝑤∗, 𝑏∗) là nghiệm cực tiểu toàn cục của 𝐿(𝑤, 𝑏, 𝛼) nếu và chỉ nếu đạo hàm riêng theo wb

bằng 0 ∇𝑤,𝑏𝐿(𝑤∗, 𝑏∗, 𝛼) = 0 (2.1.14) Kết hợp (2.1.10), (2.1.11) và (2.1.14) ta có bài toán: max 𝑤,𝑏,𝛼𝐿(𝑤, 𝑏, 𝛼) (2.1.15) ∇𝑤,𝑏𝐿(𝑤, 𝑏, 𝛼) = 0 (2.1.16) 𝛼𝑖 ≥ 0, ∀𝑖 = {1, … , 𝑚} (2.1.17)

31 Ràng buộc (2.1.16) được cụ thể: 𝜕𝐿 𝜕𝑤𝑘 = 0 ⟹ 𝑤𝑘 = ∑𝑚 𝛼𝑖𝑦𝑖𝑥𝑘𝑖 𝑖=1 , 𝑘 = 1, … , 𝑛 (2.1.18) 𝜕𝐿 𝜕𝑏 = 0 ⟹ ∑𝑚 𝛼𝑖𝑦𝑖 = 0 𝑖=1 (2.1.19) 2.1.2.2 Lề cứng (hard – margin)

Thay thế (2.1.18) và (2.1.19) vào (2.1.13), ta chuyển bài toán chọn wb để cực đại hóa lề (margin), 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 tách được dữ liệu, thành bài toán:

∑𝑚 𝛼𝑖−12 𝑖=1 ∑ ∑ 𝛼𝑖𝛼𝑗𝑦𝑖𝑦𝑗〈𝑥𝑖, 𝑥𝑗〉 ⟶ max 𝛼 𝑚 𝑗=1 𝑚 𝑖=1 (2.1.20) ∑𝑚 𝛼𝑖𝑦𝑖 = 0 𝑖=1 (2.1.21) 𝛼𝑖 ≥ 0, ∀𝑖 = {1, … , 𝑚} (2.1.22) Chúng ta tiếp tục chuyển sang bài toán đối ngẫu của (2.1.20), (2.1.21), và (2.1.22), ta có bài toán phân lớp nhị phân SVM lề cứng (hard-margin) như sau:

1 2∑ ∑ 𝛼𝑖𝛼𝑗𝑦𝑖𝑦𝑗〈𝑥𝑖, 𝑥𝑗〉 − ∑ 𝛼𝑖 𝑚 𝑖=1 ⟶ min 𝛼 𝑚 𝑗=1 𝑚 𝑖=1 ∑ 𝛼𝑖𝑦𝑖 = 0 𝑚 𝑖=1 −𝛼𝑖 ≤ 0, ∀𝑖 = {1, … , 𝑚} Chúng ta nhận xét sau đây:

Bài toán đối ngẫu chỉ phụ thuộc vào số lượng mẫu (𝛼 = (𝛼1, 𝛼2, … , 𝛼𝑚)) Bài toán đối ngẫu này có thể giải bằng phương pháp quy hoạch toàn phương (quadratic programming).

Bài toán (2.1.20), (2.1.21), và (2.1.22) có thể được viết lại: 1 2𝛼𝑇[𝑦 1𝑦1〈𝑥1, 𝑥1〉 𝑦1𝑦2〈𝑥1, 𝑥2〉 … … 𝑦𝑚𝑦1〈𝑥𝑚, 𝑥1〉 𝑦𝑚𝑦2〈𝑥𝑚, 𝑥2〉 … 𝑦1𝑦𝑚〈𝑥1, 𝑥𝑚〉 … … … 𝑦𝑚𝑦𝑚〈𝑥𝑚, 𝑥𝑚〉] 𝛼 + (−1) 𝑇𝛼(2.1.23) 𝑦𝑇𝛼 = 0 (2.1.24) −𝛼𝑖 ≤ 0, ∀𝑖 = {1, … , 𝑚} (2.1.25)

32

Chúng ta có thể chuyển bài toán (2.1.23), (2.1.24), và (2.1.25) về dạng bài toán quy hoạch toàn phương điển hình như sau:

1 2𝛼𝑇𝑃𝛼 + 𝑞𝑇𝛼 ⟶ min 𝛼 (2.1.26) 𝐴𝛼 = 𝑏 (2.1.27) 𝐺𝛼 ≤ ℎ (2.1.28) Bằng cách đặt: 𝑃 = [𝑦𝑖𝑦𝑗〈𝑥𝑖, 𝑥𝑗〉]𝑚×𝑚 𝑞𝑇 = [−1]𝑚×1 𝐴 = 𝑦𝑇 𝑏 = 0 𝐺 = [−1]𝑚×𝑚 ℎ = [0]𝑚×1 Chú ý thêm rằng: 𝑦 = [𝑦𝑖]𝑚×1 𝑋 = [𝑥𝑘𝑖]𝑚×𝑛 𝛼 = [𝛼𝑖]𝑚×1

Khi đó ta có thể sử dụng thư viện gói CVXOPT [4] để giải bài toán toàn phương (quadratic programming):

importcvxopt.solvers

solution =cvxopt.solvers.qp(P, q, G, h, A, b)

2.1.2.3 Lề mềm (soft – margin)

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

‖𝑤‖ . Ta muốn cực tiểu hóa giá trị ‖𝑤‖.

Nếu không tồn tại siêu phẳng nào phân tách được hai lớp dữ liệu, thì thuật toán lề mềm sẽ chọn một siêu phẳng phân tách các dữ liệu huấn luyện tốt nhất có thể, và đồng thời cực đại hóa khoảng cách giữa siêu phẳng với các dữ liệu được gán đúng

33

nhãn. Phương pháp này sử dụng các biến bù 𝜀𝑖, dùng để đo độ sai lệch của dữ kiện 𝑥𝑖:

yi(〈𝑤, 𝑥𝑖〉 + 𝑏) ≥ 1 − 𝜀𝑖, ∀𝑖 = {1, … , 𝑚} 𝜀𝑖 > 0, ∀𝑖 = {1, … , 𝑚}

Khi đó hàm mục tiêu của chúng ta là: 1

2‖𝑤‖2⟶ min 𝑤,𝑏,𝜀

Với ràng buộc trên thì hàm mục tiêu này có thể nhỏ tùy ý khi điều chỉnh 𝜀𝑖 > 0 tùy ý. Do vậy, hàm mục tiêu có thêm một số hạng mới để phạt thuật toán khi 𝜀𝑖 ≠ 0, và bài toán tối ưu hóa trở thành việc trao đổi giữa lề lớn và mức phạt nhỏ. Nếu hàm mục tiêu là tuyến tính thì bài toán trở thành: (adsbygoogle = window.adsbygoogle || []).push({});

1 2‖𝑤‖2+ 𝐶 ∑𝑚 𝜀𝑖 ⟶ 𝑖=1 min 𝑤,𝑏,𝜀 (2.1.29) yi(〈𝑤, 𝑥𝑖〉 + 𝑏) ≥ 1 − 𝜀𝑖, ∀𝑖 = {1, … , 𝑚} (2.1.30) 𝜀𝑖 ≥ 0, ∀𝑖 = {1, … , 𝑚} (2.1.31) Có thể giải bài toán trên bằng nhân tử Lagrange. Bài toán cần giải trở thành: min 𝑤,𝜀,𝑏max 𝛼,𝛽 {1 2‖𝑤‖2+ 𝐶 ∑ 𝜀𝑖− 𝑚 𝑖=1 ∑ 𝛼𝑖[𝑦𝑖(〈𝑤, 𝑥𝑖〉 + 𝑏) − 1 + 𝜀𝑖] − 𝑚 𝑖=1 ∑ 𝛽𝑖𝜀𝑖 𝑚 𝑖=1 } với 𝛼𝑖, 𝛽𝑖 ≥ 0. Sau đó dùng các phép biến đổi như trong [3], bài toán (2.1.29), (2.1.30), và (2.1.31) cuối cùng chúng ta đưa được về dạng:

∑ 𝛼𝑖−1 2 𝑚 𝑖=1 ∑ ∑ 𝛼𝑖𝛼𝑗𝑦𝑖𝑦𝑗〈𝑥𝑖, 𝑥𝑗〉 ⟶ max 𝛼 𝑚 𝑗=1 𝑚 𝑖=1 (2.1.32) ∑𝑚 𝛼𝑖𝑦𝑖 = 0 𝑖=1 (2.1.33) 0 ≤ 𝛼𝑖 ≤ 𝐶, ∀𝑖 = {1, … , 𝑚} (2.1.34) Bài toán trên không khác gì bài toán (2.1.20), (2.1.21) và (2.1.22), ngoại trừ điều kiện thêm cho biến 𝛼𝑖 bị chặn trên bởi C.

Ưu điểm của việc dùng hàm phạt tuyến tính là các biến bù biến mất khỏi bài toán đối ngẫu, và hằng số C chỉ xuất hiện dưới dạng một chặn trên cho các nhân tử Lagrange. Cách đặt vấn đề trên đã mang lại nhiều thành quả trong thực tiễn. Tham số

34

toán trở thành bài toán lề cứng (hard margin). Giá trị của C càng lớn thì độ cho phép các ngoại lệ càng lớn.

Trong quá trình huấn luyện, tham số C sẽ tác động trực tiếp tới số các ngoại lệ cho phép, và C ảnh hưởng tới số support vectors dùng trong mô hình. Cụ thể (Hình 2.1.11):

Giá trị của C càng nhỏ thì càng có nhiều điểm ngoại lệ. Điểm nhạy cảm của thuật toán với tập dữ liệu huấn luyện càng lớn (phương sai cao hơn và độ lệch nhỏ hơn).

Giá trị của C càng lớn thì càng có ít điểm ngoại lệ. Độ nhạy cảm của thuật toán với tập dữ liệu huấn luyện càng nhỏ (phương sai nhỏ hơn và độ lệch lớn hơn).

Hình 2.1. 11: Siêu phẳng cho cùng một tập huấn luyện với sự thay đổi của C tương ứng [8]

Hình 2.1.12 chỉ ra mối tương quan giữa siêu phẳng và hệ số 𝜀𝑖:

Khi 0 < 𝜀𝑖 < 1 thì điểm vẫn được phân tách đúng bởi siêu phẳng nhưng lại ở trong lề (margin) Khi 𝜀𝑖 > 1 thì điểm đã ở sai phía phân tách bởi siêu phẳng

35

Hình 2.1. 12: Các siêu phẳng dùng để phân tách dữ liệu khi hệ số 𝜺𝒊 thay đổi [8]

2.1.2.4 Support vectors

Sau khi có nghiệm 𝛼∗ của bài toán (2.1.26), (2.1.27), và (2.1.28) ta có thể tìm nghiệm (𝑤∗, 𝑏∗) cho bài toán ban đầu. Nhờ (2.1.18) ta có:

𝑤∗ = ∑𝑚𝑖=1𝛼𝑖∗𝑦𝑖𝑥𝑖 (2.1.35) Từ đó ta tính được giá trị tối ưu cho b (xem công thức (11) trong [9]):

𝑏∗= −1

2( min

𝑖∈{1…𝑚}:𝑦𝑖=1𝑤∗𝑇𝑥𝑖 + max

𝑖∈{1…𝑚}:𝑦𝑖=−1𝑤∗𝑇𝑥𝑖) (2.1.36) Trong tập dữ liệu huấn luyện, những vector𝑥𝑖 có 𝛼𝑖 > 0 được gọi là support vectors của siêu phẳng (tối ưu). Support vectors có khoảng cách ngắn nhất (‖𝑤1∗‖) tới siêu phẳng xác định bởi (𝑤∗, 𝑏∗). Điều này còn được thể hiện trong mục 3.4 ở [3].

2.1.3 SVM với kernels (nhân)

Trong SVM, hàm nhân (kernel) k(x, z) có vai trò đặc biệt. Trong (2.1.1) 𝑘(𝑥, 𝑧) = 〈𝑥, 𝑧〉 = ∑𝑛 𝑧𝑘𝑥𝑘

𝑘=1 . Việc dùng các kernel cho phép SVM áp dụng vào nhiều không gian khác nhau để phân tách dữ liệu. Khi sử dụng kernel, chúng ta ngầm

36

định làm việc trên một không gian mới, gọi là không gian đặc tính (feature space) và một ánh xạ (feature mapping) biến đổi không gian ban đầu của chúng ta: Φ: Rn → H, với hi vọng rằng việc phân tách dữ liệu của chúng ta (dựa trên features) sẽ dễ dàng hơn trên không gian ban đầu. Cụ thể hơn, lớp dữ liệu ở không gian ban đầu không tuyến tính sẽ được chuyển sang tuyến tính ở không gian mới. Thông thường không gian mới sẽ có số chiều lớn hơn số chiều của không gian cũ.

Kernel trick

Xem Hình 2.1.13 (a) và (c). Chúng ta không thể tìm ra một siêu phẳng tuyến tính nào (dùng một điểm trong không gian 1 – chiều cho hình (a) và một đường thẳng cho không gian 2 – chiều hình (c)) để phân tách được các tập điểm màu trắng và màu đen. Chúng ta dùng ánh xạ sau:

Φ1: x = (x1) → Φ1: x = (x1, x12) Φ1: x = (x1, x2) → Φ2: x = (x12, x22, √2x1x2)

Nhờ 2 ánh xạ trên mà chúng ta có thể biến đổi các lớp không thể phân tách bằng siêu phẳng tuyến tính ban đầu thành các lớp có thể phân tách bằng siêu phẳng tuyến tính. Hình 2.1.13 (b) và (d) là không gian sau khi biến đổi sau khi dùng các ánh xạ không tuyến tính, và số chiều đã tăng (tăng 1 chiều) so với không gian ban đầu.

Giả sử rằng chúng ta dùng ánh xạ Φ: Rn → H để sau đó tìm siêu phẳng trong không gian mớiH. Để làm điều này, chúng ta cần biến đổi tập huấn luyện x1, x2,…, xm (gọi là các attributes) từ không gian Rn sang không gian (x1), (x2),…, (xm) (thường gọi là các features) trong không gian H. Khi đó các công thức phía trên cũng sẽ điều chỉnh theo không gian H. Cụ thể: 〈𝑤, 𝑥〉 sẽ thành 〈Φ(𝑤), Φ(𝑥)〉, và các norm và tích vô hướng (inner product) cũng được tính toán trên không gian. (adsbygoogle = window.adsbygoogle || []).push({});

37

Hình 2.1. 13: Hình (a) và (c) minh họa cho các lớp không thể phân tách bởi tuyến tính trong không gian 1 – chiều và 2 – chiều tương ứng

Hình (b) và (d) dùng ánh xạ để biến đổi sang không gian nhiều chiều hơn, mà ở đó có thể phân tách được tuyến tính [3].

Người ta gọi SVM dùng các dữ liệu đã được biến đổi bởi một ánh xạ là kernel trick. Gọi kernel k sẽ biến hai điểm dữ liệu ban đầu (attribute) thành tích vô hướng của các đặc tính (features): 𝑘(𝑥, 𝑧) = 〈Φ(𝑥), Φ(𝑧)〉.

Hàm kernels

Có thể có nhiều hàm kernel dùng cho biến đổi phi tuyến. Dưới đây là những hàm thường dùng.

- Linear – kernel :

𝑘(𝑥, 𝑧) = 𝑥𝑇𝑧

- Polynominal – kernel (biến đổi phi tuyến với đa thức)

𝑘(𝑥, 𝑧) = (𝛾〈𝑥, 𝑧〉 + 𝑟)𝑑

38

- Gaussian radial basic function (RBF) – kernel (biến đổi phi tuyến với hàm Gaussian)

𝑘(𝑥, 𝑧) = 𝑒−‖𝑥−𝑧‖2𝜎2

- Sigmoid – kernel (dùng hàm sigmoid cho hai vector)

𝑘(𝑥, 𝑧) = tanh(𝛾𝑥𝑇𝑧 + 𝑐0)

- Trong đó 𝛾 và 𝑐0 là các hằng số.

2.1.4 Prediction – dự đoán

Giả sử chúng ta muốn dự đoán (prediction) cho một quan sát mới x sau khi chúng ta có 𝛼𝑖 được giải nhờ gói CVXOPT [4], và 𝑏∗ được tính từ (2.1.36). Lúc này, hàm phân lớp một điểm x sẽ dựa trên hàm dấu:

𝑓(𝑥) = 𝑠𝑔𝑛{∑ 𝛼𝑖𝑦𝑖𝑘(𝑥𝑖, 𝑥) + 𝑏∗ 𝑚 𝑖=1 } Có nghĩa là: {𝑦 = +1 𝑛ế𝑢 𝑓(𝑥) > 0, 𝑦 = −1 𝑛ế𝑢 𝑓(𝑥) < 0. 2.1.5 Tổng kết về SVM

SVM là một thuật toán có giám sát (supervised) trong Máy học. Ý tưởng của thuật toán là coi mỗi quan sát là một điểm trong không gian n – chiều (n là số đặc trưng trong tập dữ liệu) cần được phân lớp, khi đó thuật toán sẽ tìm cách xây dựng một siêu phẳng (hyperplan nhiều chiều) sao cho khoảng cách giữa siêu phẳng đó tới điểm dữ liệu gần nhất của một phân lớp là lớn nhất (maximum-margin).

Có 2 dạng bài cho phương pháp SVM:

Dạng thứ nhất là phân tách tuyến tính (linearly separable). Khi đó tồn tại một siêu phẳng để phân tách tuyến tính các lớp trong tập dữ liệu.

Một phần của tài liệu Nghiên cứu các giải thuật máy học và áp dụng vào bài toán dự đoán bệnh thận tại bệnh viện đa khoa tỉnh điện biên dùng ngôn ngữ python (Trang 34)