Перейти к содержимому

Adjusted Rand Index

Adjusted Rand Index, или ARI, метрика для сравнения найденных кластеров с истинными метками объектов.

По-русски название можно перевести как скорректированный индекс Рэнда.

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

Например, MakeBlobs возвращает не только точки, но и номера групп, из которых эти точки были сгенерированы.

ARI сравнивает два разбиения одних и тех же объектов:

  • истинные группы;
  • кластеры, найденные алгоритмом.

Для этого рассматриваются все пары объектов.

Если два объекта относятся к одной истинной группе, алгоритм должен поместить их в один кластер.

Если два объекта относятся к разным истинным группам, алгоритм должен поместить их в разные кластеры.

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

Adjusted Rand Index дополнительно учитывает, что часть совпадений могла возникнуть случайно.

ARI близко к 1 найденные кластеры почти совпадают с истинными метками
ARI около 0 совпадение примерно соответствует случайному разбиению
ARI меньше 0 результат хуже случайного разбиения
uses MLABC;
begin
var (X, trueLabels) := Datasets.MakeBlobs(
n := 300,
centers := 3,
clusterStd := 0.8,
seed := 42);
var model := new KMeans(3, seed := 42);
var labels := model.FitPredict(X);
Println('ARI:', Metrics.AdjustedRandIndex(trueLabels, labels):0:3);
end.

Результат:

ARI: 0.933

Значение 0.933 означает, что найденные кластеры почти полностью совпадают с истинными группами. Небольшая часть объектов была распределена иначе.

Adjusted Rand Index используют, когда истинные метки известны и нужно проверить, насколько найденная кластеризация соответствует правильному разбиению.

Если истинных меток нет, используйте Silhouette Score.