exponenta event banner

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

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

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

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 является матрицей м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

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

свернуть все

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

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

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

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

свернуть все

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

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

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

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

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

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

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

'globalMaxSE'

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

Gap (K) ≥GAPMAX−SE (GAPMAX),

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

'firstMaxSE'

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

Зазор (K) ≥Gap (K + 1) SE (K + 1),

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

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

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

свернуть все

Данные оценки кластеризации, возвращенные как объект оценки кластеризации.

Представлен в R2013b