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

Xét nghiệm Giải phẫu bệnh – Dẫn đường cho việc điều trị

Xét nghiệm giải phẫu bệnh được thực hiện trên những mẫu bệnh phẩm tế bào, bệnh phẩm mô từ các cơ quan trong cơ thể được sinh…

Phương pháp điều trị tủy răng tại nha khoa hiện nay

Viêm tủy răng là một trong những vấn đề về sức khỏe răng miệng nghiêm trọng. Người mắc viêm tủy răng không chỉ phải chịu đựng những…

Mỹ thuật ứng dụng là gì? (cập nhật 2023)

Khi những giá trị thẩm mỹ ngày càng được chú trọng thì các phẩm mỹ thuật ứng dụng ngày càng đi sâu vào đời sống của mọi…

Bát quái đồ là gì? Ý nghĩa và vai trò của bát quái trong phong thủy

Bát quái đồ là vật phẩm phong thủy được sử dụng khá rộng rãi và phổ biến trong văn hoá phương Đông, nhằm mang lại những niềm…

Du học ngành khoa học ứng dụng và cơ bản

>> Du học ngành khoa học đại cương >> Các trường có đào tạo ngành Khoa học ứng dụng và cơ bản Khoa học Ứng dụng và…

Trồng răng implant là gì? Những điều cần phải biết trước khi chọn trồng răng implant

Trồng răng implant là phương pháp trồng răng cấy trụ kim loại vào xương hàm để thay thế cho răng đã mất. Chính vì vậy trụ implant…