主要内容

kmedoids

k-medoids聚类

描述

例子

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

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

idxC) = kmedoids (___返回k群集medoid位置k——- - - - - -p矩阵C

idxCsumd) = kmedoids (___中的点到medoid距离的簇内和k1的向量sumd

idxCsumdD) = kmedoids (___函数中每个点到每个medoid的距离n——- - - - - -k矩阵D

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

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

例子

全部折叠

随机生成数据。

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

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

使用将数据分组为两个集群kmedoids.使用cityblock距离度量。

选择= statset (“显示”“通路”);[sumd idx, C, d, midx信息]= kmedoids (X 2“距离”“城市街区”“选项”、选择);
代表1 1 209.856 1 2 209.856最好的距离总和= 209.856

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

信息
信息=结构体字段:算法:'pam' start: 'plus' distance: 'cityblock' iterations: 2 bestReplicate: 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”...“位置”“西北”);标题(“集群作业和Medoids”);持有

图中包含一个坐标轴。标题为Cluster Assignments和Medoids的轴包含3个类型为line的对象。这些对象代表Cluster 1, Cluster 2, Medoids。

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

由于蘑菇数据集的特征是分类的,无法定义多个数据点的均值,因此被广泛使用k-表示聚类算法不能有意义地应用于该数据集。k-medoids是一种相关的算法,它将数据划分为k通过寻找最小化数据点和最近的medoid之间的不同和的medoid的不同聚类。

一个集合的medoid是该集合中与其他集合成员的平均不相似度最小的成员。相似度可以定义为许多类型的数据,不允许一个平均值被计算,允许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使用默认的变量名。

清晰的所有数据= 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 '

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

标签=数据(:1);=分类标签(标签{:,:});数据(:1)= [];

存储预测器(特性)的名称,在http://archive.ics.uci.edu/ml/machine-learning-databases/mushroom/agaricus-lepiota.names中进行了描述。

VarNames = {“帽形”“cap_surface”“cap_color”“淤青”“气味”...“gill_attachment”“gill_spacing”“鳃大小”“gill_color”...“stalk_shape”“stalk_root”“stalk_surface_above_ring”...“stalk_surface_below_ring”“stalk_color_above_ring”...“环下方的柄颜色”“veil_type”“veil_color”“ring_number”...“ring_type”“孢子打印颜色”“人口”“栖息地”};

设置变量名。

data.Properties.VariableNames=VarNames;

总共有2480个缺失值表示为'?'

sum (char(数据{:,:})= ='?'
ans = 2480

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

数据(:11)= [];

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

猫=分类(数据{:,:});data =双(猫);

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

V1 = [1 0 2 1]

V2 = [1 1 2 1]

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

你可以使用这个函数pdist2测量第一行和第二行数据之间的汉明距离,即蘑菇数据的数字表示。2857意味着这种蘑菇的21种特征中有6种是不同的。

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

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

运行kmedoids要根据Hamming距离将数据集群为2个集群,并返回3个复制的最佳结果,运行以下命令。

rng (“默认”);%的再现性[IDX,C,SUMD,D,MIDX,INFO]=kmedoids(数据,2,“距离”“汉明”“复制”3);

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

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

predLabels =标签;%初始化预测标签的向量。predLabels (IDX = = 1) =分类({“p”});%指定组1为有毒的。predLabels(IDX==2)=分类({“e”});%指定第2组为可食用。predLabels confMatrix = confusionmat(标签)
confMatrix = 4176 32 816 3100

在4208个食用蘑菇中,4176个被正确预测为2组(食用组),32个被错误预测为1组(有毒组)。同样,在3916个有毒蘑菇中,有3100个被正确预测为1组(有毒组),816个被错误预测为2组(可食用组)。

给定这个混淆矩阵,计算准确性,即真实结果(真阳性和真阴性)与总体数据的比例,以及精度,即真实阳性与所有阳性结果(真阳性和假阳性)的比例。

精度= (confMatrix (1,1) + confMatrix(2, 2)) /(和(sum (confMatrix)))
精度= 0.8956
= confMatrix(1,1) / (confMatrix(1,1)+confMatrix(2,1))
精度= 0.8365

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

输入参数

全部折叠

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

数据中medoids的数量,指定为正整数。

名称-值对的观点

指定可选的逗号分隔的对名称,值参数。名称参数名和价值为对应值。名称必须出现在引号内。可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家

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

查找medoids的算法,指定为逗号分隔对,由“算法”“潘”“小”“克拉拉”“大”.默认算法依赖于的行数X

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

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

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

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

算法 描述
“潘”

PAM (Partitioning Around Medoids)算法是求解该问题的经典算法k-medoids问题描述[1].在应用初始化函数选择初始medoid位置之后,程序执行PAM算法的交换步骤,即搜索medoid和非medoid之间所有可能的交换,以查看medoid到集群成员距离的总和是否下降。属性指定要使用的初始化函数“开始”名称-值对的论点。

算法如下所示。

  1. 编译步骤:每k群集与潜在的美多酮有关。属性指定的技术执行此赋值“开始”名称-值对的论点。

  2. Swap-step:在每个集群中,每个点作为潜在的medoid进行测试,方法是检查使用该点作为medoid时簇内距离的总和是否变小。如果是,则将该点定义为一个新的medoid。然后将每个点分配给最接近medoid的群集。

算法迭代构建和交换步骤,直到medoids没有改变,或者满足其他终止条件。

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

“小”

使用类似于k-means算法的算法来查找k此选项采用劳埃德迭代法的一个变体,基于[2]

算法如下所示。

  1. 对于每个集群中的每个点,计算从这个点到集群中每个其他点的距离之和。选择使总和最小化的点作为新的medoid。

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

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

“克拉拉”

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

算法如下所示。

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

  2. 通过选择最近的medoid将整个数据集的点分配到聚类中。

算法重复这些步骤,直到medoids不改变,或满足其他终止条件。

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

“大”

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

例子:'算法','pam'

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

如果它是,然后kmedoids的Lloyd迭代之后,对medoids执行类似pam的更新算法。在在线更新阶段,算法在每个聚类中选择离medoid最远和最近的数据点的一个小子集。对于每个选择的点,它重新分配整个数据集的聚类,并检查这是否创建了比最已知的距离更小的距离之和。

换言之,交换考虑仅限于Medoid附近和远离Medoid的点。考虑近点是为了优化聚类。考虑远点是为了避开局部极小值。启用此功能有助于提高两种算法生成的解的质量。总运行时间也倾向于增加,但增加量通常小于PAM的一次迭代。金宝搏官方网站

例子:在线阶段,“关闭”

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

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

欧几里德距离

“seuclidean”

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

“城市街区”

城市街区的距离

闵可夫斯基的

Minkowski距离。指数为2。

“chebychev”

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

“mahalanobis”

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

的余弦

1减去点之间夹角的余弦值(作为向量)

“相关”

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

“斯皮尔曼”

1减去样本斯皮尔曼观察值之间的等级相关性(视为值序列)

“汉明”

汉明距离,即不同坐标的百分比

“jaccard”

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

distfun

自定义距离功能手柄。距离函数有这样的形式

函数ZJ D2 = distfun(子)距离计算%...
哪里

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

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

  • D2是一个平方米——- - - - - -1距离向量D2 (k)观察距离是多少ZJ(k,:)

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

对于每个距离度量的定义,请看距离度量

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

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

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

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

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

例子:“复制”,4

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

例子:“NumSamples”,160年

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

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

该参数的值介于0和1之间,其中接近1的值往往给出更高质量的解决方案,但算法运行所需的时间更长,接近0的值往往给出更低质量的解决方案,但结束速度更快。金宝搏官方网站

例子:“PercentNeighbors”,0.01

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

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

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

数据类型:字符|字符串|仅有一个的|

输出参数

全部折叠

Medoid索引,作为数字列向量返回。idx有多少行X,每一行表示相应观测值的medoid分配。

群集medoid位置,作为数字矩阵返回。C是一个k——- - - - - -p矩阵,行j群集的medoid是什么j

点到medoid距离的簇内和,作为数字列向量返回。sumd是一个k-by1向量,其中元素j簇内点到美多酮距离之和是多少j

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

索引到X,返回为包含索引的列向量。midx是一个k-by-1向量和指标满足C=X(中间点,:)

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

更多关于

全部折叠

k-medoids集群

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

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

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

这个函数kmedoids提供几种迭代算法,在所有集群上最小化每个对象到其集群medoid的距离总和。其中一种算法称为围绕medoids的分区(PAM)。[1]这个过程分为两个步骤。

  1. 编译步骤:每k群集与潜在的美多酮有关。属性指定的技术执行此赋值“开始”名称-值对的论点。

  2. Swap-step:在每个集群中,每个点作为潜在的medoid进行测试,方法是检查使用该点作为medoid时簇内距离的总和是否变小。如果是,则将该点定义为一个新的medoid。然后将每个点分配给最接近medoid的群集。

算法迭代构建和交换步骤,直到medoids没有改变,或者满足其他终止条件。

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

参考文献

[1] Kaufman,L.和Rousseeuw,P.J.(2009),《在数据中寻找群体:聚类分析导论》。新泽西州霍博肯:约翰·威利父子公司。

[2] Park H-S和Jun C-H。(2009).一种简单快速的K-medoids聚类算法。专家系统与应用。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.

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

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

[7] bach, K.和Lichman, M.(2013)。UCI机器学习知识库[http://archive.ics.uci.edu/ml]。加州欧文:加州大学信息与计算机科学学院。

扩展能力

介绍了R2014b