В Data Science и машинном обучении KMeans и DBScan - два самых популярных алгоритма кластеризации (неконтролируемых). Оба они просты в реализации, но DBScan немного проще. Я только что использовал их оба, и я честно нашел DBScan более мощным и интересным как с точки зрения реализации, так и с точки зрения производительности. Но мы никогда не должны забывать основную теорему:
Нет бесплатного обеда: все модели неправильные, но некоторые модели полезны.
Это означает, что ни один алгоритм не подходит для всех целей. Это означает, что бывают ситуации, когда DBSCAN очень эффективен, а иногда его производительность очень плохая. Кластеризация по плотности (например, DBSCAN), кажется, больше соответствует интуиции человека о кластеризации, а не расстоянию от центральной точки кластеризации (например, KMeans).
Алгоритмы кластеризации плотности используют концепцию достижимости, то есть сколько соседей имеет точку в радиусе. DBScan более удобен, потому что ему не нужен параметр k, который представляет собой количество кластеров, которые мы пытаемся найти, что необходимо KMeans. Если вы не знаете количество кластеров, скрытых в наборе данных, и не можете визуализировать набор данных, рекомендуется использовать DBScan. DBSCAN создает различное количество кластеров в зависимости от входных данных.
Вы можете найти мои реализации KMeans и DBSCAN на github:
Вот список преимуществ KMeans и DBScan:
- KMeans намного быстрее, чем DBScan
- DBScan не требует количества кластеров
Вот список недостатков KMeans и DBScan:
- K-средним нужно количество кластеров, скрытых в наборе данных
- DBScan плохо работает с кластерами с разной плотностью
- DBScan требует тщательного подбора параметров.