silhouette

Описание

пример

silhouette(X,clust) кластер графиков рисует контур для n-by-p матрица входных данных X, учитывая кластерное присвоение clust из каждой точки (наблюдение) в X.

пример

silhouette(X,clust,Distance) строит контуры с помощью разделять знаками препинания метрики расстояния, заданной в Distance.

пример

silhouette(X,clust,Distance,DistParameter) принимает одно или несколько дополнительных метрических значений параметров расстояния, когда вы задаете Distance как пользовательский указатель на функцию расстояния @distfun это принимает дополнительные значения параметров.

пример

s = silhouette(___) возвращает значения контура в s для любой из комбинаций входных аргументов в предыдущих синтаксисах, не строя кластерные контуры.

пример

[s,h] = silhouette(___) строит контуры и возвращается, фигура обрабатывают h в дополнение к значениям контура в s.

Примеры

свернуть все

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

Сгенерируйте данные о случайной выборке.

rng('default')  % For reproducibility
X = [randn(10,2)+3;randn(10,2)-3];

Создайте график рассеивания данных.

scatter(X(:,1),X(:,2));
title('Randomly Generated Data');

Figure contains an axes object. The axes object with title Randomly Generated Data contains an object of type scatter.

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

Разделите данные в два кластера с помощью kmeans со значением по умолчанию придал Евклидовой метрике расстояния квадратную форму.

clust = kmeans(X,2);

clust содержит кластерные индексы данных.

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

silhouette(X,clust)

Figure contains an axes object. The axes object contains an object of type bar.

График контура показывает, что данные разделены в два кластера равного размера. Все точки в этих двух кластерах имеют большие значения контура (0.8 или больше), указывая, что кластеры хорошо разделяются.

Создайте график контура из кластеризованных данных с помощью Евклидовой метрики расстояния.

silhouette(X,clust,'Euclidean')

Figure contains an axes object. The axes object contains an object of type bar.

График контура показывает, что данные разделены в два кластера равного размера. Все точки в этих двух кластерах имеют большие значения контура (0.6 или больше), указывая, что кластеры хорошо разделяются.

Вычислите значения контура из кластеризованных данных.

Сгенерируйте данные о случайной выборке.

rng('default')  % For reproducibility
X = [randn(10,2)+1;randn(10,2)-1];

Кластеризируйте данные в X на основе суммы абсолютных разностей в расстоянии при помощи kmeans.

clust = kmeans(X,2,'distance','cityblock');

clust содержит кластерные индексы данных.

Вычислите значения контура из кластеризованных данных. Задайте метрику расстояния как 'cityblock' указать что kmeans кластеризация основана на сумме абсолютных разностей.

s = silhouette(X,clust,'cityblock')
s = 20×1

    0.0816
    0.5848
    0.1906
    0.2781
    0.3954
    0.4050
    0.0897
    0.5416
    0.6203
    0.6664
      ⋮

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

Сгенерируйте данные о случайной выборке.

rng('default'); % For reproducibility
X = [randn(10,2)+3;randn(10,2)-3];

Кластеризируйте данные в X использование kmeans со значением по умолчанию придал Евклидовой метрике расстояния квадратную форму.

clust = kmeans(X,2);

Найдите значения контура и создайте график контура из кластеризованных данных с помощью Евклидовой метрики расстояния.

[s,h] = silhouette(X,clust,'Euclidean')

Figure contains an axes object. The axes object contains an object of type bar.

s = 20×1

    0.6472
    0.7241
    0.5682
    0.7658
    0.7864
    0.6397
    0.7253
    0.7783
    0.7054
    0.7442
      ⋮

h = 
  Figure (1) with properties:

      Number: 1
        Name: ''
       Color: [1 1 1]
    Position: [360 502 560 420]
       Units: 'pixels'

  Show all properties

Расстояние хи-квадрата между J- размерные точки x и z

χ(x,z)=j=1Jwj(xj-zj)2,

где wj вес, сопоставленный с размерностью j.

Установите веса для каждой размерности и задайте функцию расстояния хи-квадрата. Функция расстояния должна:

  • Возьмите в качестве входных параметров n-by-p матрицу входных данных X, одна строка X (например, x), и масштабирование (или вес) параметр w.

  • Вычислите расстояние от x к каждой строке X.

  • Возвратите вектор из длины n. Каждым элементом вектора является расстояние между наблюдением, соответствующим x и наблюдения, соответствующие каждой строке X.

w = [0.4; 0.6]; % Set arbitrary weights for illustration
chiSqrDist = @(x,Z,w)sqrt((bsxfun(@minus,x,Z).^2)*w);

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

s1 = silhouette(X,clust,chiSqrDist,w)
s1 = 20×1

    0.6288
    0.7239
    0.6244
    0.7696
    0.7957
    0.6688
    0.7386
    0.7865
    0.7223
    0.7572
      ⋮

Установите вес для обеих размерностей к 1 использовать chiSqrDist как Евклидова метрика расстояния. Найдите значения контура и проверьте, что они совпадают со значениями в s.

w2 = [1; 1];
s2 = silhouette(X,clust,chiSqrDist,w2);
AreValuesEqual = isequal(s2,s)
AreValuesEqual = logical
   1

Значения контура являются тем же самым в s и s2.

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

свернуть все

Входные данные в виде числовой матрицы размера n-by-p. Строки соответствуют точкам, и столбцы соответствуют координатам.

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

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

silhouette обработки NaNs и пустые значения в clust как отсутствующие значения и игнорирует соответствующие строки X.

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

Метрика расстояния в виде вектора символов, строкового скаляра или указателя на функцию, как описано в этой таблице.

МетрикаОписание
'Euclidean'

Евклидово расстояние

'sqEuclidean'

Придал Евклидову расстоянию квадратную форму (значение по умолчанию)

'cityblock'

Сумма абсолютных разностей

'cosine'

Один минус косинус включенного угла между точками (обработанный как векторы)

'correlation'

Один минус корреляция выборки между точками (обработанный как последовательности значений)

'Hamming'

Процент координат, которые отличаются

'Jaccard'

Процент ненулевых координат, которые отличаются

ВекторЧисловой вектор-строка из попарных расстояний, в форме, созданной pdist функция. X не используется в этом случае и может безопасно быть установлен в [].
@distfun

Пользовательский указатель на функцию расстояния. Функция расстояния имеет форму

function D = distfun(X0,X,DistParameter)
% calculation of distance
...
где

  • X0 1- p вектор, содержащий одну точку (наблюдение) за матрицей входных данных X.

  • X n-by-p матрица точек.

  • DistParameter представляет одно или несколько дополнительных значений параметров, характерных для @distfun.

  • D n-by-1 вектор из расстояний и D(k) расстояние между наблюдениями X0 и X(k,:).

Для получения дополнительной информации смотрите Метрики Расстояния.

Пример: 'cosine'

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

Метрическое значение параметров расстояния в виде положительной скалярной величины, числового вектора или числовой матрицы. Этот аргумент допустим только, когда вы задаете пользовательский указатель на функцию расстояния @distfun это принимает одно или несколько значений параметров в дополнение к входным параметрам X0 и X.

Пример: silhouette(X,clust,distfun,p1,p2) где p1 и p2 дополнительные метрические значения параметров расстояния для @distfun

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

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

свернуть все

Значения контура, возвращенные как n-by-1 вектор из значений в пределах от –1 к 1. Значение контура измеряется, насколько подобный точка к точкам в ее собственном кластере, когда по сравнению с точками в других кластерах. Значения лежат в диапазоне от –1 к 1. Высокое значение контура указывает, что точка является хорошо соответствующей к ее собственному кластеру, и плохо соответствующей к другим кластерам.

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

Указатель Figure, возвращенный как скаляр. Можно использовать указатель фигуры, чтобы запросить и изменить свойства фигуры. Для получения дополнительной информации смотрите Figure Properties.

Больше о

свернуть все

Значение контура

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

Значение контура Si для iточка th задана как

Si = (bi-ai)/ max(ai,bi)

где ai среднее расстояние от ith указывают на другие точки в том же кластере как i, и bi минимальное среднее расстояние от ith указывают на точки в различном кластере, минимизированном по кластерам.

Диапазоны значений контура от –1 к 1. Высокое значение контура указывает на тот i является хорошо соответствующим к его собственному кластеру, и плохо соответствующим к другим кластерам. Если большинство точек имеет высокое значение контура, то решение по кластеризации является соответствующим. Если много точек имеют низкое или отрицательное значение контура, то решение по кластеризации может иметь слишком многих или слишком мало кластеров. Можно использовать значения контура в качестве кластеризирующегося критерия оценки с любой метрикой расстояния.

Ссылки

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

Представлено до R2006a