Настройка формулы расстояния K-средних в Apache Spark Python

Теперь я использую K-means для кластеризации и следую этому руководству и API.

Но я хочу использовать пользовательскую формулу для расчета расстояний. Итак, как я могу передать пользовательские функции расстояния в k-средних с помощью PySpark?


person Phong Pham    schedule 30.12.2015    source источник


Ответы (1)


Как правило, использование другой меры расстояния не имеет смысла, поскольку k-средние (в отличие от k-medoids) корректно определен только для евклидовых расстояний.

Объяснение см. в разделе Почему алгоритм кластеризации k-средних использует только метрику евклидова расстояния?.

Более того, алгоритмы MLlib реализованы в Scala, а PySpark предоставляет только обёртки, необходимые для выполнения кода Scala. Поэтому предоставление пользовательской метрики в виде функции Python было бы технически невозможно без значительных изменений в API.

Обратите внимание, что, начиная с Spark 2.4, есть две встроенные меры, которые можно использовать с pyspark.ml.clustering.KMeans и pyspark.ml.clustering.BisectingKMeans. (см. DistanceMeasure Param).

  • евклидово для евклидова расстояния.
  • косинус для косинусного расстояния.

Используйте на свой страх и риск.

person zero323    schedule 30.12.2015