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 th решение по кластеризации.

Типы данных: 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 n матрицей, соответствующей нескольким строкам X. distfun должен возвратить m 2 1 вектор из расстояний d2, чей k th элемент является расстоянием между 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 isempty.

ClusterPriors

Априорные вероятности для каждого кластера, сохраненного как допустимое имя априорной вероятности.

ClusterSilhouettes

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

CriterionName

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

CriterionValues

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

Distance

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

InspectedK

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

Missing

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

NumObservations

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

OptimalK

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

OptimalY

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

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

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] Кауфман Л. и П. Дж. Роюзеув. Нахождение групп в данных: введение в кластерный анализ. Хобокен, NJ: John Wiley & Sons, Inc., 1990.

[2] Rouseeuw, P. J. “Контуры: графическая помощь интерпретации и валидации кластерного анализа”. Журнал Вычислительной и Прикладной математики. Издание 20, № 1, 1987, стр 53–65.