R-рассчитать расстояние между элементами фрейма данных без использования функции dist()

У меня большой набор данных (~ 188000 строк), я хочу рассчитать расстояние между своими строками, чтобы затем применить функцию hclust для определения центров моего набора данных, а затем применить функцию kmeans для классификации моих данных.

Моя проблема связана с первым шагом, который вычисляет расстояние моей матрицы: использование функции dist из пакета stats дало мне эту ошибку:

Error: cannot allocate vector of size 132.0 Gb

Понятно, что проблема с оперативной памятью.

Мне нужно найти другой способ вычислить мою матрицу расстояний.

Любой четкий ответ был бы очень полезен для меня.


person sarah    schedule 19.02.2016    source источник
comment
Проблема в сложности памяти N^2, а не в реализации dist.   -  person zero323    schedule 19.02.2016
comment
@zero323, спасибо за разъяснение. Но как мне поступить в таком случае.   -  person sarah    schedule 19.02.2016
comment
По правде говоря, я не уверен, почему вы хотите использовать hclust перед kmeans. Если вы хотите оптимизировать инициализацию, просто используйте kmeans++ / kmeans|| во время инициализации. Я не буду указывать на какую-либо реализацию R, но я уверен, что она есть.   -  person zero323    schedule 19.02.2016
comment
Возможный дубликат функции dist с большим количеством точек   -  person sebastian-c    schedule 19.02.2016
comment
@zero323 с использованием метода kmeans++ показался мне потрясающим. Но, в приложении в R я столкнулся с этой ошибкой Error in kmeans(data, centers = data[center_ids, ], iter.max = iter.max, : initial centers are not distinct, которую я не понял.   -  person sarah    schedule 19.02.2016
comment
@ sebastian-c Я видел этот вопрос перед тем, как опубликовать свой вопрос. Ответы в этом не отвечают моим потребностям.   -  person sarah    schedule 19.02.2016
comment
У меня такая же проблема, как вы ее решили?   -  person Amaranta_Remedios    schedule 03.10.2020