SilhouetteScore
Silhouette Score оценивает качество кластеризации, когда истинные метки объектов неизвестны.
Метрика учитывает одновременно две вещи:
- насколько близко объект расположен к другим объектам своего кластера;
- насколько далеко он находится от ближайшего другого кластера.
Чем компактнее кластеры внутри и чем лучше они отделены друг от друга, тем выше значение метрики.
Для каждого объекта считаются две величины:
- — среднее расстояние до объектов своего кластера;
- — минимальное среднее расстояние до объектов другого кластера.
Силуэт объекта вычисляется по формуле:
Если объект хорошо попал в свой кластер, то маленькое, а большое. Тогда силуэт близок к 1.
Итоговый Silhouette Score — среднее значение силуэта по всем объектам:
Интерпретация
Заголовок раздела «Интерпретация»Значение метрики находится в диапазоне от -1 до 1.
близко к 1 объект хорошо находится внутри своего кластераоколо 0 объект находится между кластерамименьше 0 объект, возможно, попал не в тот кластерЗначение 1 не означает просто правильное разбиение. Оно возможно только тогда, когда точки внутри каждого кластера расположены очень близко друг к другу, а разные кластеры находятся далеко друг от друга.
Поэтому даже полностью правильная кластеризация может иметь значение, например, 0.7.
Пример вычисления
Заголовок раздела «Пример вычисления»uses MLABC, PlotML;
begin var (X, trueLabels) := Datasets.MakeBlobs( n := 300, centers := 3, clusterStd := 0.7, seed := 8 );
var model := new KMeans(3, seed := 42); var labels := model.FitPredict(X);
var (xs, ys) := X.Cols(0, 1);
Plot.Points(xs, ys, labels, size := 4); Plot.Points(model.Centers, color := Colors.Black, size := 12, marker := MarkerType.Cross);
Plot.Title := 'KMeans: найденные кластеры';
Println('Silhouette:', Metrics.SilhouetteScore(X, labels):0:3);end.Результат:
Silhouette: 0.716Значение 0.716 является хорошим результатом. Точки внутри каждого кластера расположены заметно ближе друг к другу, чем к точкам других кластеров.
При этом Silhouette Score не сравнивает найденные кластеры с trueLabels. Он оценивает только геометрическую структуру кластеров.
Если нужно проверить совпадение найденного разбиения с известными правильными метками, используется другая метрика, например Adjusted Rand Index.
Когда использовать
Заголовок раздела «Когда использовать»Silhouette Score полезен, когда истинных меток нет, а нужно сравнить разные варианты кластеризации.
Например, можно запустить KMeans с разным числом кластеров и выбрать вариант с лучшим силуэтом.
Ограничения
Заголовок раздела «Ограничения»Silhouette Score основан на расстояниях, поэтому результат зависит от масштаба признаков.
Метрика лучше подходит для компактных и хорошо разделённых кластеров. Для кластеров сложной формы её значение не всегда полностью отражает качество разбиения.
Перед вычислением метрики часто стоит выполнить масштабирование.