Đường phân cách hai bộ điểm


19

Nếu có một cách để xác định nếu hai bộ điểm có thể được phân tách bằng một dòng?

Chúng ta có hai tập hợp điểm B nếu có một đường phân cách AB sao cho tất cả các điểm của A và chỉ A ở một bên của dòng và tất cả các điểm của B và chỉ B ở phía bên kia.ABABAABB

Thuật toán ngây thơ nhất mà tôi nghĩ ra là xây dựng đa giác lồi cho B và kiểm tra chúng cho giao điểm. Có vẻ như thời gian phức tạp về thời gian cho điều này nên là O ( n log h ) như để xây dựng một đa giác lồi. Thật ra tôi không mong đợi bất kỳ sự cải thiện nào về độ phức tạp thời gian, tôi không chắc nó có thể được cải thiện chút nào. Nhưng ít nhất nên có một cách đẹp hơn để xác định nếu có một dòng như vậy.ABO(nlogh)

Câu trả lời:


19

Cả uli và Dave Clarke đều quan sát chính xác rằng đây là một vấn đề lập trình tuyến tính, ngay cả ở các chiều cao hơn (Hai tập hợp điểm này có thể được phân tách bằng một siêu phẳng không?) Và do đó nó có thể được giải quyết trong thời gian đa thức. Nhưng vì điểm của bạn nằm trong mặt phẳng, vấn đề của bạn thực sự có thể được giải quyết trong thời gian , trong đó n là tổng số điểm.O(n)n

Giải pháp đơn giản nhất có lẽ là thuật toán ngẫu nhiên của Seidel. Chọn một điểm đầu vào thống nhất một cách ngẫu nhiên, và đệ quy tính toán một đường phân cách cho tất cả các điểm ngoại trừ p .p p

  • Nếu không có dòng nào như vậy tồn tại, thì các điểm ban đầu không thể tách rời.

  • Nếu là ở phía đúng của , sau đó tách các điểm gốc.p

  • Nếu nằm ở phía sai của , thì các điểm ban đầu có thể được phân tách bằng một đường qua p hoặc các điểm ban đầu hoàn toàn không thể tách rời. Điều kiện này rất dễ kiểm tra trong O ( n ) thời gian [bài tập].ppO(n)

Thuật toán này chạy trong thời gian với xác suất cao (liên quan đến các lựa chọn ngẫu nhiên của thuật toán). Để biết thêm chi tiết, xem bài báo gốc hoặc bất kỳ số lượng ghi chú bài giảng trực tuyến.O(n)


Cảm ơn bạn rất nhiều, tôi sẽ đi sâu vào bài báo này.
com

Trong trường hợp thứ ba của bạn, bạn nói rằng nó có thể là dòng đi qua , làm thế nào để biết điều đó? p
Tarrasch

10

Thuộc tính của hai bộ dữ liệu của bạn là tính phân tách tuyến tính , đơn giản là có một dòng phân tách chúng. Rất nhiều máy học được dành cho việc tìm các phân loại tuyến tính , đó là các dòng thực hiện phân tách mà bạn quan tâm.

Khi bạn đang nói về các dòng, tôi sẽ cho rằng điểm của bạn nằm trong mặt phẳng. Những gì bạn muốn làm là tìm giá trị , w 2w 3 , như vậy mà cho tất cả các điểm ( một 1 , một 2 ) trong tập Một , w 1 một 1 + w 2 một 2w 3 và cho tất cả các điểm ( b 1 , b 2 ) trong B , w 1 b 1 +w1w2w3(a1,a2)Aw1a1+w2a2w3(b1,b2)B . Do đó, sự bất bình đẳng w 1 x + w 2 y w 3 có thể được coi là một phân loại cho bộ Một .w1b1+w2b2<w3w1x+w2yw3A

Có rất nhiều thuật toán học máy để xác định một dòng tối ưu (hồi quy tuyến tính, hồi quy logistic, v.v.). Chúng sẽ tìm các giá trị cho dựa trên một số số liệu lỗi. Sau đó, bạn có thể kiểm tra xem tất cả các điểm được phân loại chính xác. Đó là, cho dù tất cả các giá trị trong Một thỏa mãn phương trình trên và tương tự cho B .w1,w2,w3AB

w1,w2,w3

w1a1i+w2a2iw3i=1,..,|A|A={(a11,a21),,(a1|A|,a2|A|)}

w1b1j+w2b2j<w3j=1,..,|B|B={(b11,b21),,(b1|B|,b2|B|)}

Nếu những ràng buộc này là nhất quán, thì một dòng tồn tại.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.