Кластеризация гистограммы с (Py)Spark для сокращения данных
Я хочу сгруппировать различные распределения вероятностей в форме гистограмм. У меня есть набор данных с>10 М наблюдений. Одно наблюдение имеет 5 различных гистограмм (> 100 признаков). Целью кластеризации является сокращение данных путем создания кодовой книги / прототипов, с помощью которых я могу представлять распределения исходного набора данных.
Теперь я не уверен, каков наилучший способ сделать это. Идеи:
- Использование нормального алгоритма k-средних искры мл с евклидовыми расстояниями.
- Попробуйте применить другую меру расстояния для k-средних на искре (например, Kullback Leibler, Jennsen Shannon) ( https://github.com/derrickburns/generalized-kmeans-clustering или http://www.scalaformachinelearning.com/2015/12/kullback-leibler-divergence-on-apache.html)
- Внедрите SOM в Spark для кластеризации распределений, используя пользовательские функции расстояния (не уверен, возможно ли это для набора данных такого большого размера. Можно ли создать собственный алгоритм в Spark, который выполняется инкрементно, но требует объединения результатов в каждый шаг?)
Как бы вы оценили идеи? Они осуществимы? Я пропускаю явно более производительное / простое решение? Любые советы будут с благодарностью!