Вычислить матрицу различий для больших данных

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

Ошибка: невозможно выделить вектор размера X.

В моем случае X составляет около 800 ГБ. Любая идея, как я могу справиться с этой проблемой? Кроме того, было бы здорово, если бы кто-нибудь помог мне запустить функцию в параллельных ядрах. Ниже вы можете найти функцию, которая вычисляет матрицу различий в наборе данных iris:

require(cluster)
d <- daisy(iris)

1 ответ

У меня была похожая проблема раньше. Бег daisy() даже на 5 тыс. строк моего набора данных ушло очень много времени.

Я закончил тем, что использовал kmeans Алгоритм в h2o пакет, который распараллеливает и 1-hot кодирует категориальные данные. Я бы просто по центру и масштабировал ваши данные (в среднем 0 w/ stdev = 1), прежде чем подключать их к h2o.kmeans, Это связано с тем, что алгоритм кластеризации не определяет приоритеты столбцов с высокими номинальными различиями (поскольку он пытается минимизировать вычисление расстояния). Я использовал scale() функция.

После установки воды:

h2o.init(nthreads = 16, min_mem_size = '150G')
h2o.df <- as.h2o(df)
h2o_kmeans <- h2o.kmeans(training_frame = h2o.df, x = vars, k = 5, estimate_k = FALSE, seed = 1234)
summary(h2o_kmeans)
Другие вопросы по тегам