主要内容

kmedoids

k-medoids集群

描述

例子

idx= kmedoids (Xk执行k-medoids集群把…的观察结果分割n——- - - - - -p矩阵Xk集群,并返回一个n1的向量idx包含每个观测值的聚类指数。行X对应点,列对应变量。默认情况下,kmedoids使用平方欧几里得距离度量和k——+ +算法用于选择初始簇介质位置。

idx= kmedoids (Xk名称,值使用由一个或多个指定的附加选项名称,值对参数。

idxC] = kmedoids(___返回k中的集群介质位置k——- - - - - -p矩阵C

idxCsumd] = kmedoids(___类中点到中间距离的簇内和k1的向量sumd

idxCsumdD] = kmedoids(___对象中每个点到每个介质的距离n——- - - - - -k矩阵D

idxCsumdDmidx] = kmedoids(___返回索引midx这样CXmidx:)。midx是一个k1的向量。

idxCsumdDmidx信息] = kmedoids(___返回一个结构信息包含有关算法在执行时使用的选项的信息。

例子

全部折叠

随机生成数据。

rng (“默认”);%为了重现性X = [randn(100,2)*0.75+ones(100,2);randn(100 2) * 0.55的(100 2)];图;情节(X (: 1) X (:, 2),“。”);标题(“随机生成数据”);

图包含一个轴对象。标题为“随机生成数据”的坐标轴对象包含一个类型为line的对象。

将数据分组到两个簇中kmedoids.使用cityblock距离度量。

Opts = statset(“显示”“通路”);[idx,C,sum,d,midx,info] = kmedoids(X,2, 1)“距离”“cityblock”“选项”、选择);
最佳总距离= 209.856

信息是一个结构体,其中包含有关如何执行算法的信息。例如,bestReplicate字段表示用于生成最终解决方案的复制。在本例中,之所以使用复制数1,是因为默认算法的默认复制数为1,即帕姆在这种情况下。

信息
信息=带有字段的结构体:算法:'pam'开始:'plus'距离:'cityblock'迭代:2最佳复制:1

绘制集群和集群介质。

图;情节(X (idx = = 1,1) X (idx = = 1、2),“r”。“MarkerSize”, 7)情节(X (idx = = 2, 1), X (idx = = 2, 2),“b”。“MarkerSize”7)情节(C (: 1), C (:, 2),“有限公司”“MarkerSize”7“线宽”传说,1.5)(“集群1”《集群2》“Medoids”“位置”“西北”);标题(“集群分配和介质”);持有

图包含一个轴对象。标题为Cluster Assignments和medioids的坐标轴对象包含3个line类型的对象。这些对象代表集群1、集群2、介质。

本例使用“Mushroom”数据集[3][4][5][6][7]来自UCI机器学习档案[7],见http://archive.ics.uci.edu/ml/datasets/Mushroom。该数据集包括对各种蘑菇的8124个观察结果的22个预测因子。预测器是分类数据类型。例如,帽形以特征分类“b”用于钟形帽和“c”为锥形。蘑菇的颜色也有特征分类“n”对于棕色,和“p”为粉红色。该数据集还包括每种蘑菇的可食用或有毒分类。

由于蘑菇数据集的特征是分类的,因此不可能定义几个数据点的平均值,因此广泛使用k-means聚类算法不能有效地应用于该数据集。k- mediids是一个相关的算法,它将数据划分为k不同的聚类,通过找到最小化数据中点与其最近的中间点之间的不相似之和的中间点。

集合的中位数是该集合中与其他成员的平均不相似度最小的成员。相似性可以定义为许多类型的数据,不允许计算平均值,允许k-介质可以用于更广泛的问题k则。

使用k-medoids,本例基于所提供的预测因子将蘑菇分为两组。然后,它探讨了这些簇和蘑菇分类之间的关系,这些蘑菇要么是可食用的,要么是有毒的。

本例假设您已经下载了“Mushroom”数据集[3][4][5][6][7]从UCI数据库(http://archive.ics.uci.edu/ml/machine-learning-databases/mushroom/)中获取,并将其保存为名为agaricus-lepiota.txt的文本文件。数据中没有列标头,所以readtable使用默认的变量名。

清晰的所有Data = readtable(“agaricus-lepiota.txt”“ReadVariableNames”、假);

展示前5个蘑菇及其最初的几个特征。

数据(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 ' ' ' ' 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 '

提取第一列,标记可食用和有毒组的数据。然后删除该列。

标签= 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”“淤青”“气味”“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”“人口”“栖息地”};

设置变量名。

data.Properties.VariableNames = VarNames;

共有2480个缺失值,记为“?”

sum (char(数据{:,:})= =“?”
Ans = 2480

根据对数据集及其描述的检查,缺失值只属于第11个变量(stalk_root)。从表中删除列。

Data (:,11) = [];

kmedoids只接受数字数据。您需要将您拥有的类别转换为数字类型。用于定义数据的不相似性的距离函数将基于分类数据的双重表示。

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

kmedoids可以使用pdist2支持的任何距离度量来集群。金宝app对于本例,您将使用汉明距离对数据进行聚类,因为这是分类数据的合适距离度量,如下所示。两个矢量之间的汉明距离是矢量分量不同的百分比。例如,考虑这两个向量。

V1 = [1 0 2 1]

V2 = [1 1 2 1]

它们在第一,三,四坐标上是相等的。由于4个坐标中有1个不同,这两个向量之间的汉明距离为。25。

你可以使用这个函数pdist2测量第一和第二行数据之间的汉明距离,即蘑菇分类数据的数值表示。值0.2857表示蘑菇的21个特征中有6个不同。

: pdist2(数据(1),数据(2:)“汉明”
Ans = 0.2857

在本例中,您将根据特征将蘑菇数据聚类到两个簇中,以查看聚类是否与可食性相对应。的kmedoids保证函数收敛于聚类准则的局部极小值;然而,这可能不是问题的全局最小值。将问题聚类几次是个好主意“复制”参数。当“复制”被设置为一个值,n,大于1,则运行k-medoids算法n次,并返回最佳结果。

运行kmedoids要根据汉明距离将数据分成2个簇,并返回3个重复的最佳结果,您可以运行以下命令。

rng (“默认”);%为了重现性[IDX, C, SUMD, D, MIDX, INFO] = kmedoids(data,2)“距离”“汉明”“复制”3);

让我们假设预测的第一组蘑菇是有毒的,第二组都是可食用的。为了确定聚类结果的性能,根据已知的标签,计算第一组中有多少蘑菇是有毒的,第二组中有多少蘑菇是可食用的。换句话说,计算假阳性、假阴性以及真阳性和真阴性的数量。

构造一个混淆矩阵(或匹配矩阵),其中对角线元素分别表示真阳性和真阴性的数量。非对角线元素分别表示假阴性和假阳性。为方便起见,请使用confusionmat函数,它计算给定已知标签和预测标签的混淆矩阵。中获取预测的标签信息IDX变量。IDX每个数据点包含值1和2,分别代表有毒和可食用组。

predLabels =标签;为预测的标签初始化一个向量。predLabels(IDX==1) = categorical({“p”});%将组1指定为有毒。predLabels(IDX==2) = categorical({“e”});%指定第二组是可食用的。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)))
精度= 0.8956
precision = confMatrix(1,1) / (confMatrix(1,1)+confMatrix(2,1))
精度= 0.8365

结果表明,将k-medoids算法应用于蘑菇的分类特征会产生与可食性相关的聚类。

输入参数

全部折叠

数据,指定为数字矩阵。一排排的X对应观察值,列对应变量。

数据中的介质数,指定为正整数。

名称-值参数

指定可选的参数对为Name1 = Value1,…,以=家,在那里名字是参数名和吗价值是对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。

在R2021a之前,使用逗号分隔每个名称和值,并将其括起来名字在报价。

例子:“距离”,“欧几里得”、“复制”、3、“选项”,statset (UseParallel, 1)指定欧几里得距离,三个复制介质在不同的起始值,并使用并行计算。

查找介质的算法,指定为由逗号分隔的对“算法”“帕姆”“小”“克拉拉”,或“大”.默认算法取决于的行数X

  • 如果的行数X小于3000,“帕姆”是默认算法。

  • 如果行数在3000到10000之间,“小”是默认算法。

  • 对于所有其他情况,“大”是默认算法。

您可以通过显式声明算法来覆盖默认选择。该表总结了可用的算法。

算法 描述
“帕姆”

围绕介质分区(PAM)是解决问题的经典算法k中描述的介质问题[1].在应用初始化函数选择初始媒介id位置之后,程序执行PAM算法的交换步骤,即搜索媒介id和非媒介id之间所有可能的交换,以查看媒介id到集群成员距离的总和是否下降。方法指定要使用哪个初始化函数“开始”名称-值对参数。

算法的过程如下。

  1. 构建步骤:每个步骤k集群与一个潜在的媒介相关联。方法指定的技术执行此赋值“开始”名称-值对参数。

  2. 交换步骤:在每个簇中,每个点作为一个潜在的中间点进行测试,通过检查使用该点作为中间点的簇内距离的总和是否变小。如果是,则将该点定义为新介质。然后将每个点分配给具有最近介质的集群。

该算法迭代构建和交换步骤,直到介质不更改或满足其他终止条件。

在某些情况下,该算法可以产生比其他算法更好的解决方案,但它可能运行金宝搏官方网站时间过长。

“小”

使用类似于k-means算法的算法来查找kmedoids。这个选项采用了基于的Lloyd’s迭代的一个变体[2]

算法的过程如下。

  1. 对于每个聚类中的每个点,计算该点到聚类中所有其他点的距离之和。选择使总和最小的点作为新介质。

  2. 更新每个数据点的集群成员关系以反映新媒介。

该算法重复这些步骤,直到不再发生更新或满足其他终止条件。该算法具有可选的类似pam的在线更新阶段(由“OnlinePhase”名称-值对参数),提高集群质量。它倾向于返回更高质量的解决方案金宝搏官方网站克拉拉算法,但它可能不是非常大的数据的最佳选择。

“克拉拉”

大型应用程序集群(CLARA)[1]在数据的随机子集上重复执行PAM算法。它旨在通过采样来克服PAM算法带来的缩放挑战。

算法的过程如下。

  1. 选择数据的一个子集,并将PAM算法应用于该子集。

  2. 通过选择最接近的中间值,将整个数据集的点分配给集群。

算法重复这些步骤,直到介质没有改变,或者满足其他终止条件。

为了获得最佳性能,建议执行多个复制。默认情况下,程序执行五次复制。每个复制样本年代从X(由“NumSamples”名称-值对参数)来执行集群。默认情况下,40 + 2 * k选择样本。

“大”

这和Scale算法,并使用k-means类更新重复执行搜索。然而,该算法在每次迭代期间只检查集群成员的随机样本。用户可调参数,“PercentNeighbors”,控制要检查的邻居的数量。如果检查邻居后没有改善,则算法终止局部搜索。算法一共执行了r复制(由“复制”名称-值对参数)并返回最佳聚类结果。该算法有一个可选的类似pam的在线阶段(由“OnlinePhase”名称-值对参数),提高集群质量。

例子:“算法”、“帕姆的

执行类似pam的在线更新阶段的标志,指定为由逗号分隔的对“OnlinePhase”“上”“关闭”

如果是的话,然后kmedoids中的Lloyd迭代之后对介质执行类似pam的更新算法。在这个在线更新阶段,算法在每个集群中选择离mediid最远和最近的一小部分数据点。对于每个选定的点,它重新分配整个数据集的聚类,并检查这是否产生比最已知的距离更小的距离总和。

换句话说,交换考虑仅限于靠近介质介质和远离介质介质的点。为了改进聚类,考虑了近点。考虑远点是为了避免局部极小值。打开这个特性往往会提高两种算法生成的解决方案的质量。金宝搏官方网站总运行时间也趋于增加,但是增加的时间通常小于PAM的一次迭代。

例子:OnlinePhase,“了”

距离度量,指定为下表中描述的距离度量的名称,或函数句柄。kmedoids最小化介质到集群成员距离的总和。

价值 描述
“sqEuclidean” 平方欧几里得距离(默认)
“欧几里得”

欧氏距离

“seuclidean”

标准化欧氏距离。每个观测值之间的坐标差通过除以标准偏差的相应元素来缩放,S = std(X,'omitnan')

“cityblock”

城市街区距离

闵可夫斯基的

闵可夫斯基距离。指数是2。

“chebychev”

切比契夫距离(最大坐标差)

“mahalanobis”

马氏距离用样本协方差XC = cov(X,'omitrows')

的余弦

1减去两点夹角的余弦(作为向量处理)

“相关”

1减去点之间的样本相关性(作为值序列处理)

“枪兵”

1减去观测值之间的样本斯皮尔曼秩相关(作为值序列处理)

“汉明”

汉明距离,也就是不同坐标的百分比

“jaccard”

1减去雅卡德系数,也就是不同的非零坐标的百分比

distfun

自定义距离函数句柄。距离函数有这样的形式

函数D2 = distfun(ZI,ZJ)距离计算%
在哪里

  • 是一个1——- - - - - -n包含单个观测值的向量。

  • ZJ是一个平方米——- - - - - -n包含多个观测值的矩阵。distfun必须接受矩阵ZJ用任意数量的观察值。

  • D2是一个平方米——- - - - - -1距离矢量,和D2 (k)观测之间的距离是多少ZJ (k,:)

如果您的数据不是稀疏的,通常可以通过使用内置距离而不是函数句柄更快地计算距离。

有关每个距离度量的定义,请参见距离度量

例子:“距离”,“汉明”

控制迭代算法以最小化拟合标准的选项,指定为由逗号分隔的对组成“选项”返回一个结构数组statset.金宝app结构数组的支持字段指定控制迭代算法的选项。该表总结了支持的字段。金宝app

描述
显示 显示输出水平。的选择是“关闭”(默认),“通路”
麦克斯特 允许的最大迭代次数。默认值为One hundred.
UseParallel 如果真正的,并行计算。如果Parallel Computing Toolbox™不可用,则在串行模式下进行计算。默认值为,表示串行计算。
UseSubstreams 设置为真正的以可重复的方式并行计算。默认值为.为了计算重现性,还必须设置到允许子流的类型:“mlfg6331_64”“mrg32k3a”
一个RandStream对象或此类对象的单元数组。有关统计和机器学习工具箱™中的这些选项和并行计算的详细信息,请参阅加快统计计算或输入帮助parallelstats在命令行。

例子:“选项”,statset(“显示”,“关闭”)

使用新的初始集群介质位置重复集群的次数,指定为正整数。默认值取决于选择的算法。为帕姆,默认为1。为克拉拉,默认值为5。为,默认值为3。

例子:“复制”,4

从数据中获取的样本数克拉拉算法,指定为正整数。默认的样本数计算为40 + 2 * k

例子:“NumSamples”,160年

要检查的数据集的百分比算法,指定为正数。

该程序检查percentneighbors *大小(X, 1)介质的邻居数。如果聚类内距离和没有改进,则算法终止。

该参数的值在0和1之间,其中接近1的值倾向于给出更高质量的解,但算法需要更长的运行时间,接近0的值倾向于给出较低质量的解,但完成得更快。金宝搏官方网站

例子:“PercentNeighbors”,0.01

选择初始簇介质位置的方法,指定为由逗号分隔的对“开始”“+”“样本”“集群”,或者一个矩阵。该表总结了可用的方法。

方法 描述
“+”(默认) 选择k观察从X根据k——+ +算法用于集群中心初始化。
“样本” 选择k观察从X在随机的。
“集群” 对的随机子样本(10%)进行初步聚类阶段X.初始化阶段本身使用样本,即观察值是随机选择的。
矩阵 一个自定义k——- - - - - -p起始位置矩阵。在这种情况下,你可以进去[]k输入参数,和kmedoids推断k从矩阵的第一维开始。您还可以提供一个3-D数组,暗示为的值“复制”从数组的第三维。

例子:“开始”、“样本”

数据类型:字符|字符串||

输出参数

全部折叠

中间索引,作为数字列向量返回。idx有多少行X,每一行表示对应观测值的中间值赋值。

群集介质位置,作为数字矩阵返回。C是一个k——- - - - - -p矩阵,其中行j是集群的媒介吗j

点到中间距离的簇内和,作为数值列向量返回。sumd是一个k-by1向量,其中元素j是簇内点到中间距离的和吗j

从每个点到每个介质的距离,作为数值矩阵返回。D是一个n——- - - - - -k矩阵,其中元素(j)是观察到的距离j对medoid

索引X,作为索引的列向量返回。midx是一个k- × 1向量,指标满足C = X(midx,:)

算法信息,作为结构返回。信息包含函数在执行时使用的选项,例如k-介质聚类算法(算法),用于选择初始聚类介质位置的方法(开始),距离度量(距离),在最佳复制中进行的迭代次数(迭代)和返回结果的复制数(bestReplicate)。

更多关于

全部折叠

k-medoids集群

k- medidoids聚类是一种划分方法,通常用于需要对离群数据、任意距离度量或平均值或中位数没有明确定义的鲁棒性的领域。

它类似于k-均值,两种方法的目标都是将一组测量值或观察值划分为k子集或聚类,以便子集最小化测量值与测量值的聚类中心之间的距离之和。在k-means算法中,子集的中心是子集中测量值的平均值,通常称为质心。在k-medoids算法中,子集的中心是子集的一个成员,称为medoid。

k-medoids算法返回的是数据集中的实际数据点。这允许您在数据集中不存在数据均值的情况下使用该算法。这是两者的主要区别k-medoids和k-表示质心返回的位置k-means可能不在数据集中。因此k- mediids对于无法定义或解释平均值的分类数据的聚类很有用。

这个函数kmedoids提供几个迭代算法,使所有簇上从每个对象到其簇介质的距离总和最小化。其中一种算法被称为围绕媒质划分(PAM)[1]它分两步进行。

  1. 构建步骤:每个步骤k集群与一个潜在的媒介相关联。方法指定的技术执行此赋值“开始”名称-值对参数。

  2. 交换步骤:在每个簇中,每个点作为一个潜在的中间点进行测试,通过检查使用该点作为中间点的簇内距离的总和是否变小。如果是,则将该点定义为新介质。然后将每个点分配给具有最近介质的集群。

该算法迭代构建和交换步骤,直到介质不更改或满足其他终止条件。

您可以使用几个可选的输入参数来控制最小化的细节kmedoids,包括用于集群介质的初始值和用于最大迭代次数的参数。默认情况下,kmedoids使用k——+ +算法用于簇介质初始化和平方欧几里德度量来确定距离。

参考文献

bbb10考夫曼,L.和卢梭,P. J.(2009)。在数据中发现组:聚类分析导论。新泽西州霍博肯:约翰威利父子公司。

[2] Park, H-S, and Jun, C-H。(2009)。一种简单快速的k -媒质聚类算法。专家系统与应用。36,3336-3341。

[3] Schlimmer, j.s(1987)。通过代表性调整获得概念(技术报告87-19)。博士论文,加州大学欧文分校信息与计算机科学系。

[4] Iba, W。,Wogulis,J., and Langley,P. (1988). Trading off Simplicity and Coverage in Incremental Concept Learning. In Proceedings of the 5th International Conference on Machine Learning, 73-79. Ann Arbor, Michigan: Morgan Kaufmann.

[10] Duch W, a.r.和Grabczewski, K.(1996)使用反向传播网络从训练数据中提取逻辑规则。第一届软计算在线研讨会论文集,19-30,pp. 25-30。

[b] Duch, W., Adamczak, R., Grabczewski, K., Ishikawa, M., and Ueda, H.(1997)。利用约束反向传播网络提取清晰的逻辑规则——两种新方法的比较。欧洲人工神经网络研讨会论文集(ESANN' 1997),比利时布鲁日16-18。

[10] Bache, K.和Lichman, M.(2013)。UCI机器学习存储库[http://archive.ics.uci.edu/ml]。加州尔湾:加州大学信息与计算机科学学院。

扩展功能

版本历史

在R2014b中引入