SVM giải quyết bài toán gì?
Cho một tập điểm đã gán nhãn thuộc hai lớp, có vô số đường thẳng tách được chúng. SVM chọn đường sao cho khoảng trống hai bên rộng nhất — trực giác là đường nằm giữa hai lớp thì an toàn nhất với dữ liệu mới. Khoảng trống đó gọi là lề (margin).
Hàm quyết định
Mô hình dự đoán bằng dấu của một hàm số:
f(x) = Σᵢ αᵢ yᵢ K(xᵢ, x) + b → nhãn = sign f(x)
Với kernel tuyến tính, hàm này thu về f(x) = wᵀx + b và bề rộng lề đúng bằng
2/‖w‖. Bài toán huấn luyện là cực tiểu ½‖w‖² + C·Σξᵢ: vừa muốn lề rộng
(‖w‖ nhỏ), vừa muốn ít điểm vi phạm (Σξᵢ nhỏ).
Lề mềm và tham số C
Dữ liệu thực luôn chồng lấn, nên SVM cho phép một số điểm vi phạm lề với “giá” là biến bù
ξᵢ. C là đơn giá của mỗi vi phạm.
- C nhỏ — vi phạm rẻ → lề rộng, nhiều điểm nằm trong lề, mô hình đơn giản và ổn định, nhưng có thể thiếu khớp.
- C lớn — vi phạm đắt → biên uốn theo từng điểm để không sai điểm nào, lề hẹp, dễ quá khớp nhiễu.
Trong bảng thử nghiệm, hãy chọn bộ Hai cụm chồng lấn rồi kéo C từ nhỏ đến lớn và quan sát hai đường gạch xích lại gần nhau.
Kernel: tách phi tuyến mà không cần đổi không gian
Nếu hai lớp không tách được bằng đường thẳng, ta có thể ánh xạ dữ liệu sang một không gian
nhiều chiều hơn, nơi chúng tách được bằng siêu phẳng. Điểm hay của SVM là không cần tính ánh xạ
đó: mọi công thức chỉ dùng tích vô hướng giữa các điểm, nên chỉ cần thay tích vô hướng bằng
một hàm hạt nhân K(x, z). Đây là kernel trick.
| Kernel | Công thức | Tham số | Dùng khi |
|---|---|---|---|
| Tuyến tính | xᵀz | C | Hai lớp gần như tách được bằng đường thẳng; dễ giải thích qua w. |
| RBF (Gauss) | exp(−γ‖x−z‖²) | C, γ | Mặc định tốt cho biên phi tuyến bất kỳ. |
| Đa thức | (γxᵀz + r)^d | C, γ, d, r | Khi biết trước quan hệ dạng đa thức; bậc cao dễ bất ổn. |
| Sigmoid | tanh(γxᵀz + r) | C, γ, r | Ít dùng; không luôn xác định dương nên nghiệm có thể kém ổn định. |
γ ảnh hưởng thế nào
Với RBF, γ quy định mỗi điểm “toả ảnh hưởng” xa bao nhiêu. γ nhỏ cho biên gần như
thẳng; γ lớn khiến mỗi điểm tạo một hòn đảo riêng quanh mình — trông hoàn hảo trên tập huấn luyện
nhưng vô dụng với dữ liệu mới. C và γ luôn cần chọn cùng nhau (thường bằng tìm kiếm lưới kèm
kiểm định chéo).
Thuật toán SMO
Bài toán đối ngẫu là một bài toán quy hoạch bậc hai theo các hệ số αᵢ, với ràng buộc
0 ≤ αᵢ ≤ C và Σ αᵢyᵢ = 0. SMO giải nó bằng cách lặp lại: chọn một cặp
(αᵢ, αⱼ) đang vi phạm điều kiện KKT, tối ưu chính xác trên riêng cặp đó
(ràng buộc đẳng thức khiến không thể sửa một hệ số đơn lẻ), cập nhật ngưỡng b, rồi
tiếp tục cho đến khi không còn vi phạm nào vượt sai số dừng. Nhờ mỗi bước chỉ là bài toán hai biến
có nghiệm dạng đóng, không cần thư viện tối ưu bên ngoài.
Đọc bảng kết quả
- Vector hỗ trợ — điểm có
αᵢ > 0, khoanh vòng vàng trên biểu đồ. Tỉ lệ SV rất cao là dấu hiệu mô hình quá phức tạp so với dữ liệu. - SV bị chặn (α = C) — điểm nằm trong lề hoặc bị phân lớp sai.
- Độ chính xác (train) — chỉ tính trên tập huấn luyện, không phản ánh khả năng tổng quát hoá.
- Bề rộng lề 2/‖w‖ — chỉ có nghĩa hình học với kernel tuyến tính.
Vài thí nghiệm nên thử
- Hai cụm + kernel tuyến tính: xoá lần lượt các điểm ở xa — biên không đổi; xoá một vector hỗ trợ — biên dịch ngay.
- Hai cụm chồng lấn: kéo C từ 0.01 lên 1000 và theo dõi số SV bị chặn.
- XOR hoặc Hai vòng tròn: so kernel tuyến tính (thất bại) với RBF và đa thức bậc 2.
- Moons + RBF: đặt γ = 100 để thấy rõ hiện tượng quá khớp, rồi bật γ tự động.
- Thêm một điểm lạc loài giữa lòng lớp đối diện với C nhỏ rồi C lớn — quan sát mô hình bỏ qua hay chạy theo nó.