Tính toán cách hiệu quả nhất để quyết định xem hai tập hợp điểm có thể phân tách tuyến tính hay không bằng cách áp dụng lập trình tuyến tính . GLTK hoàn hảo cho mục đích đó và khá nhiều ngôn ngữ highlevel cung cấp giao diện cho nó - R , Python, Octave, Julia, v.v.
Đối với câu trả lời gợi ý việc sử dụng SVM :
Sử dụng SVM là một giải pháp tối ưu phụ để xác minh khả năng phân tách tuyến tính vì hai lý do:
Các SVM là các phân loại lề mềm. Điều đó có nghĩa là một hạt nhân tuyến tính SVM có thể giải quyết cho một mặt phẳng phân tách không tách biệt hoàn hảo mặc dù nó có thể thực sự có thể. Nếu sau đó bạn kiểm tra tỷ lệ lỗi thì nó sẽ không phải là 0 và bạn sẽ kết luận sai rằng hai bộ không tách rời tuyến tính. Vấn đề này có thể được giảm bớt bằng cách chọn một hệ số chi phí C rất cao - nhưng điều này xuất hiện với chi phí tính toán rất cao.
Các SVM là các phân loại lề tối đa. Điều đó có nghĩa là thuật toán sẽ cố gắng tìm một mặt phẳng phân tách đang tách hai lớp trong khi cố gắng tránh xa cả hai càng xa càng tốt. Một lần nữa, đây là một tính năng làm tăng nỗ lực tính toán một cách không cần thiết vì nó tính toán một cái gì đó không liên quan để trả lời câu hỏi về phân tách tuyến tính.
Giả sử bạn có một tập hợp các điểm A và B:
Sau đó, bạn phải giảm thiểu 0 cho các điều kiện sau:
(A bên dưới là ma trận, không phải tập hợp các điểm từ phía trên)
"Tối thiểu hóa 0" một cách hiệu quả có nghĩa là bạn không cần thực sự tối ưu hóa một hàm mục tiêu bởi vì điều này là không cần thiết để tìm hiểu xem các bộ có thể phân tách tuyến tính hay không.
Cuối cùng ( ) là xác định mặt phẳng phân tách.
Trong trường hợp bạn quan tâm đến một ví dụ làm việc trong R hoặc các chi tiết toán học, thì hãy kiểm tra điều này .