В Data Science и машинном обучении KMeans и DBScan - два самых популярных алгоритма кластеризации (неконтролируемых). Оба они просты в реализации, но DBScan немного проще. Я только что использовал их оба, и я честно нашел DBScan более мощным и интересным как с точки зрения реализации, так и с точки зрения производительности. Но мы никогда не должны забывать основную теорему:

Нет бесплатного обеда: все модели неправильные, но некоторые модели полезны.

Это означает, что ни один алгоритм не подходит для всех целей. Это означает, что бывают ситуации, когда DBSCAN очень эффективен, а иногда его производительность очень плохая. Кластеризация по плотности (например, DBSCAN), кажется, больше соответствует интуиции человека о кластеризации, а не расстоянию от центральной точки кластеризации (например, KMeans).

Алгоритмы кластеризации плотности используют концепцию достижимости, то есть сколько соседей имеет точку в радиусе. DBScan более удобен, потому что ему не нужен параметр k, который представляет собой количество кластеров, которые мы пытаемся найти, что необходимо KMeans. Если вы не знаете количество кластеров, скрытых в наборе данных, и не можете визуализировать набор данных, рекомендуется использовать DBScan. DBSCAN создает различное количество кластеров в зависимости от входных данных.

Вы можете найти мои реализации KMeans и DBSCAN на github:

Https://github.com/soroush76/KMeans-Clustering-algorithm

Https://github.com/soroush76/DBSCAN-clustering-algorithm

Вот список преимуществ KMeans и DBScan:

  • KMeans намного быстрее, чем DBScan
  • DBScan не требует количества кластеров

Вот список недостатков KMeans и DBScan:

  • K-средним нужно количество кластеров, скрытых в наборе данных
  • DBScan плохо работает с кластерами с разной плотностью
  • DBScan требует тщательного подбора параметров.

В качестве дополнительного момента, если DBScan не работает и вам нужен алгоритм кластеризации, который автоматически определяет количество кластеров в вашем наборе данных, вы можете попробовать алгоритм MeanShift.