Я новичок в науке о данных, и у меня проблема с поиском кластеров в наборе данных с 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 ГБ
источник
Ответы:
Сама PAM не должна требовать полной матрицы расстояний, но алгоритм, как известно, плохо масштабируется, потому что тогда он должен (повторно) вычислять все попарные расстояния в каждом кластере на каждой итерации, чтобы найти самые центральные элементы. Это намного меньше, если у вас есть большое количество кластеров, но тем не менее довольно дорого!
Однако для большинства из этих алгоритмов сначала необходимо убедиться, что функция расстояния действительно хороша; тогда вам нужно рассмотреть способы ускорения запросов с помощью соответствующих индексов.
Также обратите внимание, что во многих случаях - и это вполне может иметь место для PAM - вы можете сначала запустить алгоритм на выборке , а затем уточнить его только на полном наборе данных. Если ваша выборка является репрезентативной, алгоритмы, такие как k-means и PAM, должны дать вам, по существу, тот же результат, что и для полного набора данных.
источник
попробуйте функцию CLARA из кластерного пакета в R. Он реализует алгоритм, подобный pam, путем подвыборки ваших данных (убедитесь, что вы предоставляете размеры подвыборки, которые имеют смысл для ваших данных, потому что значения по умолчанию преднамеренно слишком малы). Это особенно хорошо работает, если медиоды в ваших данных могут быть представлены небольшой выборкой из общих данных (т. Е. В наборе данных относительно меньше кластеров). Таким образом, вы можете эффективно кластеризовать небольшую случайную выборку и добавлять точки в решение для предварительно рассчитанной кластеризации.
http://en.wikibooks.org/wiki/Data_Mining_Algorithms_In_R/Clustering/CLARA
источник
Вы также можете применить множественный анализ соответствия к качественным переменным и преобразовать их в числовую переменную.
источник