kmedoids

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

Описание

пример

idx = kmedoids(X,k) выполняет k-медоиды Кластеризации, чтобы разбить наблюдения матрицы 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 - struct, которая содержит информацию о том, как был выполнен алгоритм. Для примера, 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.

Этот пример использует набор данных «Mushroom» [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 -медоиды, этот пример группирует грибы в две группы на основе предоставленных предикторов. Затем исследуются отношения между этими кластерами и классификациями грибов как съедобных или ядовитых.

Этот пример предполагает, что вы загрузили набор данных «Mushroom» [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 съедобна на основе известных меток. Другими словами, вычислите количество ложных положительных сторон, ложных отрицательных сторон, а также истинных положительных сторон и истинных отрицательных сторон.

Создайте матрицу неточностей (или совпадающую матрицу), где диагональные элементы представляют количество истинных срабатываний и истинных срабатываний, соответственно. Off-диагональные элементы представляют ложные срабатывания и ложные срабатывания, соответственно. Для удобства используйте 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. Своп-шаг: В каждом кластере каждая точка проверяется как потенциальный медоид, проверяя, становится ли сумма расстояний внутри кластера меньше, используя эту точку в качестве медоида. Если это так, то точка определяется как новый медоид. Каждая точка затем назначается кластеру с ближайшим медоидом.

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

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

'small'

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

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

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

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

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

'clara'

Кластеризация 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'

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

distfun

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

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

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

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

  • D2 является m2-by- 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'.
StreamsA RandStream объект или массив ячеек таких объектов. Для получения дополнительной информации об этих опциях и параллельных вычислениях в Statistics and Machine Learning 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 -меанс + + алгоритм для инициализации центра кластеров.
'sample'Выберите k наблюдения от X наугад.
'cluster'Выполните предварительную фазу кластеризации на случайной подвыборке (10%) X. Эта предварительная фаза сама инициализируется с помощью sample, то есть наблюдения выбираются случайным образом.
матрицаПользовательский k-by - p матрица начальных местоположений. В этом случае можно пройти [] для k входной параметр, и kmedoids выводит k от первой размерности матрицы. Можно также задать трехмерный массив, подразумевающий значение для 'Replicates' из третьей размерности массива.

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

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

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

свернуть все

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

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

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

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

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

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

Подробнее о

свернуть все

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

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

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

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

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

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

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

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

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

Ссылки

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

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

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

[4] Iba, W., Wogulis, J., and Langley, P. (1988). Продажа простоты и охвата в инкрементном обучении концепции. В трудах V Международной конференции по машинному обучению, 73-79. Энн Арбор, Мичиган: Морган Кауфманн.

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

[6] Duch, W., Adamczak, R., Grabczewski, K., Ishikawa, M., and Ueda, H. (1997). Извлечение четких логических правил с помощью ограниченных сетей обратного распространения - сравнение двух новых подходов. Прок. Европейского симпозиума по искусственным нейронным сетям (ESANN '97), Брюге, Бельгия 16-18.

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

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

Введенный в R2014b