Неконтролируемое обучение

Три метрики оценки производительности кластеризации, когда метки достоверности недоступны

Какую метрику следует использовать для оценки результатов кластеризации, если наземные метки истины недоступны? В этом посте я представляю три из них.

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

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

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

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

Основная идея кластерной оценки

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

Хорошая кластеризация должна иметь небольшое расстояние внутри кластера и большое расстояние между кластерами, как показано на диаграмме ниже.

Однако, если кластеризация плохая, межкластерное и внутрикластерное расстояние не так различимы, как показано ниже.

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

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

Коэффициент силуэта

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

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

Далее давайте посмотрим, как строится оценка от -1 до 1.

Прежде всего, нам нужно знать, как рассчитать средние расстояния внутри/между кластерами для конкретной точки.

Что касается внутрикластерного расстояния, то для любой точки данных i, которая находится внутри кластера C, a определяется как среднее расстояние между i и всеми другими точками данных. внутри С.

где |C_I| — количество точек, принадлежащих кластеру i, а d(i , j) — расстояние между точками данных i и j в кластере C_I.

Таким образом, для любой заданной точки i небольшой балл a(i) указывает на хорошее назначение кластеризации для точки i, поскольку она близка к точки в одном кластере. Напротив, большая оценка a(i) указывает на плохую кластеризацию для точки i, поскольку она находится далеко от точек в своем собственном кластере.

Что касается межкластерного расстояния, то для любой точки данных i, которая находится внутри кластера C, b определяется как наименьшее среднее расстояние. i ко всем точкам в любом другом кластере, членом которого i не является. Другими словами, b — это среднее расстояние от i до всех точек ближайшего соседнего кластера.

После получения как внутрикластерных, так и межкластерных средних расстояний для каждой точки в наборе данных оценка силуэта определяется как таковая:

В редкой ситуации, когда C_I = 1 (где в кластере C есть только одна точка данных i), оценка силуэта определяется как 0.

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

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

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

Индекс Калински-Харабаша

Индекс Калински-Харабаса (также известный как критерий отношения дисперсии) определяется как отношение квадрата суммы расстояний между кластерами и квадрата суммы расстояний внутри кластеров для всех кластеров. Сумма квадратов расстояний корректируется степенью свободы.

Здесь внутрикластерный оценивается на основе расстояний от точек данных в кластере до его собственного центроида кластера, а межкластерный - на основе расстояния между центроидами кластера и глобальным центроидом.

Индекс Калински-Харабаса (CH) для K кластеров в наборе данных D определяется как

где d_i — вектор признаков точки данных i, n_k — размер k-го кластера, c_k — вектор признаков центроида k-го кластера, c — вектор признаков глобального центроида всего набора данных, а N — общее количество точек данных.

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

Из приведенного выше уравнения видно, что чем выше CH, тем лучше кластеры отделены друг от друга, и нет верхней границы для CH, как для оценки силуэта.

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

Однако, если кластеры не имеют таких форм, расстояния на основе центроидов не будут настолько информативными, чтобы судить о качестве алгоритма кластеризации. Таким образом, индекс CH НЕ рекомендуется использовать для методов, основанных на плотности, таких как кластеризация mean-shift, DBSCAN, OPTICS и т. д.

Индекс Дэвиса-Булдина

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

где R_ij — показатель сходства, S_i и S_j — усредненное расстояние от точек до центроидов внутри кластера i и j соответственно; а M_ij — расстояние между центроидами кластера i и кластера j.

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

Индекс Дэвиса-Булдина определяется как усредненная оценка сходства по всем кластерам с ближайшим соседним кластером.

где D_i — это наихудшая (наибольшая) оценка сходства для i кластера среди всех остальных кластеров, а окончательный индекс БД — это усредненный D_i по N кластерам. .

Мы видим, что чем меньше индекс БД, тем лучше разделение кластеров. У него такой же недостаток, как и у индекса CH, который плохо справляется с методами кластеризации без конкретного предположения о форме (например, кластеризация на основе плотности). Но и индекс CH, и индекс DB намного быстрее, чем расчет баллов по силуэту.

Реализация на Python

Благодаря пакету scikit-learn эти три показателя очень легко рассчитать в Python.

Давайте используем kmeans в качестве примера алгоритма кластеризации. Вот примеры кодов для расчета оценки силуэта, индекса Калински-Харабаша и индекса Дэвиса-Булдина.

from sklearn import datasets
from sklearn.cluster import KMeans
from sklearn import metrics
X, y = datasets.load_iris(return_X_y=True)
kmeans = KMeans(n_clusters=3, random_state=1).fit(X)
labels = kmeans.labels_
Sil = metrics.silhouette_score(X, labels)
CH = metrics.calinski_harabasz_score(X, labels)
DB = metrics.davies_bouldin_score(X, labels)

Вот и все! Надеюсь, статья будет вам полезна.

Если вам нравится читать статьи, пожалуйста, подпишитесь на мой аккаунт!

Использованная литература: