k-означает кластеризацию в R на очень большой разреженной матрице? - PullRequest
9 голосов
/ 14 июня 2010

Я пытаюсь выполнить некоторую кластеризацию k-средних на очень большой матрице.

Матрица составляет приблизительно 500000 строк x 4000 столбцов, но очень разреженная (только пара значений "1" на строку).

Все это не умещается в памяти, поэтому я преобразовал его в разреженный файл ARFF.Но R, очевидно, не может прочитать разреженный формат файла ARFF.У меня также есть данные в виде простого файла CSV.

Есть ли в R пакет для эффективной загрузки таких разреженных матриц?Затем я бы использовал обычный алгоритм k-средних из пакета кластера.

Большое спасибо

Ответы [ 4 ]

13 голосов
/ 14 июня 2010

Пакет bigmemory (или теперь семейство пакетов - см. Их веб-сайт ) использовал k-means в качестве примера расширенной аналитики больших данных.В частности, смотрите подпакет biganalytics , который содержит функцию k-средних.

1 голос
/ 20 мая 2015

sparkcl выполняет разреженную иерархическую кластеризацию и разреженную кластеризацию k-средних Это должно быть хорошо для R-подходящих (так - вписывающихся в память) матриц.

http://cran.r -project.org / веб / пакеты / SPARCL / sparcl.pdf

==

Для действительно больших матриц я бы попробовал решение с разреженными матрицами Apache Spark, а MLlib - все еще, не знаю, насколько это экспериментально сейчас:

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

1 голос
/ 03 июня 2011

Пожалуйста, проверьте:

library(foreign)
?read.arff

Приветствие.

0 голосов
/ 01 июня 2013

Существует специальный пакет SparseM для R, который может эффективно его удерживать. Если это не сработает, я попробую перейти на язык с более высокой производительностью, например C.

...