SilhouetteEvaluation

Пакет: clustering.evaluation
Суперклассы: ClusterCriterion

Объект оценки кластеризации критерия силуэта

Описание

SilhouetteEvaluation - объект, состоящий из выборочных данных, данных кластеризации и значений силуэтных критериев, используемых для оценки оптимального количества кластеров данных. Создайте объект оценки кластеризации критерия силуэта с помощью evalclusters.

Конструкция

eva = evalclusters(x,clust,'Silhouette') создает объект оценки кластеризации критерия силуэта.

eva = evalclusters(x,clust,'Silhouette',Name,Value) создает объект оценки кластеризации критерия силуэта с помощью дополнительных опций, заданных одним или несколькими аргументами пары "имя-значение".

Входные параметры

расширить все

Входные данные, заданные как N -by - P матрица. N - количество наблюдений, а P - количество переменных.

Типы данных: single | double

Алгоритм кластеризации, заданный как один из следующих.

'kmeans'Группируйте данные в x использование kmeans алгоритм кластеризации с 'EmptyAction' установлено на 'singleton' и 'Replicates' установлено на 5.
'linkage'Группируйте данные в x использование clusterdata алгоритм агломеративной кластеризации с 'Linkage' установлено на 'ward'.
'gmdistribution'Группируйте данные в x использование gmdistribution Алгоритм распределения Гауссова смеси с 'SharedCov' установлено на true и 'Replicates' установлено на 5.

Если criterion является 'CalinskiHarabasz', 'DaviesBouldin', или 'silhouette'можно задать алгоритм кластеризации с помощью указателя на функцию. Функция должна иметь вид C = clustfun(DATA,K), где DATA - данные, которые будут кластеризованы, и K количество кластеров. Область выхода clustfun должно быть одно из следующих:

  • Вектор из целых чисел, представляющий индекс кластера для каждого наблюдения в DATA. Должны быть K уникальные значения в этом векторе.

  • Числовая n -by - K матрица счета для классов наблюдений n и K. В этом случае индекс кластера для каждого наблюдения определяется путем взятия наибольшего значения баллов в каждой строке.

Если criterion является 'CalinskiHarabasz', 'DaviesBouldin', или 'silhouette', можно также задать clust как n -by - K матрица, содержащая предлагаемые кластерные решения. n - количество наблюдений в выборочных данных, а K - количество предложенных решений кластеризации. Столбец j содержит индексы кластеров для каждой из точек N в j-м решении кластеризации.

Типы данных: single | double | char | string | function_handle

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: 'KList',[1:5],'Distance','cityblock' задает для тестирования 1, 2, 3, 4 и 5 кластеров с помощью метрики расстояния между городскими блоками.

Предыдущие вероятности для каждого кластера, заданные как разделенная разделенными запятой парами, состоящая из 'ClusterPriors' и одно из следующих.

'empirical'Вычислите общее значение силуэта для решения кластеризации путем усреднения значений силуэта для всех точек. Каждый кластер вносит вклад в общее значение силуэта пропорционально его размеру.
'equal'Вычислите общее значение силуэта для решения кластеризации, усреднив значения силуэта для всех точек в каждом кластере, а затем усреднив эти значения по всем кластерам. Каждый кластер вносит одинаковый вклад в общее значение силуэта, независимо от его размера.

Пример: 'ClusterPriors','empirical'

Метрика расстояния, используемая для вычисления значений критерия, заданная как разделенная разделенными запятой парами, состоящая из 'Distance' и одно из следующих.

'sqEuclidean'Квадратное Евклидово расстояние
'Euclidean'Евклидово расстояние. Эта опция недопустима для kmeans алгоритм кластеризации.
'cityblock'Сумма абсолютных различий
'cosine'Один минус косинус включенного угла между точками (рассматривается как векторы)
'correlation'Один минус корреляция выборки между точками (рассматривается как последовательности значений)
'Hamming'Процент различных координат. Эта опция действительна только для Silhouette критерий.
'Jaccard'Процент отличных ненулевых координат. Эта опция действительна только для Silhouette критерий.

Для получения подробной информации о каждой метрике расстояния см. pdist.

Можно также задать функцию для метрики расстояния с помощью указателя на функцию. Функция расстояния должна иметь вид d2 = distfun(XI,XJ), где XI является вектором с 1 n байта, соответствующим одной строке входной матрицы X, и XJ - m матрица 2-by- n, соответствующая нескольким строкам X. distfun должен вернуть m вектор расстояний 2 на 1 d2, чей k-й элемент является расстоянием между XI и XJ(k,:).

Distance принимает указатель на функцию только в том случае, если алгоритм кластеризации clust принимает указатель на функцию как метрику расстояния. Для примера, kmeans алгоритм кластеризации не принимает указатель на функцию как метрику расстояния. Поэтому, если вы используете kmeans алгоритм, а затем указание указателя на функцию для Distance, ошибки программного обеспечения.

  • Если criterion является 'silhouette', можно также задать Distance как вектор выхода, созданный функцией pdist.

  • Когда clust является 'kmeans' или 'gmdistribution', evalclusters использует метрику расстояния, заданную для Distance для кластеризации данных.

  • Если clust является 'linkage', и Distance является либо 'sqEuclidean' или 'Euclidean', тогда алгоритм кластеризации использует Евклидово расстояние и Уордовское редактирование.

  • Если clust является 'linkage' и Distance является любой другой метрикой, тогда алгоритм кластеризации использует заданные метрику расстояния и среднее редактирование.

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

Пример: 'Distance','Euclidean'

Типы данных: single | double | char | string | function_handle

Список вычисляемых кластеров, заданный как разделенная разделенными запятой парами, состоящая из 'KList' и вектор положительных целочисленных значений. Вы должны задать KList когда clust является именем алгоритма кластеризации или указателем на функцию. Когда criterion является 'gap', clust должен быть вектором символов, строковым скаляром или указателем на функцию, и вы должны задать KList.

Пример: 'KList',[1:6]

Типы данных: single | double

Свойства

ClusteringFunction

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

ClusterPriors

Предыдущие вероятности для каждого кластера, сохраненные как допустимое предшествующее имя вероятности.

ClusterSilhouettes

Значения силуэта, соответствующие каждому предложенному количеству кластеров в InspectedK, сохраненный как массив ячеек из векторов.

CriterionName

Имя критерия, используемого для оценки кластеризации, сохраненное как допустимое имя критерия.

CriterionValues

Значения критериев, соответствующие каждому предложенному количеству кластеров в InspectedK, сохраненный как вектор числовых значений.

Distance

Метрика расстояния, используемая для кластеризации данных, сохраненная как допустимое имя метрики расстояния.

InspectedK

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

Missing

Логический флаг для исключенных данных, сохраненный как вектор-столбец логических значений. Если Missing равен true, затем соответствующее значение в матрице данных x не используется в кластерном решении.

NumObservations

Количество наблюдений в матричной X данных, минус количество отсутствующих (NaN) значения в X, сохранен в виде положительного целого значения.

OptimalK

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

OptimalY

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

X

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

Методы

Унаследованные методы

addKОцените дополнительное количество кластеров
компактныйКомпактный объект оценки кластеризации
график Постройте графики значений критериев объекта оценки кластеризации

Примеры

свернуть все

Оцените оптимальное количество кластеров с помощью критерия оценки кластеризации силуэтов.

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

rng('default');  % For reproducibility
mu1 = [2 2];
sigma1 = [0.9 -0.0255; -0.0255 0.9];

mu2 = [5 5];
sigma2 = [0.5 0 ; 0 0.3];

mu3 = [-2, -2];
sigma3 = [1 0 ; 0 0.9];
    
N = 200;

X = [mvnrnd(mu1,sigma1,N);...
     mvnrnd(mu2,sigma2,N);...
     mvnrnd(mu3,sigma3,N)];

Оцените оптимальное количество кластеров с помощью критерия силуэта. Группируйте данные с помощью kmeans.

E = evalclusters(X,'kmeans','silhouette','klist',[1:6])
E = 
  SilhouetteEvaluation with properties:

    NumObservations: 600
         InspectedK: [1 2 3 4 5 6]
    CriterionValues: [NaN 0.8055 0.8551 0.7155 0.6071 0.6232]
           OptimalK: 3

The OptimalK значение указывает, что на основе критерия силуэта оптимальное количество кластеров составляет три.

Постройте график значений критерия силуэта для каждого количества протестированных кластеров.

figure;
plot(E)

Figure contains an axes. The axes contains 2 objects of type line.

График показывает, что самое высокое значение силуэта происходит в трех кластерах, что позволяет предположить, что оптимальное количество кластеров составляет три.

Создайте сгруппированный график поля точек, чтобы визуально изучить предлагаемые кластеры.

figure;
gscatter(X(:,1),X(:,2),E.OptimalY,'rbg','xod')

Figure contains an axes. The axes contains 3 objects of type line. These objects represent 1, 2, 3.

Рисунок показывает три различных кластера в данных: Кластер 1 находится в левом нижнем углу, кластер 2 находится в правом верхнем углу, а кластер 3 находится рядом с центром графика.

Подробнее о

расширить все

Ссылки

[1] Кауфман Л. и П. Дж. Рузью. Поиск групп в данных: введение в кластерный анализ. Hoboken, NJ: John Wiley & Sons, Inc., 1990.

[2] Rouseeuw, P. J. «Silhouettes: графическое пособие для интерпретации и валидации кластерного анализа». Журнал вычислительной и прикладной математики. Том 20, № 1, 1987, стр. 53-65.