kmedoids

k-medoids кластеризация

Описание

пример

idx = kmedoids(X,k) выполняет k-medoids, Кластеризирующийся, чтобы разделить наблюдения за n-by-p матричный X в k кластеры, и возвращают n-by-1 векторный idx содержа кластерные индексы каждого наблюдения. Строки X соответствуйте точкам, и столбцы соответствуют переменным. По умолчанию, kmedoids использование придало квадратную форму Евклидовой метрике расстояния и k - средние значения ++ алгоритм для выбора начального кластера medoid положения.

idx = kmedoids(X,k,Name,Value) дополнительные опции использования заданы одним или несколькими Name,Value парные аргументы.

[idx,C] = kmedoids(___) возвращает k кластер medoid местоположения в k-by-p матричный C.

[idx,C,sumd] = kmedoids(___) возвращает суммы в кластере point-to-medoid расстояний в k-by-1 векторный sumd.

[idx,C,sumd,D] = kmedoids(___) возвращает расстояния от каждой точки до каждого medoid в n-by-k матричный D.

[idx,C,sumd,D,midx] = kmedoids(___) возвращает индексы midx таким образом, что C = X(midx, :). midx k-by-1 вектор.

[idx,C,sumd,D,midx,info] = kmedoids(___) возвращает структуру info с информацией об опциях, используемых алгоритмом, когда выполняется.

Примеры

свернуть все

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

rng('default'); % For reproducibility
X = [randn(100,2)*0.75+ones(100,2);
    randn(100,2)*0.55-ones(100,2)];
figure;
plot(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 line.

Данные группы в два кластера с помощью kmedoids. Используйте cityblock метрика расстояния.

opts = statset('Display','iter');
[idx,C,sumd,d,midx,info] = kmedoids(X,2,'Distance','cityblock','Options',opts);
   rep	    iter	         sum
     1	       1	     209.856
     1	       2	     209.856
Best total sum of distances = 209.856

info struct, который содержит информацию о том, как алгоритм выполнялся. Например, bestReplicate поле указывает на реплицирование, которое использовалось, чтобы произвести конечное решение. В этом примере использовался реплицировать номер 1, поскольку количество по умолчанию реплицирует, 1 для алгоритма по умолчанию, который является pam в этом случае.

info
info = struct with fields:
        algorithm: 'pam'
            start: 'plus'
         distance: 'cityblock'
       iterations: 2
    bestReplicate: 1

Постройте кластеры и кластер medoids.

figure;
plot(X(idx==1,1),X(idx==1,2),'r.','MarkerSize',7)
hold on
plot(X(idx==2,1),X(idx==2,2),'b.','MarkerSize',7)
plot(C(:,1),C(:,2),'co',...
     'MarkerSize',7,'LineWidth',1.5)
legend('Cluster 1','Cluster 2','Medoids',...
       'Location','NW');
title('Cluster Assignments and Medoids');
hold off

Figure contains an axes object. The axes object with title Cluster Assignments and Medoids contains 3 objects of type line. These objects represent Cluster 1, Cluster 2, Medoids.

Этот пример использует "Грибной" [3][4][5] [6][7] набора данных из архива машинного обучения UCI [7], описанный в http://archive.ics.uci.edu/ml/datasets/Mushroom. Набор данных включает 22 предиктора для 8 124 наблюдений за различными грибами. Предикторы являются типами категориальных данных. Например, форма дна категоризирована с функциями 'b' для колоколообразного дна и 'c' для конического. Грибной цвет также категоризирован с функциями 'n' для коричневого и 'p' для розового. Набор данных также включает классификацию для каждого гриба или съедобного или ядовитого.

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

medoid набора является членом того набора, среднее несходство которого с другими членами набора является самым маленьким. Подобие может быть задано для многих типов данных, которые не позволяют среднему значению быть вычисленным, позволяя k-medoids использоваться для более широкой области значений проблем, чем k - средние значения.

Используя k-medoids, этот пример кластеризирует грибы в две группы, на основе обеспеченных предикторов. Это затем исследует отношение между теми кластерами и классификациями грибов или как съедобное или как ядовитое.

Этот пример принимает, что вы загрузили "Грибной" [3][4][5] [6][7] набора данных с базы данных UCI (http://archive.ics.uci.edu/ml/machine-learning-databases/mushroom/) и сохраненный он в вашем текущем каталоге как текстовый файл, названный agaricus-lepiota.txt. Нет никаких заголовков столбцов в данных, таким образом, readtable использует имена переменных по умолчанию.

clear all
data = readtable('agaricus-lepiota.txt','ReadVariableNames',false);

Отобразите первые 5 грибов с их первыми несколькими функциями.

data(1:5,1:10)
ans = 

    Var1    Var2    Var3    Var4    Var5    Var6    Var7    Var8    Var9    Var10
    ____    ____    ____    ____    ____    ____    ____    ____    ____    _____

    'p'     'x'     's'     'n'     't'     'p'     'f'     'c'     'n'     'k'  
    'e'     'x'     's'     'y'     't'     'a'     'f'     'c'     'b'     'k'  
    'e'     'b'     's'     'w'     't'     'l'     'f'     'c'     'b'     'n'  
    'p'     'x'     'y'     'w'     't'     'p'     'f'     'c'     'n'     'n'  
    'e'     'x'     's'     'g'     'f'     'n'     'f'     'w'     'b'     'k'

Извлеките первый столбец, маркированные данные для съедобных и ядовитых групп. Затем удалите столбец.

labels = data(:,1);
labels = categorical(labels{:,:});
data(:,1) = [];

Сохраните имена предикторов (функции), которые описаны в http://archive.ics.uci.edu/ml/machine-learning-databases/mushroom/agaricus-lepiota.names.

VarNames = {'cap_shape' 'cap_surface' 'cap_color' 'bruises' 'odor' ...
    'gill_attachment' 'gill_spacing' 'gill_size' 'gill_color' ...
    'stalk_shape' 'stalk_root' 'stalk_surface_above_ring' ...
    'stalk_surface_below_ring' 'stalk_color_above_ring' ...
    'stalk_color_below_ring' 'veil_type' 'veil_color' 'ring_number' ....
    'ring_type' 'spore_print_color' 'population' 'habitat'};

Установите имена переменных.

data.Properties.VariableNames = VarNames;

Существует в общей сложности 2 480 отсутствующих значений, обозначенных как '?'.

sum(char(data{:,:}) == '?')
ans =

        2480

На основе контроля набора данных и его описания, отсутствующие значения принадлежат только 11-й переменной (stalk_root). Удалите столбец из таблицы.

data(:,11) = [];

kmedoids только принимает числовые данные. Необходимо бросить категории, которые вы имеете в числовой тип. Функция расстояния, которую вы будете использовать, чтобы задать несходство данных, будет основана на двойном представлении категориальных данных.

cats = categorical(data{:,:});
data = double(cats);

kmedoids может использовать любую метрику расстояния, поддержанную pdist2, чтобы кластеризироваться. Для этого примера вы будете кластеризировать данные с помощью Расстояния Хемминга, потому что это - соответствующая метрика расстояния для категориальных данных, как проиллюстрировано ниже. Расстояние Хемминга между двумя векторами является процентом векторных компонентов, которые отличаются. Например, рассмотрите эти два вектора.

v1 = [1 0 2 1];

v2 = [1 1 2 1];

Они равны в 1-й, 3-й и 4-й координате. Начиная с 1 из 4 координат отличаются, Расстояние Хемминга между этими двумя векторами.25.

Можно использовать функцию pdist2 измерять Расстояние Хемминга между первой и второй строкой данных, числовым представлением категориальных грибных данных. Значение.2857 средних значений, что 6 из 21 функции гриба отличаются.

pdist2(data(1,:),data(2,:),'hamming')
ans =

    0.2857

В этом примере вы кластеризируете грибные данные в два кластера на основе функций, чтобы видеть, соответствует ли кластеризация съедобности. kmedoids функция, как гарантируют, будет сходиться к локальной переменной минимумы кластеризирующегося критерия; однако, это не может быть глобальным минимумом для проблемы. Это - хорошая идея кластеризировать проблему несколько раз с помощью 'replicates' параметр. Когда 'replicates' установлен в значение, n, больше, чем 1, k-medoids алгоритм является запуском времена n, и лучший результат возвращен.

Запускаться kmedoids к кластерным данным в 2 кластера, на основе Расстояния Хемминга и возвращать лучший результат 3 реплицирует, вы запускаете следующее.

rng('default'); % For reproducibility
[IDX, C, SUMD, D, MIDX, INFO] = kmedoids(data,2,'distance','hamming','replicates',3);

Давайте примем, что грибы в предсказанной группе 1 ядовиты, и группа 2 все съедобны. Чтобы определить эффективность кластеризации результатов, вычислите, сколько грибов в группе 1 действительно ядовито, и группа 2 съедобны на основе известных меток. Другими словами, вычислите количество ложных положительных сторон, ложных отрицательных сторон, а также истинных положительных сторон и истинных отрицательных сторон.

Создайте матрицу беспорядка (или соответствие с матрицей), где диагональные элементы представляют количество истинных положительных сторон и истинных отрицательных сторон, соответственно. Недиагональные элементы представляют ложные отрицательные стороны и ложные положительные стороны, соответственно. Для удобства используйте confusionmat функция, которая вычисляет матрицу беспорядка, данную известные метки и предсказанные метки. Получите информацию предсказанной метки от IDX переменная. IDX содержит значения 1 и 2 для каждой точки данных, представляя ядовитые и съедобные группы, соответственно.

predLabels = labels; % Initialize a vector for predicted labels.
predLabels(IDX==1) = categorical({'p'}); % Assign group 1 to be poisonous.
predLabels(IDX==2) = categorical({'e'}); % Assign group 2 to be edible.
confMatrix = confusionmat(labels,predLabels)
confMatrix =

        4176          32
         816        3100

Из 4 208 съедобных грибов, 4176 были правильно предсказаны, чтобы быть в группе 2 (съедобная группа), и 32 были неправильно предсказаны, чтобы быть в группе 1 (ядовитая группа). Точно так же из 3 916 ядовитых грибов, 3100 были правильно предсказаны, чтобы быть в группе 1 (ядовитая группа), и 816 были неправильно предсказаны, чтобы быть в группе 2 (съедобная группа).

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

accuracy = (confMatrix(1,1)+confMatrix(2,2))/(sum(sum(confMatrix)))
accuracy =

    0.8956
precision = confMatrix(1,1) / (confMatrix(1,1)+confMatrix(2,1))
precision =

    0.8365

Результаты показали, что применение k-medoids алгоритма к категориальным функциям грибов привело к кластерам, которые были сопоставлены со съедобностью.

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

свернуть все

Данные в виде числовой матрицы. Строки X соответствуйте наблюдениям, и столбцы соответствуют переменным.

Количество medoids в данных в виде положительного целого числа.

Аргументы name-value

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

Пример: 'Distance','euclidean','Replicates',3,'Options',statset('UseParallel',1) указывает, что Евклидово расстояние, три реплицируют medoids в различных начальных значениях, и использовать параллельные вычисления.

Алгоритм, чтобы найти medoids в виде разделенной запятой пары, состоящей из 'Algorithm' и 'pam', 'small', 'clara', или 'large'. Алгоритм по умолчанию зависит от количества строк X.

  • Если количество строк X меньше 3000, 'pam' алгоритм по умолчанию.

  • Если количество строк между 3 000 и 10000, 'small' алгоритм по умолчанию.

  • Для всех других случаев, 'large' алгоритм по умолчанию.

Можно заменить выбор по умолчанию путем явного утверждения алгоритма. Эта таблица суммирует доступные алгоритмы.

АлгоритмОписание
'pam'

Разделение вокруг Medoids (PAM) является классическим алгоритмом для решения k-medoids проблема, описанная в [1]. После применения функции инициализации, чтобы выбрать начальную букву medoid положения, программа выполняет шаг подкачки алгоритма PAM, то есть, это ищет по всем возможным подкачкам между medoids и non-medoids, чтобы видеть, понижается ли сумма medoid к кластерным расстояниям члена. Можно задать, какую инициализацию функционируют, чтобы использовать через 'Start' аргумент пары "имя-значение".

Алгоритм продолжает можно следующим образом.

  1. Шаг сборки: Каждый из кластеров k сопоставлен с потенциалом medoid. Это присвоение выполняется с помощью метода, заданного 'Start' аргумент пары "имя-значение". 

  2. Шаг подкачки: В каждом кластере каждая точка тестируется как потенциал medoid путем проверки, получает ли сумма расстояний в кластере меньшее использование, которые указывают как medoid. Если так, точка задана как новый medoid. Каждая точка затем присвоена кластеру с самым близким medoid.

Алгоритм выполняет итерации сборки - и шаги подкачки, пока medoids не изменяются, или другим критериям завершения соответствуют.

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

'small'

Используйте алгоритм, похожий на алгоритм k-средних значений, чтобы найти k medoids. Эта опция использует вариант итераций Lloyd's на основе [2].

Алгоритм продолжает можно следующим образом.

  1. Для каждой точки в каждом кластере вычислите сумму расстояний от точки до любой точки в кластере. Выберите точку, которая минимизирует сумму как новый medoid.

  2. Обновите кластерное членство для каждой точки данных, чтобы отразить новый medoid.

Алгоритм повторяет эти шаги, пока никакие дальнейшие обновления не происходят, или другим критериям завершения соответствуют. Алгоритм имеет дополнительную подобную PAM онлайновую фазу обновления (заданный 'OnlinePhase' аргумент пары "имя-значение"), который улучшает кластерное качество. Это имеет тенденцию возвращать более высокие качественные решения, чем clara или large алгоритмы, но это не может быть лучший выбор для очень больших данных.

'clara'

Кластеризация Крупных приложений (CLARA) [1] неоднократно выполняет алгоритм PAM на случайных подмножествах данных. Это стремится преодолевать масштабирующиеся проблемы, поставленные алгоритмом PAM посредством выборки.

Алгоритм продолжает можно следующим образом.

  1. Выберите подмножество данных и примените алгоритм PAM к подмножеству.

  2. Присвойте точки полного набора данных к кластерам путем выбора самого близкого medoid.

Алгоритм повторяет эти шаги, пока medoids не изменяются, или другим критериям завершения соответствуют.

Для лучшей эффективности рекомендуется, чтобы вы выполнили, несколько реплицируют. По умолчанию программа выполняет пять, реплицирует. Каждый реплицирует выборки s строки от X (заданный 'NumSamples' аргумент пары "имя-значение"), чтобы выполнить кластеризацию на. По умолчанию, 40+2*k выборки выбраны.

'large'

Это похоже на small масштабируйте алгоритм, и неоднократно выполняет поисковые запросы с помощью k-средних значений как обновление. Однако алгоритм исследует только случайную выборку кластерных членов во время каждой итерации. Корректируемый пользователем параметр, 'PercentNeighbors', управляет количеством соседей, чтобы исследовать. Если нет никакого улучшения после того, как соседи исследованы, алгоритм останавливается локальный поиск. Алгоритм выполняет в общей сложности r, реплицирует (заданный 'Replicates' аргумент пары "имя-значение"), и возвращает лучший результат кластеризации. Алгоритм имеет дополнительную подобную PAM онлайновую фазу (заданный 'OnlinePhase' аргумент пары "имя-значение"), который улучшает кластерное качество.

Пример: 'Algorithm','pam'

Флаг, чтобы выполнить подобную PAM онлайновую фазу обновления в виде разделенной запятой пары, состоящей из 'OnlinePhase' и 'on' или 'off'.

Если это - onто kmedoids выполняет подобное PAM обновление medoids после итераций Ллойда в small и large алгоритмы. Во время этой онлайновой фазы обновления алгоритм выбирает небольшое подмножество точек данных в каждом кластере, которые являются самыми далекими от и самыми близкими к medoid. Для каждой выбранной точки это повторно присваивает кластеризацию целого набора данных и проверку, если это создает меньшую сумму расстояний, чем самое известное.

Другими словами, факторы подкачки ограничиваются точками около medoids и далекие от medoids. Близкие вопросы рассматриваются для того, чтобы совершенствовать кластеризацию. Далекие вопросы рассматриваются для того, чтобы выйти из локальных минимумов. Включение этой функции имеет тенденцию улучшать качество решений, сгенерированных обоими алгоритмами. Общее время выполнения имеет тенденцию увеличиваться также, но увеличение обычно меньше одной итерации PAM.

Пример: OnlinePhase,'off'

Метрика расстояния в виде имени метрики расстояния, описанной в следующей таблице или указателе на функцию. kmedoids минимизирует сумму medoid к кластерным расстояниям члена.

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

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

'seuclidean'

Стандартизированное Евклидово расстояние. Каждое координатное различие между наблюдениями масштабируется путем деления на соответствующий элемент стандартного отклонения, S = std(X,'omitnan').

'cityblock'

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

'minkowski'

Расстояние Минковскего. Экспонента равняется 2.

'chebychev'

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

'mahalanobis'

Расстояние Mahalanobis с помощью выборочной ковариации X, C = cov(X,'omitrows')

'cosine'

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

'correlation'

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

'spearman'

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

'hamming'

Расстояние Хемминга, которое является процентом координат, которые отличаются

'jaccard'

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

@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,:).

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

Для определения каждой метрики расстояния смотрите Метрики Расстояния.

Пример: 'Distance','hamming'

Опции, чтобы управлять итеративным алгоритмом, чтобы минимизировать подходящие критерии в виде разделенной запятой пары, состоящей из 'Options' и массив структур, возвращенный statset. Поддерживаемые поля массива структур задают опции для управления итеративным алгоритмом. Эта таблица суммирует поддерживаемые поля.

Поле Описание
DisplayLevel of display выводится. Выбором является 'off' (значение по умолчанию) и 'iter'.
MaxIterМаксимальное количество итераций позволено. Значением по умолчанию является 100.
UseParallelЕсли true, вычислите параллельно. Если Parallel Computing Toolbox™ не доступен, то расчет происходит в последовательном режиме. Значением по умолчанию является false, значение последовательного расчета.
UseSubstreamsУстановите на true вычислить параллельно восстанавливаемым способом. Значением по умолчанию является false. Чтобы вычислить восстанавливаемо, необходимо также установить Streams к типу, позволяющему подпотоки: 'mlfg6331_64' или 'mrg32k3a'.
StreamsRandStream объектный массив или массив ячеек таких объектов. Для получения дополнительной информации об этих опциях и параллельных вычислениях в Statistics and Machine Learning Toolbox™, смотрите, Ускоряют Статистические Расчеты или вводят help parallelstats в командной строке.

Пример: 'Options',statset('Display','off')

Число раз, чтобы повторить кластеризацию с помощью нового начального кластера medoid положения в виде положительного целого числа. Значение по умолчанию зависит от выбора алгоритма. Для pam и small, значение по умолчанию равняется 1. Для clara, значение по умолчанию равняется 5. Для large, значение по умолчанию равняется 3.

Пример: 'Replicates',4

Количество отсчетов, чтобы взять из данных при выполнении clara алгоритм в виде положительного целого числа. Количество отсчетов по умолчанию вычисляется как 40+2*k.

Пример: 'NumSamples',160

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

Программа исследует percentneighbors*size(X,1) количество соседей к medoids. Если нет никакого улучшения суммы в кластере расстояний, то алгоритм останавливается.

Значение этого параметра между 0 и 1, где значение ближе к 1 имеет тенденцию давать более высокие качественные решения, но алгоритм занимает больше времени, чтобы запуститься, и значение ближе к 0, имеет тенденцию давать более низкие качественные решения, но заканчивается быстрее.

Пример: 'PercentNeighbors',0.01

Метод для выбора начального кластера medoid положения в виде разделенной запятой пары, состоящей из 'Start' и 'plus', 'sample', 'cluster', или матрица. Эта таблица суммирует доступные методы.

МетодОписание
'plus' (значение по умолчанию)Выберите k наблюдения от X согласно k - означает ++ алгоритм для кластерной центральной инициализации.
'sample'Выберите k наблюдения от X наугад.
'cluster'Выполните предварительную фазу кластеризации на случайной подвыборке (10%) X. Эта предварительная фаза самостоятельно инициализируется с помощью sample, то есть, наблюдения выбраны наугад.
матрицаПользовательский k- p матрица стартовых местоположений. В этом случае можно передать в [] для k входной параметр, и kmedoids выводит k от первой размерности матрицы. Можно также предоставить трехмерный массив, подразумевая значение для 'Replicates' от третьей размерности массива.

Пример: 'Start','sample'

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

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

свернуть все

Индексы Medoid, возвращенные как числовой вектор-столбец. idx имеет столько же строк сколько X, и каждая строка указывает на medoid присвоение соответствующего наблюдения.

Кластер medoid местоположения, возвращенные как числовая матрица. C k-by-p матрица, где строка j является medoid кластерного j

Суммы в кластере point-to-medoid расстояний, возвращенных как числовой вектор-столбец. sumd k- вектор by1, где элемент j является суммой point-to-medoid расстояний в кластерном j.

Расстояния от каждой точки до каждого medoid, возвращенного как числовая матрица. D n-by-k матрица, где элементом (j, m) является расстояние от наблюдения j к medoid m.

Индексируйте к X, возвращенный как вектор-столбец индексов. midx k- 1 вектор и индексы удовлетворяют C = X(midx,:).

Информация об алгоритме, возвращенная как struct. info содержит опции, используемые функцией, когда выполняется, такие как k-medoid кластеризирующийся алгоритм (algorithm), метод раньше выбирал начальный кластер medoid положения (start), метрика расстояния (distance), количество проделанных итераций в лучшем реплицируют (iterations) и реплицировать количество возвращенных результатов (bestReplicate).

Больше о

свернуть все

k-medoids кластеризация

k-medoids кластеризация является методом разделения, обычно используемым в областях, которые требуют робастности к данным о выбросе, произвольным метрикам расстояния или единицам, для которых среднее значение или медиана не имеют ясного определения.

Это похоже на k - средние значения, и цель обоих методов состоит в том, чтобы разделить набор измерений или наблюдений в подмножества k или кластеры так, чтобы подмножества минимизировали сумму расстояний между измерением и центром кластера измерения. В k - средний алгоритм, центр подмножества является средним значением измерений в подмножестве, часто названном центроидом. В k-medoids алгоритм, центр подмножества является членом подмножества, названного medoid.

k-medoids алгоритм возвращает medoids, которые являются фактическими точками данных в наборе данных. Это позволяет вам использовать алгоритм в ситуациях, где среднее значение данных не существует в наборе данных. Это - основное различие между k-medoids и k - средние значения, где центроиды, возвращенные k - средние значения, не могут быть в наборе данных. Следовательно k-medoids полезен для кластеризации категориальных данных, где среднее значение невозможно задать или интерпретировать.

Функция kmedoids обеспечивает несколько итеративных алгоритмов, которые минимизируют сумму расстояний от каждого объекта до его кластера medoid по всем кластерам. Один из алгоритмов называется разделением вокруг medoids (PAM) [1], который продолжает на двух шагах.

  1. Шаг сборки: Каждый из кластеров k сопоставлен с потенциалом medoid. Это присвоение выполняется с помощью метода, заданного 'Start' аргумент пары "имя-значение". 

  2. Шаг подкачки: В каждом кластере каждая точка тестируется как потенциал medoid путем проверки, получает ли сумма расстояний в кластере меньшее использование, которые указывают как medoid. Если так, точка задана как новый medoid. Каждая точка затем присвоена кластеру с самым близким medoid.

Алгоритм выполняет итерации сборки - и шаги подкачки, пока medoids не изменяются, или другим критериям завершения соответствуют.

Можно управлять деталями минимизации с помощью нескольких дополнительных входных параметров для kmedoids, включая единицы для начальных значений кластера medoids, и для максимального количества итераций. По умолчанию, kmedoids использует k - средние значения ++ алгоритм для кластера medoid инициализация и Евклидова метрика в квадрате, чтобы определить расстояния.

Ссылки

[1] Кауфман, L. и Rousseeuw, P. J. (2009). Нахождение групп в данных: введение в кластерный анализ. Хобокен, Нью-Джерси: John Wiley & Sons, Inc.

[2] Припаркуйтесь, H-S, и июнь, C-H. (2009). Простой и алгоритм FAST для кластеризации K-medoids. Экспертные системы с Приложениями. 36, 3336-3341.

[3] Schlimmer, J.S. (1987). Захват концепции Посредством Представительной Корректировки (Технический отчет 87-19). Докторская диссертация, Отдел Информатики и вычислительной техники, Калифорнийский университет, Ирвин.

[4] Iba, W., Wogulis, J. и Лэнгли, P. (1988). Обменивание простоты и покрытия в инкрементном изучении концепции. В продолжениях 5-й международной конференции по вопросам машинного обучения, 73-79. Анн-Арбор, Мичиган: Морган Кофманн.

[5] Дуч В, A.R., и Грабцзевский, K. (1996) Экстракция логических правил от обучающих данных с помощью сетей обратной связи. Proc. 1-го Онлайнового Семинара по Мягкому Вычислению, 19-30, стр 25-30.

[6] Дуч, W., Adamczak, R., Грабцзевский, K., Ishikawa, M. и Уэда, H. (1997). Экстракция четких логических правил с помощью ограниченных сетей обратной связи - сравнение двух новых подходов. Proc. европейского Симпозиума по Искусственным Нейронным сетям (ESANN '97), Брьюг, Бельгия 16-18.

[7] Bache, K. и Личмен, M. (2013). Репозиторий Машинного обучения UCI [http://archive.ics.uci.edu/ml]. Ирвин, CA: Калифорнийский университет, Школа Информатики и вычислительной техники.

Расширенные возможности

Смотрите также

| | | | | |

Введенный в R2014b