exponenta event banner

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 является матрицей м2-на-n, соответствующей множеству строк X. distfun должен возвращать вектор расстояний м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

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

[2] Рузё, П. Дж. «Силуэты: графическое средство интерпретации и проверки кластерного анализа». Журнал вычислительной и прикладной математики. т. 20, № 1, 1987, стр. 53-65.