Открыть сервис

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

Индекс Калински — Харабаса (также известный как критерий Калински — Харабаса) — это метрика, используемая для оценки качества разбиения множества объектов на кластеры в задачах машинного обучения и анализа данных. Индекс представляет собой отношение дисперсии между кластерами к дисперсии внутри кластеров, нормированное на число степеней свободы. Чем выше значение индекса, тем более компактными и хорошо разделёнными считаются кластеры, что делает его популярным инструментом для выбора оптимального числа кластеров в алгоритмах, таких как k-средних.

Формальное определение

Пусть задано множество из \( N \) объектов, разбитое на \( k \) кластеров. Для каждого кластера \( i \) определяется его центр (центроид) \( c_i \), а для всего множества — общий центроид \( c \). Индекс Калински — Харабаса \( CH \) вычисляется по формуле:

\[ CH(k) = \frac{\text{tr}(B_k)}{\text{tr}(W_k)} \cdot \frac{N - k}{k - 1} \]

где:

\[ B_k = \sum_{i=1}^{k} n_i (c_i - c)(c_i - c)^T \] где \( n_i \) — число объектов в \( i \)-м кластере;

\[ W_k = \sum_{i=1}^{k} \sum_{x \in C_i} (x - c_i)(x - c_i)^T \] где \( C_i \) — множество объектов \( i \)-го кластера;

Индекс \( CH(k) \) принимает вещественные неотрицательные значения. Чем больше значение, тем сильнее различаются кластеры друг от друга и тем плотнее объекты сгруппированы внутри каждого кластера.

История и авторы

Метрика была предложена в 1974 году польским математиком Тадеушем Калински (Tadeusz Caliński) и американским статистиком Яцеком Харабасом (Jacek Harabasz) в статье «A Dendrite Method for Cluster Analysis», опубликованной в журнале Communications in Statistics. Работа была посвящена методам иерархической кластеризации, и индекс был введён как один из критериев для оценки качества дендрограмм. Впоследствии он получил широкое распространение в контексте алгоритмов, не предполагающих иерархической структуры, в первую очередь метода k-средних.

Свойства и интерпретация

Отношение дисперсий

Индекс Калински — Харабаса основан на классическом принципе анализа дисперсии (ANOVA): он сравнивает разброс между кластерами с разбросом внутри кластеров. Высокое отношение свидетельствует о том, что кластеры далеки друг от друга и одновременно компактны. Это делает индекс интуитивно понятным и математически обоснованным.

Зависимость от числа кластеров

Индекс, как правило, растёт с увеличением числа кластеров \( k \), но не монотонно. Для поиска оптимального \( k \) обычно вычисляют \( CH(k) \) для диапазона значений (например, от 2 до \( \sqrt{N} \)) и выбирают то \( k \), при котором индекс достигает максимума. Однако при очень большом \( k \) индекс может начать снижаться из-за переобучения (каждый объект становится отдельным кластером).

Чувствительность к масштабу

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

Ограничения

Применение

Выбор числа кластеров

Основное применение индекса Калински — Харабаса — определение оптимального числа кластеров в алгоритмах, где \( k \) не задано априори. Наиболее часто он используется совместно с методом k-средних. Для каждого \( k \) выполняется кластеризация, вычисляется \( CH(k) \), и выбирается \( k \), соответствующее максимальному значению. Этот подход является одним из стандартных в библиотеках машинного обучения, таких как scikit-learn (Python), где индекс реализован как функция calinski_harabasz_score.

Сравнение алгоритмов кластеризации

Индекс может применяться для сравнения результатов разных алгоритмов кластеризации при фиксированном \( k \). Алгоритм, дающий более высокий \( CH \), считается предпочтительным, если не требуется учёт специфики данных.

Оценка стабильности

В некоторых исследованиях индекс используется для оценки стабильности кластеризации: если при повторных запусках алгоритма с разными начальными условиями значения \( CH \) близки, это свидетельствует о надёжности разбиения.

Сравнение с другими метриками

Индекс Калински — Харабаса часто сравнивают с другими внутренними метриками качества кластеризации:

Индекс Калински — Харабаса считается одним из наиболее вычислительно эффективных и интерпретируемых, но его применение оправдано в первую очередь для сферических кластеров.

Реализация в программном обеспечении

Индекс Калински — Харабаса реализован в ряде популярных библиотек:

Пример использования

Рассмотрим простой пример на языке Python с использованием библиотеки scikit-learn:

```python from sklearn.datasets import make_blobs from sklearn.cluster import KMeans from sklearn.metrics import calinski_harabasz_score

Генерация синтетических данных

X, y_true = make_blobs(n_samples=300, centers=4, cluster_std=0.60, random_state=0)

Кластеризация методом k-средних

kmeans = KMeans(n_clusters=4, random_state=0) labels = kmeans.fit_predict(X)

Вычисление индекса Калински — Харабаса

score = calinski_harabasz_score(X, labels) print(f"Индекс Калински — Харабаса: {score:.2f}") ```

В данном примере индекс будет иметь высокое значение, так как данные сгенерированы в виде компактных и хорошо разделённых кластеров.

Критика и альтернативы

Несмотря на популярность, индекс Калински — Харабаса подвергается критике за склонность к выбору большого числа кластеров в некоторых сценариях, особенно при неравномерной плотности данных. Исследования показывают, что для данных с кластерами разного размера или формы индекс может давать неоптимальные результаты. В таких случаях рекомендуется использовать комбинацию нескольких метрик (например, силуэта и индекса Дэвиса — Боулдина) или визуальные методы, такие как метод «локтя» (elbow method) для суммы квадратов внутрикластерных расстояний.

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →