Я хочу создать кластеры с ограничением по расстоянию, а не количеством кластеров, таких как KNN или Kmeans.
Поэтому я использовал Агломеративную кластеризацию из scikit-learn.Я должен поставить порог и compute_full_tree = true
params.
Когда я пытался с небольшим набором данных (<1000 баллов), это работало хорошо.Но я попробовал с большой выборкой (~ 30 000 точек), и на моем сервере не хватило памяти. </p>
После некоторых исследований я вижу, что агломеративная кластеризация вычисляет расстояние по каждой точке со всеми остальными, поэтому быстрая калькуляция:
30 000 x 30 000 x 64 (float64) = 70 Gb (8 GB)
Мой сервер имеет небольшую оперативную память 4 ГБ, поэтому он не может это поддерживать.Вы можете сказать мне взять сервер побольше, но матрица расстояний O (n²), поэтому агломерационная кластеризация не может содержать более 50 или 60 тыс. Выборок.
Есть ли другой способ найти кластер с максимальным расстоянием?
Я видел, как кто-то говорил о подборе агломерационной модели с небольшой частью данных, а затем обучал Kmean для другой части данных.