Иерархическая кластеризация текста в масштабе

У меня есть большой набор данных (миллиарды записей), который почти полностью состоит из категориальных переменных. Эти данные будут использованы для прогнозирования довольно редкого численного результата. Большинство атрибутов имеют большую мощность: просто, может быть, несколько образцов попадают в каждую категорию.

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

library(cluster)
numClusters = 42
hc <- hclust(daisy(df))
cutree(hc, k = numClusters)

Я подумал об использовании реализации Mahout's kmeans, но это не сработало бы для категориальных переменных, так как он ожидает вектор двойных чисел.

Есть ли у кого-нибудь в сообществе Stackru какие-либо мысли / советы о том, как выполнять иерархическую кластеризацию по категориальным переменным в масштабе?

1 ответ

Решение

Я не знаю, как ответить "как увеличить hclust?" для вашего набора данных. Добавьте больше оборудования / ОЗУ к этой проблеме и / или найдите умную распределенную реализацию (однако Spark MLLib 1.4 не поддерживает иерархическую кластеризацию).

Ваш вопрос немного сбивает с толку, прочитайте, почему я так думаю.

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

Если вам определенно необходимо выполнить кластеризацию по категориальным атрибутам, проверьте реализацию EM кластеризатор / алгоритм, например, в R-пакете RWeka. Эта реализация EM по умолчанию определяет самое лучшее число кластеров (возможно, с локальным минимумом?) И дает вам вероятности для каждого категориального значения в иерархии, а также предыдущие вероятности для каждого кластера.

Вы можете использовать другие алгоритмы кластеризации или пакеты.

Если у вас уже есть обучающий набор с атрибутами класса, вы также можете попробовать классификатор RWeka::J48(), чтобы создать дерево решений и некоторые прогнозы. Вы получите что-то иерархическое, и, после настройки, с таким количеством уровней, как вы хотите.

Если вы не хотите использовать RWeka, возможно, используйте пакет rpart::rpart() для дерева решений.

Другие вопросы по тегам