Một chút về thuật toán SVM (Support Vector Machine algorithm)

Tạo-liệu vài đều dài dòng về thuật toán máy tính có thể khiến nhiều người phản ứng lo lắng. Đa phần những người mới học sẽ bắt đầu bằng thuật toán đệ quy. Đây là phương pháp dễ học và sử dụng, tuy nhiên, nó có giúp bạn đạt được mục tiêu không? Đương nhiên không, vì bạn có thể làm nhiều hơn chỉ là dự đoán dữ liệu. Thuật toán máy tính (machine learning algorithms) có thể được coi như một kho vũ khí đa dạng, bạn có nhiều công cụ khác nhau trong đó, nhưng bạn cần biết cách sử dụng chúng vào đúng thời điểm. Hãy tưởng tượng “đệ quy” là một cây gươm có thể chia rẽ và cắt nhỏ dữ liệu một cách hiệu quả, tuy nhiên, nó không thể xử lí với dữ liệu phức tạp. Trái lại, Support Vector Machines (SVM) giống như một con dao nhỏ sắc nhọn – hoạt động tốt trên dữ liệu nhỏ nhưng có khả năng xây dựng các mô hình mạnh mẽ hơn.

SVM Là Gì?

SVM là một thuật toán học có giám sát, được sử dụng chủ yếu để phân loại dữ liệu. Trong thuật toán này, chúng ta biểu diễn dữ liệu như các điểm trong không gian n chiều (n là số lượng tính năng), với giá trị của mỗi tính năng đóng vai trò như một hệ số. Sau đó, chúng ta tìm “đường biên” để phân chia các lớp. Đường biên – có thể nghĩ đơn giản là một đường thẳng có thể chia các lớp thành hai phần riêng biệt. Hình ảnh dưới đây minh họa ý tưởng này:

Một chút về thuật toán SVM

Các Support Vectors đại diện cho các đối tượng trên đồ thị tọa độ, và Support Vector Machine là một biên giới để chia hai lớp một cách tốt nhất.

Trên đây, chúng ta đã thấy cách chia đường biên. Nhưng làm thế nào chúng ta có thể xác định “Làm sao để vẽ-xác định đúng đường biên”? Chúng ta sẽ tuân theo các tiêu chí sau:

Xác Định Đường Biên Đúng (Tình Huống 1):

Ở đây, chúng ta có 3 đường biên (A, B và C). Vậy đường nào là đường biên đúng cho nhóm các ngôi sao và hình tròn. Bạn cần nhớ quy tắc số một để chọn một đường biên, chọn một đường biên để phân chia hai lớp tốt nhất. Trong ví dụ này, đường B là đường biên chính xác.

Xác Định Đường Biên Đúng (Tình Huống 2):

Ở đây, chúng ta cũng có 3 đường biên (A, B và C). Theo quy tắc số 1, tất cả các đường đều đáp ứng. Quy tắc thứ hai là xác định khoảng cách xa nhất từ điểm gần nhất của một lớp đến đường biên. Khoảng cách này được gọi là “Margin”. Hình dưới đây cho thấy đường C có khoảng cách margin lớn nhất. Nếu chọn một đường biên có margin thấp hơn, có nguy cơ cao xảy ra sai sót trong việc phân loại dữ liệu sau này.

Xác Định Đường Biên Đúng (Tình Huống 3):

Hãy sử dụng các nguyên tắc đã nêu ở trên để chọn đường biên cho trường hợp sau. Có thể có một số người sẽ chọn đường B vì nó có margin cao hơn đường A, nhưng đó sẽ không đúng theo quy tắc đầu tiên – chúng ta cần chọn đường biên để phân chia các lớp thành riêng biệt. Vì vậy, đường A mới là lựa chọn chính xác.

Có Thể Phân Loại Hai Lớp (Tình Huống 4)?

Hãy xem hình dưới đây. Chúng ta không thể chia thành hai lớp riêng biệt bằng một đường thẳng duy nhất. Tuy nhiên, SVM cho phép chấp nhận một số ngoại lệ và tìm ra đường biên có biên giới tối đa. Vì vậy, chúng ta có thể nói rằng SVM có khả năng mạnh mẽ trong việc chấp nhận các ngoại lệ.

Tìm Đường Biên Để Phân Cách Hai Lớp (Tình Huống 5)

Trong trường hợp dưới đây, chúng ta không thể tìm được một đường biên tuyến tính tương đối để phân chia các lớp. Vậy làm thế nào để SVM phân loại dữ liệu thành hai lớp riêng biệt? Cho đến bây giờ, chúng ta chỉ nhìn vào các đường biên tuyến tính. SVM có thể giải quyết vấn đề này bằng cách thêm một tính năng. Ở đây, chúng ta sẽ thêm tính năng z = x^2 + y^2. Bây giờ, dữ liệu sẽ được biến đổi theo trục x và z như sau:

Một chút về thuật toán SVM

Trong sơ đồ trên, các điểm cần chú ý là:

  • Tất cả các dữ liệu trên trục z sẽ là số dương vì nó là tổng bình phương x và y.
  • Các điểm tròn đỏ xuất hiện gần trục x và y hơn, do đó, z sẽ nhỏ hơn và nằm gần trục x hơn trên đồ thị (z, x).

Trong SVM, dễ dàng tìm một siêu phẳng tuyến tính để chia thành hai lớp. Tuy nhiên, có một câu hỏi nảy sinh rằng chúng ta có cần phải thêm tính năng này thủ công không? Không, bởi vì SVM sử dụng một kỹ thuật gọi là “kernel trick” (kỹ thuật hạt nhân). Kỹ thuật này biến đổi không gian đầu vào sang không gian có số chiều cao hơn, tức là SVM không phân chia các vấn đề thành các vấn đề riêng biệt. Các tính năng này được gọi là kernel. Đơn giản, SVM thực hiện một số phép biến đổi dữ liệu phức tạp, sau đó tìm ra quá trình phân chia dựa trên các nhãn hoặc đầu ra đã xác định trước.

Ở các bài viết tiếp theo, mình sẽ đưa ra ví dụ và hướng dẫn về SVM bằng ngôn ngữ lập trình Python. Cảm ơn bạn đã đọc!

HEFC đã chỉnh sửa bài viết này. Xem thêm tại HEFC

Related Posts

Glutaraldehyde – Chất Sát Trùng Phổ Rộng

Ngày 03/05/2019 | Đã đọc 32,183 lần | Tác giả: TS. Huỳnh Trường Giang – Khoa Thuỷ sản – Đại học Cần Thơ 1. Glutaraldehyde là gì…

VỐN ĐIỀU LỆ TIẾNG ANH LÀ GÌ?

1. Vốn điều lệ tiếng Anh là gì? Charter là gì? Vốn điều lệ tiếng Anh được dịch là “Charter capital” hoặc có trường hợp khác được…

Thuế khoán là gì? Đối tượng áp dụng và cách tính thế nào?

1. Thuế khoán là gì? Thuế khoán là một loại thuế trọn gói dành cho các hộ kinh doanh và cá nhân kinh doanh. Do mức thuế…

Những điều cần biết về thuốc giảm đau thần kinh pregabalin (Lyrica)

Pregabalin (Lyrica) là gì? Cơ chế hoạt động của thuốc là gì? Cần lưu ý những điều gì khi dùng thuốc? Hãy cùng YouMed phân tích bài…

Mặt trái xoan là gì? Cách nhận biết và tướng số nam nữ

Mặt trái xoan luôn là một hình mẫu mà nhiều người ưu ái, đặc biệt là phụ nữ. Tuy nhiên, có rất nhiều điều thú vị xoay…

CỔNG GIAO DỊCH BẢO HIỂM XÃ HỘI ĐIỆN TỬ

Thông tin về mã bảo hiểm y tế và quyền lợi người tham gia qua các ký tự trên thẻ BHYT được quy định như thế nào?…