Yêu cầu bộ nhớ của


8

Ai đó có thể cho tôi biết các yếu tố ảnh hưởng đến yêu cầu bộ nhớ của k-means cụm với một chút giải thích?


4
k-means là NP-hard, do đó, có rất nhiều phương pháp phỏng đoán khác nhau đáng kể, cũng như trong tiêu thụ tài nguyên; Bạn có quan tâm đến một số thuật toán cụ thể?

2
Bạn đang đề cập đến thuật toán của Lloyd? Nếu vậy, tôi tin rằng các yêu cầu bộ nhớ cho việc triển khai tiêu chuẩn sẽ là O (log k * n) vì bạn sẽ phải lưu trữ một danh sách các cặp (điểm, cụm) cho bước cập nhật. Bởi vì k thường nhỏ, tôi đoán là bạn thường có thể thoát khỏi việc lưu trữ chỉ một đoạn ngắn cho mỗi điểm, nhưng tôi chưa xem xét bất kỳ triển khai cụ thể nào.
rm999

Bạn chỉ thực sự cần lưu trữ trung gian của kích thước k, nếu bạn sẵn sàng lưu trữ dữ liệu trên đĩa và quét dữ liệu trong mỗi lần vượt qua. Tất nhiên, điều này rất chậm, và do đó có sự đánh đổi liên quan. Những gì cụ thể là bạn đang tìm kiếm.
Suresh Venkatasubramanian

Câu trả lời:


1

Các thuật toán như Lloyds có thể được thực hiện vớik(2d+1)chỉ sử dụng giá trị dấu phẩy động. Thuật toán k-mean của MacQueens chỉ cầnk(d+1) ký ức.

Tuy nhiên, vì hầu hết người dùng sẽ muốn biết điểm nào thuộc về cụm nào, hầu như mọi triển khai bạn sẽ tìm thấy sẽ sử dụng O(n+kd) ký ức.

Nói cách khác, bộ nhớ được sử dụng bởi k-mean về cơ bản là kích thước dữ liệu đầu ra .


0

Gần đây tôi đã bắt gặp một lưu ý về việc triển khai thuật toán k-mean trong scipy.cluster.vq.py

Notes
-----
This could be faster when number of codebooks is small, but it
becomes a real memory hog when codebook is large. It requires
N by M by O storage where N=number of obs, M = number of
features, and O = number of codes.
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.