2010-06-14 37 views
9

Tôi đang cố gắng thực hiện một số cụm từ k trên một ma trận rất lớn.k-có nghĩa là phân cụm trong R trên ma trận rất lớn, thưa thớt?

Ma trận có khoảng 500.000 hàng x 4000 cols nhưng rất thưa thớt (chỉ một vài giá trị "1" cho mỗi hàng).

Toàn bộ nội dung không phù hợp với bộ nhớ, vì vậy tôi đã chuyển đổi nó thành tệp ARFF thưa thớt. Nhưng R rõ ràng không thể đọc được định dạng tệp ARFF thưa thớt. Tôi cũng có dữ liệu dưới dạng tệp CSV đơn giản.

Có gói nào có sẵn trong R để tải các ma trận thưa thớt như vậy một cách hiệu quả không? Sau đó tôi sẽ sử dụng thuật toán k-means thông thường từ gói cụm để tiếp tục.

Rất cám ơn

+0

Cảm ơn bạn đã trả lời! Tôi có một câu hỏi khác mặc dù :-) Tôi đang cố gắng chạy bigkmeans với số cụm khoảng 2000 ví dụ "clust <- bigkmeans (mymatrix, centers = 2000)" Tuy nhiên, tôi nhận được lỗi sau: Lỗi trong 1: (10 + 2^k): kết quả sẽ là quá dài một vector Ai đó có thể cho tôi một gợi ý những gì tôi đang làm sai ở đây? Cảm ơn! – movingabout

+1

Gốc tại http://stackoverflow.com/questions/3177827/clustering-on-very-large-sparse-matrix –

Trả lời

13

Gói bigmemory (hoặc tại gia đình của gói - xem họ website) được sử dụng k-means như chạy ví dụ về phân tích mở rộng trên dữ liệu lớn. Xem cụ thể gói phụ biganalytics có chứa hàm k-means.

+0

+1 cho bộ nhớ lớn, tôi không biết rằng chúng có quá nhiều gói. – richiemorrisroe

+0

Có và hàm read.data.matrix() từ gói bigmemory hỗ trợ 1 kiểu dữ liệu nguyên tử. –

1

Vui lòng kiểm tra:

library(foreign) 
?read.arff 

Cheers.

0

Có gói SparseM đặc biệt cho R có thể giữ hiệu quả. Nếu điều đó không hiệu quả, tôi sẽ cố gắng chuyển sang một ngôn ngữ hiệu suất cao hơn, như C.

1

sparkcl thực hiện phân cụm theo cấp bậc thưa thớt và phân cụm k có nghĩa thưa thớt Điều này sẽ phù hợp với R (phù hợp với bộ nhớ) ma trận.

http://cran.r-project.org/web/packages/sparcl/sparcl.pdf

==

Đối với ma trận thực sự lớn, tôi sẽ cố gắng một giải pháp với Apache Spark ma trận thưa thớt, và MLlib - vẫn còn, không biết làm thế nào bây giờ nó thực nghiệm là:

https://spark.apache.org/docs/latest/api/scala/index.html#org.apache.spark.mllib.linalg.Matrices $

https://spark.apache.org/docs/latest/mllib-clustering.html

Các vấn đề liên quan