Индекс Калински — Харабаса
Индекс Калински — Харабаса (также известный как критерий Калински — Харабаса) — это метрика, используемая для оценки качества разбиения множества объектов на кластеры в задачах машинного обучения и анализа данных. Индекс представляет собой отношение дисперсии между кластерами к дисперсии внутри кластеров, нормированное на число степеней свободы. Чем выше значение индекса, тем более компактными и хорошо разделёнными считаются кластеры, что делает его популярным инструментом для выбора оптимального числа кластеров в алгоритмах, таких как 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 \) — матрица межкластерной дисперсии (межкластерный разброс), определяемая как:
\[ B_k = \sum_{i=1}^{k} n_i (c_i - c)(c_i - c)^T \] где \( n_i \) — число объектов в \( i \)-м кластере;
- \( W_k \) — матрица внутрикластерной дисперсии (внутрикластерный разброс), определяемая как:
\[ W_k = \sum_{i=1}^{k} \sum_{x \in C_i} (x - c_i)(x - c_i)^T \] где \( C_i \) — множество объектов \( i \)-го кластера;
- \( \text{tr}(\cdot) \) — след матрицы (сумма диагональных элементов).
Индекс \( 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 \) близки, это свидетельствует о надёжности разбиения.
Сравнение с другими метриками
Индекс Калински — Харабаса часто сравнивают с другими внутренними метриками качества кластеризации:
- Коэффициент силуэта (Silhouette coefficient): Учитывает среднее расстояние до объектов своего и соседнего кластера. Менее чувствителен к форме кластеров, но требует больше вычислительных ресурсов (\( O(N^2) \) против \( O(N) \) для \( CH \)).
- Индекс Дэвиса — Боулдина (Davies–Bouldin index): Основан на отношении суммы внутрикластерных расстояний к межкластерным. Чем меньше индекс, тем лучше. В отличие от \( CH \), он не требует вычисления общего центроида.
- Индекс Данна (Dunn index): Оценивает минимальное межкластерное расстояние и максимальный диаметр кластера. Чувствителен к шуму и выбросам.
Индекс Калински — Харабаса считается одним из наиболее вычислительно эффективных и интерпретируемых, но его применение оправдано в первую очередь для сферических кластеров.
Реализация в программном обеспечении
Индекс Калински — Харабаса реализован в ряде популярных библиотек:
- Python (scikit-learn): Функция
sklearn.metrics.calinski_harabasz_scoreпринимает на вход массив признаков и метки кластеров, возвращает значение индекса. - R: В пакете
clusterCritдоступна функцияintCriteriaс выбором критерия"Calinski_Harabasz". - MATLAB: Встроенная функция
evalclustersс опцией"CalinskiHarabasz". - Julia: Пакет
Clustering.jlвключает функциюcalinskiharabas.
Пример использования
Рассмотрим простой пример на языке 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) для суммы квадратов внутрикластерных расстояний.
Источники
- Caliński, T., Harabasz, J. (1974). «A Dendrite Method for Cluster Analysis». Communications in Statistics, 3(1), 1–27.
- Milligan, G. W., Cooper, M. C. (1985). «An examination of procedures for determining the number of clusters in a data set». Psychometrika, 50(2), 159–179.
- Scikit-learn documentation:
sklearn.metrics.calinski_harabasz_score.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →