Что является хорошей метрикой для анализа качества выходных данных алгоритма кластеризации?

Я пробовал реализацию алгоритма кластеризации kmeans в scipy. Существуют ли какие-либо стандартные, четко определенные показатели, которые можно использовать для измерения качества сгенерированных кластеров?

т. е. у меня есть ожидаемые метки для точек данных, сгруппированных по kmeans. Теперь, когда я получу сгенерированные кластеры, как мне оценить качество этих кластеров по отношению к ожидаемым меткам?


person jithinpt    schedule 09.11.2014    source источник
comment
en.wikipedia.org/wiki/Cluster_analysis   -  person Mitch Wheat    schedule 09.11.2014
comment
Спасибо, Митч. Я пробую различные меры, перечисленные там.   -  person jithinpt    schedule 10.11.2014


Ответы (3)


В то время я делал именно это с помощью KMeans от Spark.

Я использую:

Обе величины обещают лучшую кластеризацию, когда малы (чем меньше, тем лучше).

person gsamaras    schedule 31.08.2016

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

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

person mcdowella    schedule 09.11.2014

В вашем случае, когда у вас есть истинная метка образцов, проверка очень проста. Прежде всего, вычислите матрицу путаницы (http://en.wikipedia.org/wiki/Confusion_matrix). Затем извлеките из него все соответствующие меры: истинно положительные, ложноотрицательные, ложноположительные и истинно отрицательные. Затем вы можете найти точность, отзыв, скорость промаха и т. д.

Убедитесь, что вы понимаете смысл всего вышеперечисленного. Они в основном говорят вам, насколько хорошо ваша кластеризация предсказала/распознала истинную природу ваших данных.

Если вы используете Python, просто используйте пакет sklearn: http://scikit-learn.org/stable/modules/model_evaluation.html

Кроме того, было бы неплохо запустить некоторую внутреннюю проверку, чтобы увидеть, насколько хорошо разделены ваши кластеры. Существуют известные внутренние меры валидности, такие как: Индекс Силуэта БД, индекс Данна, показатель Калински-Харабаша, показатель гаммы, нормализованный разрез и т. д.

Подробнее читайте здесь: обширное сравнительное исследование кластерных индексов валидности Олатц Арбелайц, Ибай Гуррутксага, Хавьер Мугуэрса, Хесус М. Перес, Иньиго Перона

person Serendipity    schedule 09.11.2014
comment
На самом деле это не так просто, потому что кластеры != классы, поэтому матрица путаницы не позволяет вам решить, что является истинно положительным, потому что между кластерами и классами нет однозначного соответствия. - person Has QUIT--Anony-Mousse; 09.11.2014
comment
Затем используйте неконтролируемые меры (внутренние индексы) - person Serendipity; 10.11.2014
comment
Есть также контролируемые индексы. Но они работают иначе, чем вы объяснили... - person Has QUIT--Anony-Mousse; 10.11.2014
comment
Внутренние индексы (Силуэт, индекс БД, индекс Данна и т. д.) не требуют размеченных данных, поэтому они не контролируются. - person Serendipity; 10.11.2014
comment
Да, но есть также имеются контролируемые индексы для оценки кластеризации. Неконтролируемые индексы обычно смещены в сторону результатов k-средних, поэтому k-средних выигрывает при сравнении различных алгоритмов... - person Has QUIT--Anony-Mousse; 10.11.2014
comment
Соглашаться. А как насчет таких мер, как модульность или Ncut? Они не смотрят на минимальное расстояние от центра. - person Serendipity; 12.11.2014
comment
Есть много. Вроде АРИ. См. статью в Википедии. - person Has QUIT--Anony-Mousse; 12.11.2014