Теория

Оценка силуэта — это метрика для оценки производительности алгоритма кластеризации. Он использует компактность отдельных кластеров (расстояние внутри кластера) и разделение кластеров (расстояние между кластерами) для измерения общая репрезентативная оценка того, насколько хорошо работает наш алгоритм кластеризации.

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

Функция оценки силуэта доступна напрямую в sklearn и может быть легко использована.

Давайте быстро посмотрим на математику этого

Оценка силуэта для точки данных iзадается как

где,

bi : расстояние между кластерами, определяемое как среднее расстояние до ближайшего кластера точки данных i, за исключением того, что он является частью

ai : внутрикластерное расстояние, определяемое как среднее расстояние до всех других точек в кластере, частью которого он является.

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

Практичный

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

импортировать библиотеки

создайте набор данных с помощью функции make_blobs из sklearn

визуализировать данные

рассчитать оценку силуэта для этого набора данных

Оценка силуэта составляет 0,804, что близко к 1, и, таким образом, эти кластеры были довольно точно разделены, что также видно на графике.

Проблема

Теперь попробуем другой набор данных. На этот раз мы попробуем концентрические круги от sklearn.

Давайте нанесем данные на график.

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

С другой стороны, мы видим, что оценка силуэта составляет 0,099, что близко к 0. Это явно неверное представление о том, насколько хорошо работает наш алгоритм.

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

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

Вывод

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

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

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

Бонус

Ниже приведены функции для расчета оценки силуэта без sklearn.