exponenta event banner

kmedoids

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

Описание

пример

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

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

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

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

[idx,C,sumd,D] = kmedoids(___) возвращает расстояния от каждой точки до каждого медоида в матрице 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. The axes 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 - структура, содержащая сведения о выполнении алгоритма. Например, bestReplicate указывает репликацию, которая использовалась для получения конечного раствора. В этом примере используется репликация номер 1, так как число репликаций по умолчанию равно 1 для алгоритма по умолчанию, то есть pam в данном случае.

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

Постройте графики кластеров и кластерных медоидов.

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. The axes 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 предиктора для 8124 наблюдений различных грибов. Предикторы являются категориальными типами данных. Например, форма колпачка классифицируется с элементами 'b' для колоколообразного колпачка и 'c' для конических. Грибной цвет также классифицируется с особенностями 'n' для коричневого, и 'p' для розового. Набор данных также включает классификацию для каждого гриба съедобного или ядовитого.

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

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

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

В этом примере предполагается, что набор данных «Грибы» был загружен [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;

Имеется в общей сложности 2480 отсутствующих значений, обозначенных как '?'.

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

Из 4208 съедобных грибов 4176 были правильно предсказаны в группе 2 (съедобная группа), а 32 были неправильно предсказаны в группе 1 (ядовитая группа). Аналогично, из 3916 ядовитых грибов 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 соответствуют наблюдениям, а столбцы - переменным.

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

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

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

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

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

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

  • Если число строк находится в диапазоне от 3000 до 10000, 'small' является алгоритмом по умолчанию.

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

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

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

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

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

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

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

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

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

'small'

Используйте алгоритм, аналогичный алгоритму k-means, чтобы найти k медоиды. Этот параметр использует вариант итераций Ллойда, основанный на [2].

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

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

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

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

'clara'

Clustering LARge Applications (CLARA) [1] многократно выполняет алгоритм PAM для случайных подмножеств данных. Он направлен на преодоление проблем масштабирования, связанных с алгоритмом PAM, посредством выборки.

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

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

  2. Назначьте точки полного набора данных кластерам, выбрав ближайший медоид.

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

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

'large'

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

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

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

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

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

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

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

СтоимостьОписание
'sqEuclidean'Квадрат евклидова расстояния (по умолчанию)
'euclidean'

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

'seuclidean'

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

'cityblock'

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

'minkowski'

Минковская дистанция. Показатель степени равен 2.

'chebychev'

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

'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. Поддерживаемые поля массива структуры определяют параметры управления итеративным алгоритмом. В этой таблице представлены поддерживаемые поля.

ОбластьОписание
DisplayУровень вывода на дисплей. Варианты: 'off' (по умолчанию) и 'iter'.
MaxIterМаксимально допустимое число итераций. Значение по умолчанию: 100.
UseParallelЕсли true, вычислять параллельно. Если функция Parallel Computing Toolbox™ недоступна, то вычисления выполняются в последовательном режиме. Значение по умолчанию: false, что означает последовательное вычисление.
UseSubstreamsУстановить в значение true вычислять параллельно воспроизводимым образом. Значение по умолчанию: false. Для воспроизводимого вычисления необходимо также установить Streams к типу, допускающему субпотоки: 'mlfg6331_64' или 'mrg32k3a'.
StreamsA RandStream объект или массив ячеек таких объектов. Дополнительные сведения об этих параметрах и параллельных вычислениях в Toolbox™ статистики и машинного обучения см. в разделе Ускорение статистических вычислений или ввод help parallelstats в командной строке.

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

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

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

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

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

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

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

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

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

Метод выбора исходных кластерных позиций медоидов, определяемый как разделенная запятыми пара, состоящая из 'Start' и 'plus', 'sample', 'cluster'или матрица. В этой таблице представлены доступные методы.

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

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

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

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

свернуть все

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

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

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

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

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

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

Подробнее

свернуть все

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

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

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

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

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

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

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

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

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

Ссылки

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

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

[3] Шлиммер, Дж.С. (1987). Приобретение концепции посредством репрезентационной корректировки (технический отчет 87-19). Докторская диссертация, факультет информации и компьютерных наук Калифорнийского университета в Ирвайне.

[4] Иба, У., Вогулис, Дж., и Лэнгли, П. (1988). Торг простотой и охватом в инкрементном концептуальном обучении. В трудах пятой Международной конференции по машинному обучению, 73-79. Энн Арбор, Мичиган: Морган Кауфманн.

[5] Duch W, A.R. и Grabchewski, K. (1996) Извлечение логических правил из обучающих данных с использованием сетей обратного распространения. Протокол 1-го онлайн-семинара по мягким вычислениям, 19-30, стр. 25-30.

[6] Дуч, В., Адамчак, Р., Грабчевски, К., Исикава, М. и Уэда, Х. (1997). Извлечение четких логических правил с использованием ограниченных сетей обратного распространения - сравнение двух новых подходов. Прок Европейского симпозиума по искусственным нейронным сетям (ESANN '97), Брюге, Бельгия 16-18.

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

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

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