Phân cụm không gian hiệu quả


9

Hầu hết các thuật toán phân cụm mà tôi thấy bắt đầu bằng việc tạo khoảng cách từng điểm cho tất cả các điểm, điều này trở thành vấn đề trên các bộ dữ liệu lớn hơn. Có ai không làm điều đó? Hoặc nó trong một số cách tiếp cận một phần / gần đúng / so le?

Thuật toán phân cụm / triển khai nào chiếm ít hơn không gian O (n ^ 2)?

Có một danh sách các thuật toán và yêu cầu Thời gian và Không gian của chúng ở đâu đó không?


2
Có lẽ việc phân cụm kiểu cửa sổ (ví dụ SaTScan, satscan.org ) sẽ đáp ứng yêu cầu của bạn. Chương trình cụ thể đó dành cho dữ liệu không gian / thời gian, vì vậy không thực sự có ý nghĩa đối với các kích thước cao hơn, nhưng có thể sẽ cung cấp cho bạn một số ý tưởng hoặc một nơi để bắt đầu.
Andy W

Câu trả lời:


5

K-Means và Mean-Shift sử dụng các mô tả mẫu thô (không cần tính toán trước một ma trận ái lực).

Mặt khác, để phân cụm phổ hoặc phân cụm lặp công suất, bạn có thể sử dụng biểu diễn ma trận thưa thớt (ví dụ: Hàng thưa thớt nén) của ma trận ái lực gần nhất k-lân cận (đối với một số liệu khoảng cách hoặc ái lực). Nếu k nhỏ (giả sử 5 hoặc 10). Bạn sẽ nhận được một biểu diễn rất hiệu quả về không gian (2 * n_samples * k * 8 byte cho các giá trị dấu phẩy động chính xác kép).


2

Một số thuật toán phân cụm có thể sử dụng các cấu trúc chỉ mục không gian. Điều này cho phép ví dụ DBSCAN và OPTICS chạy trong thời gian (miễn là chỉ mục cho phép truy vấn ).O ( log n )O(nlogn)O(logn)

Rõ ràng, một thuật toán chạy trong độ phức tạp này không xây dựng ma trận khoảng cách .O(n2)

Đối với một số thuật toán, chẳng hạn như phân cụm theo phân cấp với liên kết đơn và liên kết hoàn chỉnh, có các thuật toán tối ưu hóa có sẵn (SLINK, CLINK). Chỉ là hầu hết mọi người sử dụng bất cứ điều gì họ có thể nhận được và bất cứ điều gì dễ thực hiện. Và phân cụm phân cấp dễ thực hiện một cách ngây thơ, sử dụng lần lặp trên ma trận khoảng cách (dẫn đến thuật toán ...).n 2 O ( n 3 )nn2O(n3)

Tôi không biết một danh sách đầy đủ so sánh các thuật toán phân cụm. Có lẽ có hơn 100 thuật toán phân cụm. Có ít nhất một chục biến thể k-mean, ví dụ. Thêm vào đó, có độ phức tạp thời gian chạy cũng như độ phức tạp của bộ nhớ; có trường hợp trung bình và trường hợp xấu nhất. Có sự khác biệt lớn về triển khai (ví dụ: liên kết đơn được đề cập ở trên và các triển khai DBSCAN không sử dụng chỉ mục và do đó nằm trong và trong khi chúng không cần lưu trữ ma trận khoảng cách đầy đủ , sau đó họ vẫn cần tính tất cả các khoảng cách theo cặp). Thêm vào đó là hàng tấn thông số. Đối với phương tiện ,n × n k O ( n 2 ) O ( n ) O ( n log n ) O ( n )O(n2)n×nklà rất quan trọng Đối với hầu hết mọi thuật toán, hàm khoảng cách tạo ra sự khác biệt rất lớn (bất kỳ nhiều triển khai nào chỉ cho phép khoảng cách Euclide ...). Và một khi bạn có được các hàm khoảng cách đắt tiền (ngoài những thứ tầm thường như Euclide), số lượng tính toán khoảng cách có thể nhanh chóng là phần chính. Vì vậy, sau đó bạn cần phân biệt giữa tổng số thao tác và số lượng tính toán khoảng cách cần thiết. Vì vậy, một thuật toán trong các hoạt động nhưng chỉ tính toán khoảng cách có thể dễ dàng vượt qua thuật toán trong cả hai, khi các hàm khoảng cách thực sự đắt chính hàm là ).O(n2)O(n)O(nlogn)O(n)


trả lời rất tốt.
MonsterMMORPG

1

Câu hỏi hay. Một phương pháp người rơm nói 3 hàng xóm gần nhất là lấy mẫu hàng xóm Nsample của từng điểm dữ liệu, giữ mức gần nhất 3. Trong khi tầm thường, việc chạy này với một vài giá trị của Nsample sẽ cho bạn một số ý tưởng về tỷ lệ tín hiệu / nhiễu, nhiễu gần / nền , dễ dàng âm mưu cho dữ liệu của bạn . Một mẹo bổ sung là sau đó kiểm tra hàng xóm của hàng xóm, để xem có ai trong số những người đó gần hơn hàng xóm trực tiếp không. Ngoài ra, nếu dữ liệu đầu vào đã được xáo trộn tốt, hãy lấy mẫu theo khối, nếu không bộ đệm sẽ bị xóa.

(Đã thêm): xem fastcluster trong R và tôi tin vào SciPy v0.11.
Đối với văn bản, xem google-all-cặp-tương tự-tìm kiếm .

Lặp lại, "Một biện pháp khác biệt thích hợp quan trọng hơn nhiều trong việc đạt được thành công với phân cụm hơn là lựa chọn thuật toán phân cụm" - phương pháp chọn phân cụm .

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.