Кластер больших данных в R и имеет ли значение выборка?


13

Я новичок в науке о данных, и у меня проблема с поиском кластеров в наборе данных с 200 000 строк и 50 столбцов в R.

Поскольку данные имеют как числовые, так и номинальные переменные, такие методы, как K-средства, которые используют евклидову меру расстояния, не кажутся подходящим выбором. Поэтому я перехожу к PAM, agnes и hclust, которые принимают матрицу расстояний в качестве входных данных.

Метод последовательного подключения может работать с данными смешанного типа, но матрица расстояний слишком велика: 200 000 × 200 000 намного больше, чем 2 ^ 31-1 (предел длины вектора до R 3.0.0.)

Новый R 3.0.0, выпущенный вчера, поддерживает длинные векторы длиной более 2 ^ 31-1. Но двойная матрица 200 000 на 200 000 требует непрерывной оперативной памяти размером более 16 ГБ, что невозможно на моей машине.

Я читал о параллельных вычислениях и пакетах bigmemory и не уверен, что они помогут: если я использую маргаритку, она генерирует большую матрицу, которая в любом случае не помещается в памяти.

Я также читал о посте о выборке: актуальна ли выборка во времена «больших данных»?

Так что в моем случае уместно ли использовать выборку на наборе данных, кластеризовать на выборке и затем вывести структуру всего набора данных?

Можете ли вы дать мне предложение? Спасибо!

О моей машине:

Версия R 3.0.0 (2013-04-03)

Платформа: x86_64-w64-mingw32 / x64 (64-разрядная версия)

ОС: Windows 7 64bit

RAM: 16,0 ГБ


Единственный известный мне метод кластеризации, который предназначен для больших данных (например, миллионов случаев) и может принимать номинальные переменные наряду с числовыми, - это кластер TwoStep, найденный в SPSS.
ttnphns

Ответы:


4

О(N3)О(N2)

Сама PAM не должна требовать полной матрицы расстояний, но алгоритм, как известно, плохо масштабируется, потому что тогда он должен (повторно) вычислять все попарные расстояния в каждом кластере на каждой итерации, чтобы найти самые центральные элементы. Это намного меньше, если у вас есть большое количество кластеров, но тем не менее довольно дорого!

О(NLограммN)

Однако для большинства из этих алгоритмов сначала необходимо убедиться, что функция расстояния действительно хороша; тогда вам нужно рассмотреть способы ускорения запросов с помощью соответствующих индексов.

Также обратите внимание, что во многих случаях - и это вполне может иметь место для PAM - вы можете сначала запустить алгоритм на выборке , а затем уточнить его только на полном наборе данных. Если ваша выборка является репрезентативной, алгоритмы, такие как k-means и PAM, должны дать вам, по существу, тот же результат, что и для полного набора данных.


Здесь не поможет OP, но в случае, если придет кто-то другой, у которого есть «промежуточные» номера выборок: есть также fastcluster для R (см. Math.stanford.edu/~muellner/fastcluster.html ).
cbeleites поддерживает Монику

Привет Anony-Mousse, не могли бы вы указать мне на некоторые из алгоритмов, которые используют ускорение структуры индекса? Большое спасибо!

Например, DBSCAN может быть ускорен с помощью индексов, которые поддерживают запросы диапазона epsilon. Вероятно, это также означает сдвиговую кластеризацию. ОПТИКА, которая также может быть ускорена таким образом, может рассматриваться как более продвинутая версия кластеризации связей (вы можете назвать ее «иерархической кластеризацией связей плотности»)
Имеет QUIT - Anony-Mousse

2

попробуйте функцию CLARA из кластерного пакета в R. Он реализует алгоритм, подобный pam, путем подвыборки ваших данных (убедитесь, что вы предоставляете размеры подвыборки, которые имеют смысл для ваших данных, потому что значения по умолчанию преднамеренно слишком малы). Это особенно хорошо работает, если медиоды в ваших данных могут быть представлены небольшой выборкой из общих данных (т. Е. В наборе данных относительно меньше кластеров). Таким образом, вы можете эффективно кластеризовать небольшую случайную выборку и добавлять точки в решение для предварительно рассчитанной кластеризации.

http://en.wikibooks.org/wiki/Data_Mining_Algorithms_In_R/Clustering/CLARA


привет zzk, спасибо за ответ. Я читал о Кларе раньше, но кажется, что она дает только евклидову и манхэттенскую метрику. Основная проблема заключается в том, что мой набор данных имеет как числовые, так и номинальные переменные. Поэтому использование ни одной метрики для измерения расстояния не подходит.

Ах, да, это в настоящее время ограничение для меня. Я считаю, что метод на самом деле может быть реализован на любом произвольном расстоянии, но я пока не удосужился просмотреть исходный код, чтобы увидеть, можно ли его изменить.
zzk

0

Вы также можете применить множественный анализ соответствия к качественным переменным и преобразовать их в числовую переменную.


2
Это кажется хорошей идеей, но может быть немного редким. Можете ли вы объяснить это немного, чтобы объяснить, что это такое и почему это поможет?
gung - Восстановить Монику
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.