Как бы вы узнали, что ваши (высокоразмерные) данные демонстрируют достаточную кластеризацию, так что результаты kmeans или другого алгоритма кластеризации действительно значимы?
В частности, для алгоритма k-средних, насколько должно быть снижение дисперсии внутри кластера, чтобы фактические результаты кластеризации были значимыми (а не ложными)?
Должна ли кластеризация быть очевидной при построении размерно-уменьшенной формы данных, и являются ли результаты kmeans (или других методов) бессмысленными, если кластеризацию нельзя визуализировать?
clustering
k-means
Xuexue
источник
источник
Ответы:
О k-означает, в частности, вы можете использовать статистику Gap. По сути, идея состоит в том, чтобы вычислить достоверность показателя кластеризации на основе средней дисперсии по сравнению с эталонным распределением для растущего числа кластеров. Более подробную информацию можно найти в оригинальной статье:
Ответ, который я дал на связанный вопрос, выдвигает на первый план другие общие индексы достоверности, которые можно использовать для проверки того, демонстрирует ли данный набор данных какую-то структуру.
Если у вас нет представления о том, что вы ожидаете найти, если бы был только шум, хорошим подходом является использование повторной выборки и исследования устойчивости кластеров. Другими словами, повторите выборку ваших данных (с помощью начальной загрузки или добавив в них небольшой шум) и вычислите «близость» результирующих разделов, измеренную по сходству Жакара . Короче говоря, это позволяет оценить частоту, с которой подобные кластеры были восстановлены в данных. Этот метод легко доступен в пакете fpc R как
clusterboot()
. Он принимает в качестве входных данных либо необработанные данные, либо матрицу расстояний и позволяет применять широкий спектр методов кластеризации (иерархические, k-средние, нечеткие методы). Метод обсуждается в связанных ссылках:Ниже приведена небольшая демонстрация с алгоритмом k-средних.
Результаты весьма положительны в этом искусственном (и хорошо структурированном) наборе данных, поскольку ни один из трех кластеров (
krange
) не был растворен по выборкам, и среднее кластерное сходство Жакара составляет> 0,95 для всех кластеров.Ниже приведены результаты по 20 образцам начальной загрузки. Как можно видеть, статистические единицы, как правило, остаются сгруппированными в одном кластере, за немногими исключениями для этих наблюдений, лежащих между ними.
Конечно, вы можете распространить эту идею на любой индекс достоверности: выберите новую серию наблюдений с помощью начальной загрузки (с заменой), вычислите свою статистику (например, ширину силуэта, копенетическую корреляцию, гамму Хьюберта, в пределах суммы квадратов) для диапазона номера кластеров (например, от 2 до 10), повторите 100 или 500 раз и посмотрите на графическое поле вашей статистики как функцию от числа кластеров.
Вот что я получаю с тем же набором смоделированных данных, но используя иерархическую кластеризацию Уорда и учитывая копенетическую корреляцию (которая оценивает, насколько хорошо информация о расстоянии воспроизводится в результирующих разделах) и ширину силуэта (комбинированная мера, оценивающая внутрикластерную однородность и разделение кластеров).
Копенетическая корреляция колеблется от 0,6267 до 0,7511 с медианным значением 0,7031 (500 образцов начальной загрузки). Ширина силуэта кажется максимальной, когда мы рассматриваем 3 кластера (медиана 0,8408, диапазон 0,7371-0,8769).
источник
Один из способов быстро визуализировать, достаточно ли кластеризованы данные для кластеризации, состоит в использовании t-распределенного стохастического встраивания соседей ( t-SNE ). Он проецирует данные в какое-то низкоразмерное пространство (например, 2D, 3D) и делает довольно хорошую работу по сохранению структуры кластера, если таковая имеется.
Например, набор данных MNIST :
Оливетти сталкивается с набором данных:
источник
Несомненно, способность визуально различать кластеры в значимом количестве измерений является сомнительным критерием полезности алгоритма кластеризации, особенно если это уменьшение размерности выполняется независимо от самой кластеризации (т. Е. В тщетной попытке выяснить, кластеризация будет работать).
На самом деле, методы кластеризации имеют наибольшее значение в нахождении кластеров, когда человеческий глаз / разум не может видеть кластеры.
Ответ прост: выполните кластеризацию, а затем выясните, работает ли она (с любым интересующим вас критерием, см. Также ответ @ Jeff).
источник
В любом случае, когда результаты значимы ? В частности, к-значит результаты?
Факт в том, что k-means оптимизирует определенную математическую статистику. Здесь нет «значимого», связанного с этим.
В частности, в данных больших измерений первый вопрос должен быть: евклидово расстояние все еще значимо ? Если нет, не используйте k-means. Евклидово расстояние имеет смысл в физическом мире, но оно быстро теряет смысл, когда у вас есть другие данные. В частности, когда вы искусственно преобразуете данные в векторное пространство, есть ли причина, почему они должны быть евклидовыми?
Если вы возьмете классический «старый верный» набор данных и запустите на нем k-means без нормализации, но с чистым евклидовым расстоянием, это уже не имеет смысла. EM, который фактически использует некоторую форму «локального кластера» расстояния Махаланобиса, будет работать намного лучше. В частности, он адаптируется к осям, имеющим очень разные масштабы.
Кстати, ключевым преимуществом k-means является то, что он на самом деле просто всегда разделяет данные, независимо от того, как они выглядят. Вы можете использовать k-средства для разделения равномерного шума на k кластеров . Можно утверждать, что, очевидно, кластеры k-средних не имеют смысла. Или можно принять это как: пользователь хотел разделить данные, чтобы минимизировать возведенные в квадрат евклидовы расстояния, не требуя, чтобы кластеры были «значимыми».
источник
Я только недавно начал использовать алгоритмы кластеризации, так что, надеюсь, кто-то более знающий может дать более полный ответ, но вот некоторые мысли:
«Значимый», как я уверен, вы знаете, очень субъективен. То, насколько кластеризация достаточно хороша, полностью зависит от того, зачем вам кластеризоваться. Если вы пытаетесь предсказать членство в группе, вполне вероятно, что любая кластеризация будет лучше, чем случайность (и не хуже), поэтому результаты должны быть в некоторой степени значимыми.
Если вы хотите знать, насколько надежна эта кластеризация, вам нужно иметь метрику для сравнения. Если у вас есть набор сущностей с известным членством, вы можете использовать дискриминантный анализ, чтобы увидеть, насколько хороши прогнозы. Если у вас нет набора сущностей с известным членством, вы должны будете знать, какая дисперсия характерна для кластеров в вашей области. Физические характеристики сущностей с жесткими категориями, вероятно, будут иметь гораздо меньшую дисперсию в группе, чем психометрические данные о людях, но это не обязательно делает кластеризацию «хуже».
Ваш второй вопрос ссылается на «Какое значение k мне выбрать?» Опять же, здесь нет жесткого ответа. В отсутствие какого-либо априорного набора категорий вы, вероятно, захотите минимизировать количество кластеров, а также минимизировать среднюю дисперсию кластеров. Простым подходом может быть построение графика зависимости количества кластеров от средней дисперсии кластеров и поиск «колена», когда добавление большего количества кластеров не оказывает существенного влияния на дисперсию кластера.
Я бы не сказал, что результаты k-средних не имеют смысла, если их нельзя визуализировать, но они, безусловно, привлекательны, когда кластеры визуально очевидны. Это, опять же, просто возвращает нас к вопросу: зачем вам нужно кластеризоваться и насколько вам нужно быть надежным? В конечном счете, это вопрос, на который вам нужно ответить в зависимости от того, как вы будете использовать данные.
источник
Чтобы определить, имеет ли смысл кластеризация, вы можете запустить алгоритм подсчета количества кластеров и посмотреть, выводит ли он что-то больше 1.
источник