exponenta event banner

spectralcluster

Спектральная кластеризация

Описание

пример

idx = spectralcluster(X,k) наблюдения секционирования в матрице данных n-by-p X в k кластеров с использованием алгоритма спектральной кластеризации (см. Алгоритмы). spectralcluster возвращает вектор n-by-1 idx содержит кластерные индексы каждого наблюдения.

пример

idx = spectralcluster(S,k,'Distance','precomputed') возвращает вектор индексов кластера для Sматрица подобия (или матрица смежности) графа подобия. S может быть выводом adjacency.

Чтобы использовать матрицу подобия в качестве первого ввода, необходимо указать 'Distance','precomputed'.

пример

idx = spectralcluster(___,Name,Value) указывает дополнительные параметры, использующие один или несколько аргументов пары имя-значение в дополнение к входным аргументам в предыдущих синтаксисах. Например, можно указать 'SimilarityGraph','epsilon' для построения графа подобия с использованием метода поиска радиуса.

[idx,V] = spectralcluster(___) также возвращает собственные векторы V соответствующие k наименьшие собственные значения матрицы Лапласа.

пример

[idx,V,D] = spectralcluster(___) также возвращает вектор D содержащий k наименьшие собственные значения матрицы Лапласа.

Примеры

свернуть все

Кластеризация 2-D кругового набора данных с использованием спектральной кластеризации с метрикой евклидова расстояния по умолчанию.

Создание синтетических данных, содержащих две шумные окружности.

rng('default') % For reproducibility

% Parameters for data generation
N = 300;  % Size of each cluster
r1 = 2;   % Radius of first circle
r2 = 4;   % Radius of second circle
theta = linspace(0,2*pi,N)';

X1 = r1*[cos(theta),sin(theta)]+ rand(N,1); 
X2 = r2*[cos(theta),sin(theta)]+ rand(N,1);
X = [X1;X2]; % Noisy 2-D circular data set

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

idx = spectralcluster(X,2);

Визуализация результата кластеризации.

gscatter(X(:,1),X(:,2),idx);

Figure contains an axes. The axes contains 2 objects of type line. These objects represent 1, 2.

spectralcluster функция правильно идентифицирует два кластера в наборе данных.

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

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

load fisheriris
X = meas(:,3:4);
gscatter(X(:,1),X(:,2),species);

Figure contains an axes. The axes contains 3 objects of type line. These objects represent setosa, versicolor, virginica.

Найдите расстояние между каждой парой наблюдений в X с помощью pdist и squareform с метрикой евклидова расстояния по умолчанию.

dist_temp = pdist(X);
dist = squareform(dist_temp);

Создайте матрицу подобия и подтвердите, что она симметрична.

S = exp(-dist.^2);
issymmetric(S)
ans = logical
   1

Выполните спектральную кластеризацию. Определить 'Distance','precomputed' для выполнения кластеризации с использованием матрицы подобия. Определить k=3 кластеров и установите 'LaplacianNormalization' аргумент пары имя-значение для использования нормализованной симметричной лапласианской матрицы.

k = 3; % Number of clusters
rng('default') % For reproducibility
idx = spectralcluster(S,k,'Distance','precomputed','LaplacianNormalization','symmetric');

idx содержит индексы кластера для каждого наблюдения в X.

Визуализация результата кластеризации.

gscatter(X(:,1),X(:,2),idx);

Figure contains an axes. The axes contains 3 objects of type line. These objects represent 1, 2, 3.

Составить таблицу результатов кластеризации.

tabulate(idx)
  Value    Count   Percent
      1       48     32.00%
      2       50     33.33%
      3       52     34.67%

Percent показывает процент точек данных, назначенных трем кластерам.

Повторить спектральную кластеризацию с использованием данных в качестве входных данных для spectralcluster. Определить 'NumNeighbors' как size(X,1), что соответствует созданию матрицы подобия S путем соединения каждой точки со всеми остальными точками.

idx2 = spectralcluster(X,k,'NumNeighbors',size(X,1),'LaplacianNormalization','symmetric');
gscatter(X(:,1),X(:,2),idx2);

Figure contains an axes. The axes contains 3 objects of type line. These objects represent 1, 2, 3.

tabulate(idx2)
  Value    Count   Percent
      1       50     33.33%
      2       52     34.67%
      3       48     32.00%

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

Поиск кластеров в наборе данных на основе заданного радиуса поиска для создания графа подобия.

Создание данных с помощью 3 кластеры, каждый из которых содержит 500 точек.

rng('default') % For reproducibility
N = 500;
X = [mvnrnd([0 0],eye(2),N); ...
    mvnrnd(5*[1 -1],eye(2),N); ...
    mvnrnd(5*[1 1],eye(2),N)];

Укажите радиус поиска 2 для создания графа подобия и найти 3 кластера в данных.

idx = spectralcluster(X,3,'SimilarityGraph','epsilon','Radius',2);

Визуализация результата кластеризации.

gscatter(X(:,1),X(:,2),idx);

Figure contains an axes. The axes contains 3 objects of type line. These objects represent 1, 2, 3.

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

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

rng('default'); % For reproducibility
n = 100;
X = [randn(n,2)*0.5+3;
    randn(n,2)*0.5
    randn(n,2)*0.5-3]; 

Оцените количество кластеров в данных, используя собственные значения матрицы Лапласа. Вычислите пять наименьших собственных значений (по величине) матрицы Лапласа.

[~,~,D_temp] = spectralcluster(X,5)
D_temp = 5×1

   -0.0000
   -0.0000
   -0.0000
    0.0277
    0.0296

Только первые три собственных значения приблизительно равны нулю. Число нулевых собственных значений является хорошим показателем количества связных компонентов в графе подобия и, следовательно, хорошей оценкой количества кластеров в ваших данных. Итак, k=3 является хорошей оценкой количества кластеров в X.

Найти k=3 кластеры и возвращают три наименьших собственных значения и соответствующие собственные векторы лапласиевой матрицы.

[idx,V,D] = spectralcluster(X,3)
idx = 300×1

     3
     3
     3
     3
     3
     3
     3
     3
     3
     3
      ⋮

V = 300×3

   -0.0000    0.1000    0.0000
   -0.0000    0.1000    0.0000
   -0.0000    0.1000    0.0000
   -0.0000    0.1000    0.0000
   -0.0000    0.1000    0.0000
   -0.0000    0.1000    0.0000
   -0.0000    0.1000    0.0000
   -0.0000    0.1000    0.0000
   -0.0000    0.1000    0.0000
   -0.0000    0.1000    0.0000
      ⋮

D = 3×1
10-16 ×

   -0.3634
   -0.3857
   -0.3894

Элементы D соответствуют трём наименьшим собственным значениям матрицы Лапласа. Столбцы V содержат собственные векторы, соответствующие собственным значениям в D. Для хорошо разделенных кластеров собственные векторы являются индикаторными векторами. Собственные векторы имеют значения ноль (или близкие к нулю) для точек, которые не принадлежат определенному кластеру, и ненулевые значения для точек, которые принадлежат конкретному кластеру.

Визуализация результата кластеризации.

gscatter(X(:,1),X(:,2),idx);

Figure contains an axes. The axes contains 3 objects of type line. These objects represent 1, 2, 3.

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

свернуть все

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

Программное обеспечение обрабатывает NaNs в X как отсутствующие данные и игнорирует любую строку X содержащий, по крайней мере, один NaN. spectralcluster функция возвращает NaN значения для соответствующей строки в выходных аргументах idx и V.

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

Матрица подобия, заданная как симметричная матрица n-на-n, где n - количество наблюдений. Матрица подобия (или матрица смежности) представляет входные данные путем моделирования локальных отношений соседства между точками данных. Значения в матрице подобия представляют ребра (или соединения) между узлами (точками данных), которые связаны в графе подобия. Дополнительные сведения см. в разделе Матрица подобия.

S не должен содержать NaN значения.

Использование матрицы подобия в качестве первого входа spectralcluster, необходимо указать 'Distance','precomputed'.

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

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

Дополнительные сведения об оценке количества кластеров см. в разделе Советы.

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

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

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

Пример: spectralcluster(X,3,'SimilarityGraph','epsilon','Radius',5) определяет 3 кластеров и использует метод поиска радиуса с радиусом поиска 5 для построения графа подобия.

Метрика расстояния, заданная как разделенная запятыми пара, состоящая из 'Distance' и символьный вектор, строковый скаляр или дескриптор функции, как описано в этой таблице.

СтоимостьОписание
'precomputed'

Предварительно вычисленное расстояние. Необходимо указать этот параметр, если первый ввод в spectralcluster является матрицей подобия S.

'euclidean'

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

'seuclidean'

Стандартизированное евклидово расстояние. Каждая разность координат между наблюдениями масштабируется делением на соответствующий элемент стандартного отклонения, вычисленного из X. Используйте Scale аргумент пары «имя-значение» для указания другого коэффициента масштабирования.

'mahalanobis'

Расстояние Махаланобиса с использованием ковариации образца X, C = cov(X,'omitrows'). Используйте Cov аргумент пары имя-значение для указания другой ковариационной матрицы.

'cityblock'

Расстояние между городскими кварталами

'minkowski'

Минковская дистанция. Степень по умолчанию равна 2. Используйте P аргумент пары имя-значение для указания другой степени, где P - положительное скалярное значение.

'chebychev'

Расстояние Чебычева (максимальная разность координат)

'cosine'

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

'correlation'

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

'hamming'

Расстояние хэмминга, которое представляет собой процент различающихся координат

'jaccard'

Один минус коэффициент Jaccard, который является процентом ненулевых координат, которые отличаются

'spearman'

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

@distfun

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

function D2 = distfun(ZI,ZJ)
% calculation of distance
...
где

  • ZI является 1около-n вектор, содержащий одно наблюдение.

  • ZJ является m2около-n матрица, содержащая несколько наблюдений. distfun должен принять матрицу ZJ с произвольным числом наблюдений.

  • D2 является m2около-1 вектор расстояний, и D2(k) - расстояние между наблюдениями ZI и ZJ(k,:).

Если данные не разрежены, можно, как правило, быстрее вычислять расстояние, используя встроенное расстояние вместо дескриптора функции.

Дополнительные сведения см. в разделе Метрики расстояния.

При использовании 'seuclidean', 'minkowski', или 'mahalanobis' метрика расстояния, можно указать дополнительный аргумент пары имя-значение 'Scale', 'P', или 'Cov', соответственно, для управления метрикой расстояния.

Пример: spectralcluster(X,5,'Distance','minkowski','P',3) определяет 5 кластеры и использование метрики расстояния Минковского с показателем 3 для выполнения алгоритма кластеризации.

Экспонента для метрики расстояния Минковского, заданная как разделенная запятыми пара, состоящая из 'P' и положительный скаляр.

Этот аргумент допустим только в том случае, если 'Distance' является 'minkowski'.

Пример: 'P',3

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

Ковариационная матрица для метрики расстояния Махаланобиса, заданная как разделенная запятыми пара, состоящая из 'Cov' и положительная определенная матрица.

Этот аргумент допустим только в том случае, если 'Distance' является 'mahalanobis'.

Пример: 'Cov',eye(4)

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

Масштабные коэффициенты для стандартизированной евклидовой метрики расстояния, заданной как разделенная запятыми пара, состоящая из 'Scale' и числовой вектор неотрицательных значений.

Scale имеет длину p (количество столбцов в X), потому что каждое измерение (столбец) X имеет соответствующее значение в Scale. Для каждого измерения X, spectralcluster использует соответствующее значение в Scale для стандартизации различий между наблюдениями.

Этот аргумент допустим только в том случае, если 'Distance' является 'seuclidean'.

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

Тип графа подобия для построения из входных данных X, указанная как пара, разделенная запятыми, состоящая из 'SimilarityGraph' и одно из этих значений.

СтоимостьОписаниеАргументы пары имя-значение для конкретного графа
'knn'(По умолчанию) Построение графика с использованием ближайших соседей.

'NumNeighbors' - число ближайших соседей, используемых для построения графа подобия;

'KNNGraphType' - Тип ближайшего соседнего графа

'epsilon'

Постройте график, используя поиск по радиусу. Необходимо указать значение для Radius при использовании этого параметра.

'Radius' - радиус поиска ближайших соседей, используемых для построения графа подобия;

Дополнительные сведения см. в разделе График подобия.

Этот аргумент допустим только в том случае, если 'Distance' не является 'precomputed'.

Пример: 'SimilarityGraph','epsilon'

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

Этот аргумент допустим только в том случае, если 'SimilarityGraph' является 'knn'. Дополнительные сведения см. в разделе График подобия.

Пример: 'NumNeighbors',10

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

Тип ближайшего соседнего графа, указанного как разделенная запятыми пара, состоящая из 'KNNGraphType' и одно из этих значений.

СтоимостьОписание
'complete'

(По умолчанию) Соединяет две точки i и j, когда либо i является ближайшим соседом j, либо j является ближайшим соседом i.

Эта опция приводит к более плотному представлению матрицы подобия.

'mutual'

Соединяет две точки i и j, когда i является ближайшим соседом j, а j является ближайшим соседом i.

Эта опция приводит к более скудному представлению матрицы подобия.

Этот аргумент допустим только в том случае, если 'SimilarityGraph' является 'knn'.

Пример: 'KNNGraphType','mutual'

Радиус поиска ближайших соседей, используемых для построения графа подобия, заданного как разделенная запятыми пара, состоящая из 'Radius' и неотрицательный скаляр.

Необходимо указать этот аргумент, если 'SimilarityGraph' является 'epsilon'. Дополнительные сведения см. в разделе График подобия.

Пример: 'Radius',5

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

Масштабный коэффициент для ядра, определяемый как разделенная запятыми пара, состоящая из 'KernelScale' и 'auto' или положительный скаляр. Программа использует масштабный коэффициент для преобразования расстояний в измерения подобия. Дополнительные сведения см. в разделе График подобия.

  • 'auto' поддерживается только для 'euclidean' и 'seuclidean' метрики расстояния.

  • При указании 'auto'затем программное обеспечение выбирает соответствующий масштабный коэффициент с использованием эвристической процедуры. Эта эвристическая процедура использует субдискретизацию, поэтому оценки могут варьироваться от одного вызова к другому. Чтобы воспроизвести результаты, задайте начальное число случайного числа с помощью rng перед вызовом spectralcluster.

Этот аргумент допустим только в том случае, если 'Distance' не является 'precomputed'.

Пример: 'KernelScale','auto'

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

Метод нормализации матрицы Лапласа L, указанной как разделенная запятыми пара, состоящая из 'LaplacianNormalization' и одно из этих значений.

СтоимостьОписание
'none'

Используйте лапласовую матрицу L без нормализации.

'randomwalk'

(По умолчанию) Используйте нормализованную лапласианскую матрицу Lrw (Shi-Malik [2]).

Lrw = Dg 1L.

Матрица Dg является градусной матрицей.

'symmetric'

Используйте нормализованную симметричную лапласианскую матрицу Ls (Ng-Jordan-Weiss [3]).

Ls = Dg 1/2LDg − 1/2.

Матрица Dg является градусной матрицей.

Дополнительные сведения см. в разделе Матрица Laplacian.

Пример: 'LaplacianNormalization','randomwalk'

Метод кластеризации для кластеризации собственных векторов матрицы Лапласа, определяемый как пара, разделенная запятыми, состоящая из 'ClusterMethod' и либо 'kmeans' или 'kmedoids'.

  • 'kmeans' - Выполнить кластеризацию k-means с помощью kmeans функция.

  • 'kmedoids' - Выполнение кластеризации k-medoids с помощью kmedoids функция.

kmeans и kmedoids включают случайность в свои алгоритмы. Поэтому воспроизвести результаты spectralcluster, необходимо задать начальное число генератора случайных чисел с помощью rng.

Пример: 'ClusterMethod','kmedoids'

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

свернуть все

Индексы кластера, возвращаемые в виде числового вектора столбца. idx имеет n строк, и каждая строка idx указывает назначение кластера соответствующей строки (или наблюдения) в X.

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

Собственные векторы, возвращаемые как n-by-k числовая матрица. Столбцы V являются собственными векторами, соответствующими k наименьшие собственные значения матрицы Лапласа. Эти собственные векторы являются низкоразмерным представлением входных данных. X в новом пространстве, где кластеры более широко разделены.

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

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

Собственные значения, возвращенные как k-by-1 числовой вектор, содержащий k наименьшие собственные значения матрицы Лапласа. Число нулевых собственных значений в D является показателем количества связных компонентов в графе подобия и, следовательно, является хорошей оценкой количества кластеров в ваших данных.

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

Подробнее

свернуть все

График подобия

График подобия моделирует локальные отношения окрестности между точками данных в X как неориентированный граф. Узлы на графике представляют точки данных, а ребра, которые не направлены, представляют связи между точками данных.

Если попарное расстояние Disti, j между любыми двумя узлами i и j положительное (или больше определенного порога), то граф подобия соединяет два узла с помощью ребра [1]. Ребро между двумя узлами взвешивается по попарному подобию Si, j, где Si, j = exp ((Disti, jλ) 2), для заданного значения шкалы ядер λ.

spectralcluster поддерживает эти два метода построения графа подобия:

  • Метод ближайшего соседа (если 'SimilarityGraph' является 'knn'(по умолчанию)): spectralcluster соединяет точки в X это ближайшие соседи. Вы можете использовать 'NumNeighbors' и 'KNNGraphType' аргументы пары имя-значение, чтобы указать опции для построения ближайшего соседнего графа.

    • Использовать 'NumNeighbors' для указания числа ближайших соседей.

    • Использовать 'KNNGraphType' для указания необходимости создания 'complete' или 'mutual' соединение точек.

  • Метод поиска по радиусу (если 'SimilarityGraph' является 'epsilon'): spectralcluster соединяет точки, попарные расстояния которых меньше радиуса поиска. Необходимо указать радиус поиска для ближайших соседей, используемых для построения графика подобия, используя 'Radius' аргумент пары имя-значение.

Матрица подобия

Матрица подобия является матричным представлением графа подобия. Матрица n-на-n S = (Si, j) i, j = 1,..., n содержит попарные значения подобия между связными узлами в графе подобия. Матрица подобия графа также называется матрицей смежности.

Матрица подобия симметрична, потому что рёбра графа подобия не направлены. Значение Si,j = 0 означает, что узлы i и j графа подобия не связаны.

Матрица степеней

Матрица степени Dg представляет собой диагональную матрицу n-на-n, полученную суммированием строк матрицы подобия S. То есть i-й диагональный элемент Dg представляет собой Dg (i, i) =∑j=1nSi,j.

Лапласианская матрица

Матрица Лапласа является одним из способов представления графа подобия. spectralcluster функция поддерживает ненормализованную матрицу Лапласа, нормализованную матрицу Лапласа с использованием метода Ши-Малика [2] и нормализованную матрицу Лапласа с использованием метода Нг-Джордана-Вайса [3].

  • Ненормализованная матрица Лапласа L представляет собой разность между матрицей степени и матрицей подобия.

    L = Dg − S.

  • Нормализованная случайная лапласианская матрица (Ши-Малик) определяется как:

    Lrw = Dg 1L.

    Чтобы вывести Lrw, решите обобщенную задачу собственного значения Lv = λ Dgv, где v - вектор-столбец длиной n, а λ - скаляр. Значения λ, удовлетворяющие уравнению, являются обобщёнными собственными значениями матрицы Lrw = Dg − 1L.

    Можно использовать функцию MATLAB ®eigs для решения обобщенной задачи собственного значения.

  • Нормализованная симметричная лапласианская матрица (Ng-Jordan-Weiss) определяется как:

    Ls = Dg 1/2LDg − 1/2.

Используйте 'LaplacianNormalization' аргумент пары «имя-значение» для указания метода нормализации матрицы Лапласа.

Совет

  • Рассмотрите возможность использования спектральной кластеризации, когда кластеры в ваших данных естественным образом не соответствуют выпуклым областям.

  • По алгоритму спектральной кластеризации можно оценить количество кластеров k как:

    • Число собственных значений матрицы Лапласа, которые равны 0.

    • Число связанных компонентов в представлении графика подобия. Использовать graph для создания графа подобия из матрицы подобия и использования conncomp чтобы найти количество связанных компонентов в графике.

    Пример см. в разделах Оценка количества кластеров и Выполнение спектральной кластеризации.

Алгоритмы

Спектральная кластеризация является алгоритмом на основе графа для кластеризации точек данных (или наблюдений в X). Алгоритм включает в себя построение графа, поиск его лапласовской матрицы и использование этой матрицы для поиска k собственных векторов для разделения графа k путей. По умолчанию алгоритм для spectralcluster вычисляет нормализованную лапласовскую матрицу случайного обхода методом, описанным Ши-Маликом [2]. spectralcluster также поддерживает ненормализованную лапласианскую матрицу и нормализованную симметричную лапласианскую матрицу, использующую метод Нг-Джордана-Вайса [3]. spectralcluster реализует кластеризацию следующим образом:

  1. Для каждой точки данных в X, определите локальную окрестность с помощью метода поиска по радиусу или метода ближайшего соседа, как указано в 'SimilarityGraph' аргумент пары имя-значение (см. График подобия). Затем найдите попарные расстояния Disti, j для всех точек i и j по соседству.

  2. Преобразуйте расстояния в измерения подобия с помощью преобразования ядра Si, j = exp ((Disti, jλ) 2). Матрица S является матрицей подобия, а λ является масштабным коэффициентом для ядра, как указано с помощью'KernelScale' аргумент пары имя-значение.

  3. Вычислите ненормализованную лапласианскую матрицу L, нормализованную лапласианскую матрицу случайного обхода Lrw или нормализованную симметричную лапласианскую матрицу Ls, в зависимости от значения 'LaplacianNormalization' аргумент пары имя-значение.

  4. Создайте V∈ℝn×k матрицы, содержащий столбцы v1,..., vk, где столбцы являются k собственными векторами, которые соответствуют k наименьшим собственным значениям матрицы Лапласа. При использовании LS нормализуйте каждую строку V, чтобы она имела единичную длину.

  5. Рассматривая каждую строку V как точку, скопируйте n точек, используя кластеризацию k-means (по умолчанию) или кластеризацию k-medoids, как определено 'ClusterMethod' аргумент пары имя-значение.

  6. Назначение исходных точек в X к тем же кластерам, что и их соответствующие строки в V.

Ссылки

[1] Фон Луксбург, У. «Учебное пособие по спектральной кластеризации». Статистика и вычислительный журнал. Vol.17, номер 4, 2007, стр. 395-416.

[2] Ши, Дж., и Дж. Малик. «Нормализованные вырезы и сегментация изображения». Транзакции IEEE по анализу шаблонов и машинному интеллекту. Том 22, 2000, стр. 888-905.

[3] Нг, А. Я., М. Джордан и Я. Вайс. «О спектральной кластеризации: анализ и алгоритм». В трудах о достижениях в системах обработки нейронной информации 14. MIT Press, 2001, стр. 849-856.

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