Как интерпретировать среднее значение силуэта?


34

Я пытаюсь использовать силуэт графика, чтобы определить количество кластеров в моем наборе данных. Учитывая набор данных Train , я использовал следующий код Matlab

Train_data = full(Train);  
Result = [];  
for num_of_cluster = 1:20  
    centroid = kmeans(Train_data,num_of_cluster,'distance','sqeuclid');  
    s = silhouette(Train_data,centroid,'sqeuclid');  
    Result = [ Result; num_of_cluster mean(s)];  
end  
plot( Result(:,1),Result(:,2),'r*-.');`

Результирующий график приведен ниже с xaxis в качестве номера кластера и среднего значения yaxis для силуэта .

Как мне интерпретировать этот график? Как из этого определить номер кластера?

введите описание изображения здесь


Для определения количества кластеров см. Метод минимального связующего дерева (MST) в разделе « Программное обеспечение для кластеризации визуализации» .
Денис

@Learner: Функция силуэта встроена в какую-то библиотеку? Если нет, не могли бы вы опубликовать это в своем вопросе, если не возражаете?
Легенда

@Legend: доступно в наборе инструментов Matlab Statistics.
Учащийся

@Learner: Упс ... Я думал, что вы используете Python :) Спасибо, что сообщили мне об этом.
Легенда

1
+1 за показ кода! Кроме того, поскольку максимальное значение вашего силуэта имеет место при k = 2, вы можете проверить, кластеризованы ли ваши данные, что можно сделать с помощью статистики разрыва (другая ссылка ).
Франк Дернонкур

Ответы:


41

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


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

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

Примеры: масса кластера / радиус / плотность, когезия или разделение между кластерами и т. Д. Эти концепции часто объединяются, например, отношение разделения к когезии должно быть большим, если кластеризация прошла успешно.

Способ измерения кластеризации определяется типом используемых алгоритмов кластеризации. Например, измерение качества полного алгоритма кластеризации (в котором все точки помещаются в кластеры) может сильно отличаться от измерения качества алгоритма нечеткой кластеризации на основе порогов (в котором некоторая точка может быть оставлена ​​некластеризованной как «шум»). ).


Коэффициент силуэта является одной из таких мер. Это работает следующим образом:

Для каждой точки p сначала найдите среднее расстояние между p и всеми другими точками в том же кластере (это мера сцепления, назовите его A). Затем найдите среднее расстояние между p и всеми точками в ближайшем кластере (это мера отделения от ближайшего другого кластера, назовите его B). Коэффициент силуэта для p определяется как разность между B и A, деленная на большее из двух (max (A, B)).

Мы оцениваем коэффициент кластера каждой точки и из этого мы можем получить «общий» средний коэффициент кластера.

Интуитивно мы пытаемся измерить пространство между кластерами. Если сцепление кластера хорошее (А мало) и хорошее разделение кластера (В велико), числитель будет большим и т. Д.

Я построил пример здесь, чтобы продемонстрировать это графически.

Коэффициент кластеризации Результаты кластеризации для nclusters = 2: 5

На этих графиках одни и те же данные представлены пять раз; цвета обозначают кластеры, созданные кластеризацией с помощью k-средних, с k = 1,2,3,4,5. То есть я заставил алгоритм кластеризации разделить данные на 2 кластера, затем на 3 и т. Д. И соответствующим образом раскрасить график.

График силуэта показывает, что коэффициент силуэта был наивысшим при k = 3, что предполагает оптимальное количество кластеров. В этом примере нам повезло, что мы можем визуализировать данные, и мы можем согласиться с тем, что три кластера действительно лучше всего отражают сегментацию этого набора данных.

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


5
Спасибо за ваш подробный ответ, и особенно сюжеты очень полезны. Тем не менее, я не совсем понял, как the average silhouette witdh "suggestion" could be very insufficient or just plain wrong in certain scenarios.вы утверждаете.
Жубарб

10

Взгляните на панель инструментов Cluster Validity Analysis (CVAP) и некоторые материалы (ссылки) из CVAP:

Индекс силуэта (общий средний силуэт), чем больше значение силуэта, указывает на лучшее качество результата кластеризации [Chen et al. 2002]

  • Н. Большакова, Ф. Азуайе. 2003. Методы проверки кластера для данных экспрессии генома, обработка сигналов. V.83. N4, с.825-833.
  • Э. Димитриаду, С. Долникар, А. Вейнгессель. Проверка индексов для определения количества кластеров в двоичных наборах данных. Psychometrika, 67 (1): 137-160, 2002.

Вы также можете проверить этот (простой) инструмент для оценки количества кластеров

Просто взгляните на примеры обоих наборов инструментов (вы также можете использовать другие методы проверки кластера)


6

Я изучал то же самое сегодня и нашел здесь интерпретацию . Это логично, но я не уверен, можем ли мы слепо применять интерпретацию для наших наборов данных. Итак, эта статья говорит о следующем:

0.71-1.0
A strong structure has been found

0.51-0.70
A reasonable structure has been found

0.26-0.50
The structure is weak and could be artificial. Try additional methods of data analysis.

< 0.25
No substantial structure has been found

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


4
Просто историческое замечание, таблица изначально пришла от Сьюэлл, Грандвилля и ПиДжея Руссо. «Поиск групп в данных: введение в кластерный анализ». (1990). img546.imageshack.us/img546/4523/cnfg.png (возможно, опубликовано ранее в одной из статей авторов)
Франк Дернонкур

Ссылка в ответе больше недоступна. Не могли бы вы предоставить другую ссылку?
BajajG

Вот ссылка на статью из веб-архива: web.archive.org/web/20111002220803/http://www.unesco.org:80/…
Justas

1

Если вы пытаетесь выбрать количество кластеров для обучения без учителя, то, возможно, вы можете попробовать сделать что-то вроде:

http://scikit-learn.org/stable/auto_examples/cluster/plot_kmeans_silhouette_analysis.html

Они используют больше, чем просто среднее значение (они используют распределение), но это имеет смысл. Кажется, он предпочитает кластеры меньшего размера, но, возможно, вы могли бы попробовать это с некоторыми сгенерированными данными и посмотреть, работает ли?

Кроме того, вы можете проверить эту бумагу-

http://www.sciencedirect.com/science/article/pii/0377042787901257

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.