evalclusters

Оценка решений кластеризации

Описание

пример

eva = evalclusters(x,clust,criterion) создает объект оценки кластеризации, содержащий данные, используемые для оценки оптимального количества кластеров данных.

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

Примеры

свернуть все

Оцените оптимальное количество кластеров с помощью критерия оценки кластеризации Калински-Харабаша.

Загрузите выборочные данные.

load fisheriris;

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

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

rng('default');  % For reproducibility
eva = evalclusters(meas,'kmeans','CalinskiHarabasz','KList',[1:6])
eva = 
  CalinskiHarabaszEvaluation with properties:

    NumObservations: 150
         InspectedK: [1 2 3 4 5 6]
    CriterionValues: [Inf 513.9245 561.6278 530.4871 456.1279 469.5068]
           OptimalK: 1

The OptimalK значение указывает, что на основе критерия Калински-Харабаша оптимальное количество кластеров составляет три.

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

Загрузите выборочные данные.

load fisheriris;

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

Использование kmeans создать вход матрицу предлагаемых кластеризационных решений для измерений длины сепаля с использованием 1, 2, 3, 4, 5 и 6 кластеров.

clust = zeros(size(meas,1),6);
for i=1:6
clust(:,i) = kmeans(meas,i,'emptyaction','singleton',...
        'replicate',5);
end

Каждая строка clust соответствует одному измерению длины сепаля. Каждый из шести столбцов соответствует решению кластеризации, содержащему от 1 до 6 кластеров.

Оцените оптимальное количество кластеров с помощью критерия Калински-Харабаша.

eva = evalclusters(meas,clust,'CalinskiHarabasz')
eva = 
  CalinskiHarabaszEvaluation with properties:

    NumObservations: 150
         InspectedK: [1 2 3 4 5 6]
    CriterionValues: [NaN 513.9245 561.6278 530.4871 456.1279 469.5068]
           OptimalK: 3

The OptimalK значение указывает, что на основе критерия Калински-Харабаша оптимальное количество кластеров составляет три.

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

Загрузите выборочные данные.

load fisheriris;

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

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

myfunc = @(X,K)(kmeans(X, K, 'emptyaction','singleton',...
    'replicate',5));

Оцените оптимальное количество кластеров для данных длины сепаля с помощью критерия Калински-Харабаша.

eva = evalclusters(meas,myfunc,'CalinskiHarabasz',...
    'klist',[1:6])
eva = 
  CalinskiHarabaszEvaluation with properties:

    NumObservations: 150
         InspectedK: [1 2 3 4 5 6]
    CriterionValues: [NaN 513.9245 561.6278 530.4871 456.1279 469.5068]
           OptimalK: 3

The OptimalK значение указывает, что на основе критерия Калински-Харабаша оптимальное количество кластеров составляет три.

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

свернуть все

Входные данные, заданные как 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

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

'CalinskiHarabasz'Создайте CalinskiHarabaszEvaluation объект оценки кластеризации, содержащий значения индекса Калински-Харабаша.
'DaviesBouldin'Создайте DaviesBouldinEvaluation объект оценки кластера, содержащий значения индекса Дэвиса-Буддина.
'gap'Создайте GapEvaluation объект оценки кластера, содержащий значения критериев погрешности.
'silhouette'Создайте SilhouetteEvaluation объект оценки кластера, содержащий значения силуэта.

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

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

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

свернуть все

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

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

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

Для силуэта и зазора

свернуть все

Метрика расстояния, используемая для вычисления значений критерия, заданная как разделенная разделенными запятой парами, состоящая из '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

Только для силуэта

свернуть все

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

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

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

Только для разрыва

свернуть все

Количество ссылочных наборов данных, сгенерированных из ссылочного ReferenceDistribution распределения, заданная как разделенная разделенными запятой парами, состоящая из 'B' и положительное целое значение.

Пример: 'B',150

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

Ссылочный метод генерации данных, заданный как разделенная разделенными запятой парами, состоящая из 'ReferenceDistributions' и одно из следующих.

'PCA'Сгенерируйте ссылочные данные из равномерного распределения по кубу, выровненному с основными компонентами матрицы данных x.
'uniform'Сгенерируйте ссылочные данные равномерно в области значений каждой функции в матрице данных x.

Пример: 'ReferenceDistribution','uniform'

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

'globalMaxSE'

Оцените каждое предлагаемое количество кластеров в KList и выберите наименьшее количество кластеров, удовлетворяющих

Gap(K)GAPMAXSE(GAPMAX),

где K - количество кластеров, Gap (K) - значение погрешности для решения кластеризации с K кластерами, GAPMAX - наибольшее значение погрешности, а SE (GAPMAX) - стандартная ошибка, соответствующая наибольшему значению погрешности.

'firstMaxSE'

Оцените каждое предлагаемое количество кластеров в KList и выберите наименьшее количество кластеров, удовлетворяющих

Gap(K)Промежуток(K+1)SE(K+1),

где K - количество кластеров, Gap (K) - значение погрешности для решения кластеризации с K кластерами, а SE (K + 1) - стандартная ошибка решения кластеризации с K + 1 кластерами.

Пример: 'SearchMethod','globalMaxSE'

Выходные аргументы

свернуть все

Кластеризация данных оценки, возвращенная как объект оценки кластеризации.

Введенный в R2013b