Кластеризация более 13 миллионов траекторий взгляда / линейных сегментов - PullRequest
0 голосов
/ 17 февраля 2020

Траектория tr представлена ​​как {x1,y1,x2,y2,....x13,y13}. Форма данных выглядит как 13609440 x 26.

Ниже приведен демонстрационный график всех пар x, y (с удалением всех отсутствующих значений) до того, как я преобразовал пары x, y (с отсутствующими значениями) в линейные сегменты из 13 точек данных. Это было только для того, чтобы понять, как выглядят данные.

enter image description here

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

Сказав это, проблема, с которой я сталкиваюсь, заключается в том, как кластеризовать и разместить весь набор данных. У меня есть 400 Гб оперативной памяти. Число кластеров, в которых я надеюсь кластеризовать данные, равно 1000. MiniBatch K-средства от sklearn поддерживает partial_fit и с помощью которого я смог уместить весь набор данных в пакетном режиме. Тем не менее, Kmeans принимает сферические формы кластеров, что здесь явно не так. Меня заинтересовала модель гауссовой смеси от sklearn , она подходит для кластеров с различными формами и ориентациями. Однако я мог уместить только 30% данных, учитывая количество кластеров и объем памяти. Как GMM, не поддерживает part_fit

Я также изучил Spectral clustering from Dask, который работает параллельно. И проблема, с которой я столкнулся, заключалась в измерении / форме выходных данных матрицы cluster_centers.

Спектральная кластеризация включает три основных этапа: 1) она создает матрицу сродства, 2) разлагает ее, используя собственные значения и собственные векторы, и 3) выполняет Kmeans поверх нее, чтобы получить метки кластера. Однако меня интересуют не метки кластера, а только представления кластера, которые в данном случае являются центрами кластера. Вот фрагмент:

spc= SpectralClustering(n_clusters=1000, persist_embedding=True, n_components=10000).fit(X)
spc.assign_labels_.cluster_centers_.shape
> (1000,1000)

Это выводит матрицу формы (1000, 1000), потому что матрица сродства имеет форму n_samples x n_components, где n_samples - количество выборок, а n_components обрабатываются как количество функций в базовом алгоритме Kmeans.

Обычно Kmeans выводит cluster_centers формы 1000x26 26, представляющей собой число объектов, так как сегменты входных линий имеют форму 13M x 26.

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

...