Thuật toán SVM (Support Vector Machine) là một kỹ thuật học máy có giám sát thường được sử dụng trong nhận dạng mẫu, nhận dạng văn bản và phân loại, đặc biệt là phân loại nhị phân.
SVM có thể được sử dụng trong các ứng dụng thực tế như: phát hiện những người mắc các bệnh thông thường như tiểu đường, nhận dạng ký tự viết tay, phân loại ký tự - tin tức theo chủ đề, dự đoán giá thị trường chứng khoán…
SVM tách tất cả các đối tượng dữ liệu trong một không gian đặc trưng thành hai lớp (hình 3.4). Các đối tượng dữ liệu phải có các đặc trưng {x1 ... xn} và nhãn lớp (class lable), yi. SVM coi mỗi đối tượng dữ liệu như một điểm trong
65 không gian đặc trưng sao cho đối tượng này thuộc về lớp này hay lớp kia. Cụ thể, một đối tượng dữ liệu (được đặc trưng bởi vectơ đặc trưng của nó) hoặc thuộc về một lớp, trong trường hợp đó nhãn lớp là yi = 1 hoặc nó không thuộc lớp (ngụ ý rằng nó thuộc về lớp khác) trong trường hợp đó nhãn lớp là yi = -1. Trong quá trình huấn luyện, bộ phân loại SVM tìm một ranh giới quyết định trong không gian đặc trưng để phân tách các đối tượng dữ liệu thành hai lớp. Bài toán tối ưu hóa là tìm ranh giới quyết định (một siêu phẳng tuyến tính- a linear hyperplane) có khoảng cách lề (margin) lớn nhất giữa hai lớp. Lề (margin) của siêu phẳng là khoảng cách giữa các siêu phẳng song song cách đều nhau ở hai bên của siêu phẳng sao cho khoảng trống là khoảng trống của các đối tượng dữ liệu. Việc tối ưu hóa trong quá trình đào tạo (training) tìm thấy một siêu phẳng có khoảng cách tương thích nhất. Sau đó, SVM sử dụng siêu phẳng đó để dự đoán lớp (class) của một đối tượng dữ liệu mới sau khi được trình bày với vectơ đặc trưng của nó.
SVM nhằm mục đích giảm thiểu phân loại sai và tối đa hóa lề hình học (the geometric margin). Dạng cơ bản nhất của SVM là SVM tuyến tính (linear SVM)
trong đó tất cả dữ liệu đều có thể phân tách tuyến tính, nhưng trên thực tế, tập dữ liệu phức tạp đến mức không thể giải quyết đơn giản bằng SVM tuyến tính. May mắn thay, SVM có thể hoạt động hiệu quả để phân loại phi tuyến tính bằng cách áp dụng thủ thuật hạt nhân (kernel trick), ánh xạ ngầm các đầu vào vào một không gian mới với kích thước cao hơn giúp giảm thiểu độ phức tạp phi tuyến tính. Hãy xem xét một tập hợp các điểm thuộc một trong hai lớp:
M = {(x1, y1), (x2, y2),… (xn, yn)}
Trong đó: yn= 1 hoặc yn= -1 là nhãn của mỗi lớp (class), n là số lượng mẫu. Mỗi xn là một vector thực với p-chiều (p-dimensional)