Secara komputasi cara yang paling efektif untuk memutuskan apakah dua set titik dapat dipisahkan secara linear adalah dengan menerapkan pemrograman linier . GLTK sangat cocok untuk tujuan itu dan hampir setiap bahasa tingkat tinggi menawarkan antarmuka untuk itu - R , Python, Oktaf, Julia, dll.
Sehubungan dengan jawaban yang menyarankan penggunaan SVM :
Menggunakan SVM adalah solusi sub-optimal untuk memverifikasi keterpisahan linear karena dua alasan:
SVM adalah pengklasifikasi margin lunak. Itu berarti kernel linear SVM mungkin puas dengan pesawat pemisah yang tidak memisahkan sempurna meskipun itu mungkin benar-benar mungkin. Jika Anda kemudian memeriksa tingkat kesalahan itu tidak akan 0 dan Anda akan salah menyimpulkan bahwa dua set tidak dapat dipisahkan secara linear. Masalah ini dapat dilemahkan dengan memilih koefisien biaya C yang sangat tinggi - tetapi hal ini muncul dengan biaya komputasi yang sangat tinggi.
SVM adalah pengklasifikasi margin maksimum. Itu berarti algoritme akan berusaha menemukan bidang pemisah yang memisahkan kedua kelas sambil berusaha menjauhi keduanya sejauh mungkin. Sekali lagi ini adalah fitur yang meningkatkan upaya komputasi yang tidak perlu karena menghitung sesuatu yang tidak relevan untuk menjawab pertanyaan keterpisahan linear.
Katakanlah Anda memiliki satu set poin A dan B:
Maka Anda harus meminimalkan 0 untuk kondisi berikut:
(A di bawah ini adalah matriks, bukan set poin dari atas)
"Meminimalkan 0" secara efektif berarti Anda tidak perlu benar-benar mengoptimalkan fungsi objektif karena ini tidak perlu untuk mengetahui apakah set dapat dipisahkan secara linear.
Pada akhirnya ( ) adalah mendefinisikan bidang yang memisahkan.
Jika Anda tertarik pada contoh kerja dalam R atau rincian matematika, lalu lihat ini .