Jika ada cara untuk mengidentifikasi apakah dua set poin dapat dipisahkan oleh garis?
Kami memiliki dua set titik dan jika ada garis yang memisahkan dan sehingga semua titik dan hanya di satu sisi garis, dan semua titik dan hanya di sisi lainnya.
Algoritma yang paling naif yang saya buat adalah membangun poligon cembung untuk dan B dan mengujinya untuk persimpangan. Kelihatannya waktu kompleksitas waktu untuk ini harus O ( n log h ) seperti untuk membangun poligon cembung. Sebenarnya saya tidak mengharapkan ada perbaikan dalam kompleksitas waktu, saya tidak yakin itu bisa diperbaiki sama sekali. Tetapi setidaknya harus ada cara yang lebih indah untuk menentukan apakah ada garis seperti itu.
Properti dari dua set data Anda adalah keterpisahan linear , sederhananya, bahwa ada garis yang memisahkannya. Banyak pembelajaran mesin dikhususkan untuk menemukan pengklasifikasi linier , yang merupakan garis yang melakukan pemisahan yang Anda minati.
Ketika Anda berbicara tentang garis, saya akan berasumsi bahwa poin Anda ada di pesawat. Apa yang ingin Anda lakukan adalah menemukan nilai , w 2 dan w 3 , sehingga untuk semua titik ( a 1 , a 2 ) di set A , w 1 a 1 + w 2 a 2 ≥ w 3 dan untuk semua poin ( b 1 , b 2 ) dalam B , w 1 b 1 +w1 w2 w3 (a1,a2) A w1a1+w2a2≥w3 (b1,b2) B . Dengan demikian, ketimpangan w 1 x + w 2 y ≥ w 3 dapat dilihat sebagai classifier untuk set A .w1b1+w2b2<w3 w1x+w2y≥w3 A
Ada banyak algoritma pembelajaran mesin untuk menentukan garis yang optimal (regresi linier, regresi logistik, dan sebagainya). Ini akan menemukan nilai untuk berdasarkan beberapa metrik kesalahan. Kemudian Anda dapat menguji apakah semua poin diklasifikasikan dengan benar. Artinya, apakah semua nilai-nilai di A memuaskan persamaan di atas dan juga untuk B .w1,w2,w3 A B
Karena Anda hanya tertarik pada apakah garis tersebut ada, Anda perlu menggunakan teknik yang ada (meskipun itu mungkin akan lebih sederhana). Cukup setel kumpulan persamaan berikut dalam hal variabel bebas .w1,w2,w3
untuk setiap i = 1 , . . , | A | , di mana A = { ( a 1 1 , a 1 2 ) , ... , ( a | A | 1 , a | A | 2 ) } .w1ai1+w2ai2≥w3 i=1,..,|A| A={(a11,a12),…,(a|A|1,a|A|2)}
untuk setiap j = 1 , . . , | B | , di mana B = { ( b 1 1 , b 1 2 ) , ... , ( b | B | 1 , b | B | 2 ) } .w1bj1+w2bj2<w3 j=1,..,|B| B={(b11,b12),…,(b|B|1,b|B|2)}
Jika kendala ini konsisten, maka ada garis.
sumber
Jika saya ingat benar mendukung mesin vektor membangun memisahkan pesawat terbang. Jika Anda memilih dimensi hyperplane tentu saja menjadi garis. Anda mungkin harus memeriksa apakah ada asumsi tambahan yang harus dipenuhi. Dalam dua dimensi seluruh pendekatan mungkin sangat disederhanakan sehingga runtime mungkin lebih baik daripada pendekatan umum.2
sumber