Tìm một số tâm vòng tròn đã biết tối đa hóa số điểm trong một khoảng cách cố định


10

Tôi có một bộ dữ liệu 2 chiều trong đó tôi muốn tìm các tâm của một số tâm vòng tròn ( ) đã chỉ định để tối đa hóa tổng số điểm trong một khoảng cách xác định ( ).NR

ví dụ: tôi có 10.000 điểm dữ liệu và tôi muốn tìm tâm của vòng tròn thu được càng nhiều điểm càng tốt trong bán kính . 5 trung tâm và bán kính 10 được đưa ra trước, không xuất phát từ dữ liệu.(Xi,Yi)N=5R=10

Sự hiện diện của một điểm dữ liệu trong một vòng tròn là một / hoặc mệnh đề nhị phân. Nếu , không có sự khác biệt về giá trị so với điểm 11 đơn vị so với 100 đơn vị, vì cả hai đều> 10. Tương tự như vậy trong vòng tròn, không có giá trị nào thêm khi ở gần trung tâm so với gần rìa . Một điểm dữ liệu nằm trong một trong các vòng tròn hoặc ngoài.R=10

Có một thuật toán tốt có thể được sử dụng để giải quyết vấn đề này? Những điều này dường như liên quan đến các kỹ thuật phân cụm, nhưng thay vì giảm thiểu khoảng cách trung bình, hàm "khoảng cách" là 0 nếu điểm nằm trong của bất kỳ điểm nào và 1 điểm khác.RN

Sở thích của tôi là tìm cách làm điều này trong R, nhưng bất kỳ cách tiếp cận nào cũng sẽ được đánh giá cao.


Là vòng tròn chồng chéo được phép?
tò mò_cat

1
Đây thực chất là một hoạt động lân cận (hoặc tiêu điểm) trên bộ dữ liệu raster. Sẽ tốt hơn nếu kiểm tra trang web của GIS để xem nó đã được trả lời chưa, và kiểm tra các gói R để tiến hành phân tích Raster.
Andy W

1
Chồng chéo vòng tròn được cho phép, nhưng các điểm dữ liệu được bao phủ bởi cả hai vòng tròn sẽ không được tính hai lần. Cảm ơn con trỏ đến hoạt động lân cận / tiêu điểm trên bộ dữ liệu raster. Tôi sẽ tìm kiếm một cái gì đó dọc theo những dòng đó.
đại tá.triq

@Andy W Mặc dù các hoạt động đầu mối đương nhiên sẽ liên quan đến một giải pháp, nhưng câu hỏi này vượt quá chuyên môn của cộng đồng GIS, IMHO, bởi vì đây thực sự là một vấn đề tối ưu hóa (khá khó). Đây không phải là một mạng lưới tìm kiếm đơn giản tối đa. Tôi sẽ khuyên bạn nên giữ nó ở đây trong một thời gian và sau đó, nếu không có giải pháp thỏa đáng nào xuất hiện, di chuyển đến một trang web định hướng lập trình.
whuber

.... hoặc di chuyển đến math.overflow? Họ có thể có một số hiểu biết về điều này quá.
tò mò_cat

Câu trả lời:


1

Đây là một vấn đề k-có nghĩa là biến thể. Bán kính của các trung tâm không quan trọng, miễn là chúng được giả định bằng nhau.

Liên kết:

Nó sẽ đặt tâm của các vòng tròn tại các vị trí có xác suất cao nhất của các điểm.

Thủ tục K-nghĩa cổ điển:

  1. đặt số lượng cụm thành 5
  2. đặt mỗi điểm trong một cụm ngẫu nhiên
  3. cho mỗi cụm, tính toán vị trí trung bình
  4. đối với mỗi điểm, hãy tính khoảng cách đến từng vị trí trung bình mới
  5. liên kết thành viên với cụm gần nhất
  6. lặp lại cho đến khi hoàn thành (lặp lại, thay đổi vị trí hoặc số liệu lỗi khác)

Tùy chọn:

  • Bạn có thể sử dụng một số thư giãn dưới 3, trong đó bạn dịch vị trí trung bình từ từ sang vị trí mới.
  • đây là một hệ thống riêng biệt nên nó không hội tụ hoàn hảo. Đôi khi nó xảy ra và bạn có thể kết thúc khi điểm ngừng thay đổi thành viên, nhưng đôi khi họ chỉ ngọ nguậy một chút.
  • Nếu bạn đang tạo mã của riêng mình (như hầu hết mọi người nên) thì bạn có thể sử dụng phương tiện kOR POR ở trên làm điểm bắt đầu và thực hiện một số biến thể trên EM được thông báo bằng phần trăm điểm riêng và được bao quanh hoàn toàn bởi các vòng tròn.

Tại sao K-có nghĩa là tấn công vấn đề:

  • Nó tương đương với việc lắp Mô hình hỗn hợp Gaussian trong đó hiệp phương sai của các thành phần bằng nhau. Các trung tâm của các thành phần hỗn hợp sẽ được đặt tại các vị trí có kỳ vọng cao nhất về điểm. Các đường cong của xác suất không đổi sẽ là các vòng tròn. Đây là thuật toán EM nên nó có sự hội tụ tiệm cận. Các thành viên là cứng, không mềm.
  • Tôi nghĩ rằng nếu giả định cơ bản của mô hình hỗn hợp các thành phần phương sai bằng nhau là "đóng" một cách hợp lý, bất kể điều đó có nghĩa là gì, thì phương pháp này sẽ phù hợp. Nếu bạn chỉ phân phối ngẫu nhiên các điểm, nó ít có khả năng phù hợp tốt.

Cần có một số điểm tương tự của "Zero Inflated Poisson" trong đó có một thành phần không phải là gaussian thu thập phân phối đồng đều.

Nếu bạn muốn "điều chỉnh" mô hình của mình và tự tin rằng có đủ điểm mẫu thì bạn có thể khởi tạo với phương tiện k, và sau đó thực hiện một bộ điều chỉnh k-mean tăng cường loại bỏ các điểm bên ngoài bán kính của vòng tròn khỏi cạnh tranh. Nó sẽ hơi nhiễu các vòng tròn bạn có, nhưng nó có thể có hiệu suất được cải thiện đôi chút với dữ liệu.


Bạn có thể vui lòng nói rõ hơn một chút về cách K-nghĩa giải quyết vấn đề này không?
whuber

Cám ơn vì sự gợi ý. Tôi vẫn chưa rõ ràng rằng phương pháp K có nghĩa là giải quyết vấn đề? Hãy xem xét ví dụ về ba cụm dữ liệu được tạo (0,1) thông thường, trong đó các tâm được bù 5 đơn vị hoặc hơn. Các trung tâm K-mean sẽ cho mật độ tối đa. Bây giờ cắt bỏ một số điểm có "lỗ" sao cho dữ liệu gần 0,5 đến trung tâm được xóa. K-mean vẫn sẽ hiển thị về cùng một trung tâm, nhưng nếu bạn đang cố gắng đạt được phạm vi bảo hiểm tối đa cho N = 3, thì R = 0,5 rõ ràng không phải là câu trả lời đúng (vì các lỗ bánh donut không chứa dữ liệu). Tôi có hiểu lầm gì không?
đại tá.triq

Sẽ xem xét câu hỏi của bạn nhiều hơn để có câu trả lời tốt hơn khi tôi có thời gian. Tôi thích cho phép trọng lượng tiêu cực. Đôi khi có thể xử lý bánh rán dữ liệu cũng như đa thức hợp lý xuyên tâm.
EngrStudent

0

Ai đó có thể có một thuật toán chính thức tốt hơn, nhưng đây là một cách tiếp cận vũ phu (hack?). Tôi sẽ sử dụng một trong các thuật toán tạo hình lục giác để tính toán biểu đồ 2D. Thích hexbintrong R.

Tôi sẽ sử dụng kích thước hình lục giác gần như chu vi vòng tròn bán kính R của bạn và sau đó sắp xếp trên các thùng N hàng đầu. Nếu bạn có Nthùng rác ở xa, thật tuyệt. Bây giờ một cách là di chuyển vòng tròn cục bộ theo tỷ lệ 2 * R (theo hướng x và y) từ tâm của các hình lục giác mật độ cao nhất. Mật độ tính toán có thể tối ưu hóa vị trí cục bộ. Điều này sẽ giải thích cho việc các hình lục giác không phải là một cửa sổ chuyển động đối với nguồn gốc cố định.

Nếu tất cả các thùng hàng đầu gần nhau, bạn phải có một số cách thông minh hơn để di chuyển vòng tròn của mình trong vùng lân cận đó.

Lưu ý rằng tôi có thể nghĩ về một số trường hợp góc mà chiến lược ngây thơ như vậy sẽ thất bại một cách ngoạn mục. Tuy nhiên, chỉ là một điểm khởi đầu.

Trong khi đó, tôi hy vọng ai đó có một thuật toán tốt hơn.


1
Một cái gì đó như thế này có thể giải quyết vấn đề, ít nhất là xấp xỉ, cho một vòng tròn. (Điều này có thể dễ dàng được thực hiện bằng cách sử dụng số liệu tiêu cự với một hệ thống GIS.) Nhưng nó sẽ không giải quyết được vấn đề nhiều vòng tròn.
whuber

@whuber: Điều gì về việc giải một vòng tròn sau đó bỏ tất cả các điểm nằm trong vòng tròn đó và sau đó lặp lại thuật toán ban đầu? Bạn có thể thấy tình huống này sẽ thất bại?
tò mò_cat

Vâng, dễ dàng. (Của bạn là một "thuật toán tham lam.") Hãy xem xét trường hợp trong một chiều với các điểm tại . Thuật toán của bạn đặt vòng tròn đầu tiên bao gồm và vòng thứ hai bao gồm : tám điểm trong toto . Một giải pháp tốt hơn bao gồm với một vòng tròn và với nhau: chín điểm. R=10,N=20,1,2,20,21,28,29,30,31,32,39,4028,29,30,31,320,1,220,21,28,29,3030,31,32,39,40
whuber

@whuber: Đúng. Bạn đúng rồi. Mặc dù tùy thuộc vào cấu trúc của các điểm đầu vào trong một số trường hợp (nhiều?), Các giải pháp tham lam và không tham lam có thể giống hệt hoặc gần với? Tôi không biết.
tò mò_cat

@whuber: Vấn đề có vẻ chủ yếu ở ranh giới. Có gì if (hơi giống như tôi đã đề cập trong câu trả lời của tôi) một di chuyển cửa sổ +R-Rvà sau đó đặt tất cả các giải pháp có tính khả thi trên một chồng và chọn trong số đó. ví dụ: Trong bạn 1Dví dụ về đánh 28,29,30,31,32nó muốn trượt cửa sổ đến 18-2838-48tìm kiếm tất cả các giải pháp khả thi. Sau đó, trong phạm vi này có thể tìm kiếm các kết hợp năng suất điểm tối đa. Không chắc chắn nếu điều đó sẽ giúp? Tôi đang cố gắng xem liệu thuật toán ngây thơ của tôi có thể được cứu vãn không? :)
tò mò_cat
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.