Как стать автором
Обновить

Комментарии 11

Было бы неплохо увидить реальный пример функции на С или Python. Или если есть ссылка на какой нибудь репозиторий с рабочими примерами, тоже было бы хорошо. Спасибо за статью.
Вот, например, питонья sklearn-имплементация с примером использования, которую я препарировал. Здесь можно найти matlab версию, а здесь — Java (распараллеленная, кстати!), но я их не смотрел.
КДПВ шикарна вдвойне за счет, пожалуй, самого популярного в мире дивана, браво!
Отличная статья! Спасибо!
Спасибо за статью, надеюсь на продолжение!

По поводу первой картинки из «стены картинок» (там где четыре полоски) вопрос: изначальная точка в к-средних выбиралась случайным образом или это одна из точек данных? По результату видно, что центроиды расположены между полосками, возможно, результат улучшится, если инициализировать в одной из точек данных. Кстати, интересно, есть ли модификация к-средних, где центроид на каждой итерации не просто считается как среднее точек кластера, а сначала считается среднее, а потом выбирается реальная точка, ближайшая к этой расчетной. Кажется логичным такой подход, чтобы избежать ситуации, изображенной на картинке.

И по поводу третьей картинки, там где две полоски перпендикулярны и накладываются. Мне кажется, не совсем честно сравнивать кластеризацию на 2 класса с помощью к-средних с разбиением на кучу кластеров. Возможно, если задать для к-средних, скажем, 5 кластеров, мы получим другой результат (условно «серединка» и четыре «лопасти»).
вопрос: изначальная точка в к-средних выбиралась случайным образом или это одна из точек данных?


Для инициализации использовался алгоритм k-means++. Т.е. даже лучше, чем просто случайный выбор точки.

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


Интересная идея, но тут есть несколько недостатков. Что если примерное направление не совпадает ни с одной точкой? Как быть с кластерами с дырками посередине? Совсем не уверен, что это бы решило проблему с вот такими «колбасками».

Вот же как выступает kmeans с большим количеством кластеров на картинке с узким кластером, пересекающим круглый:




Лучше, чем было, но всё равно так себе: кластеры вытягиваются в направлении, перпендикулярном, направлению меньшего кластера.

Я слышал мнение, что кластеризация скорее метод визуализации, поскольку надо наперед задать или количество групп, или степень сходства. Не холивара для, а истины ради: насколько правильным Вы считаете такое мнение?

Разве что «метод визуализации» в очень-очень широком смысле — не просто красивое представление, а способ разбить данные на несколько групп, и потом работать с каждой группой по-разному. Я лично не сталкивался с реальными сложными задачами кластеризации, так что моё мнение имеет здесь малый вес.
Спасибо за статью!

Похоже, что в формуле (2) алгоритма опечатка.
Судя по оригинальной статье и дальнейшему объяснению, должно быть:



Да, действительно. Спасибо за замечание. Исправил в статье.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации