主要内容

kmedoids

k-medoids集群

描述

例子

idx= kmedoids (X,k)执行k-medoids集群分区的观察n——- - - - - -p矩阵Xk集群,并返回一个n1的向量idx包含集群每个观察的指标。行X对应点和列对应变量。默认情况下,kmedoids利用平方欧氏距离度量的k——+ +算法选择初始集群medoid位置。

idx= kmedoids (X,k,名称,值)使用指定的一个或多个额外的选项名称,值对参数。

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

(idx,C,sumd)= kmedoids (___)返回within-cluster point-to-medoid距离的k1的向量sumd

(idx,C,sumd,D)= kmedoids (___)返回距离每个点每个medoidn——- - - - - -k矩阵D

(idx,C,sumd,D,midx)= kmedoids (___)返回索引midx这样C=X(midx:)。midx是一个k1的向量。

(idx,C,sumd,D,midx,信息)= kmedoids (___)返回一个结构信息的信息选项执行时使用的算法。

例子

全部折叠

随机生成数据。

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

图包含一个坐标轴对象。轴与标题随机生成数据对象包含一行对象显示其值只使用标记。

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

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

信息是一个结构体,其中包含的信息的算法是如何执行的。例如,bestReplicate字段显示复制用于生成最终的解决方案。在这个例子中,使用了复制1号以来的默认的复制数量是1默认的算法,这是帕姆在这种情况下。

信息
信息=结构体字段:算法:pam的开始:‘+’距离:“cityblock”迭代:2 bestReplicate: 1

集群和集群medoids的阴谋。

图;情节(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”);持有

图包含一个坐标轴对象。坐标轴对象标题集群作业和Medoids包含3线类型的对象。一个或多个行显示的值只使用这些对象标记代表集群1,2 Medoids集群。

这个示例使用“蘑菇”数据集[3][4][5][6][7]在UCI机器学习档案[7]描述在http://archive.ics.uci.edu/ml/datasets/Mushroom。数据集包括22个预测8124年观察各种蘑菇。预测分类数据类型。例如,帽子的形状与特征分类“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使用默认的变量名。

清晰的所有数据= 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_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)。从表中删除列。

数据(:11)= [];

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

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

kmedoids可以使用任何距离度量pdist2支持集群。金宝app对于这个示例集群数据使用的汉明距离,因为这是一个适当的距离度量分类数据如下图所示。两个向量之间的汉明距离是矢量的比例不同的组件。例如,考虑这两个向量。

v1 = [1 0 2 1];

v2 = [1 1 2 1];

他们是平等的在第一,3日和4日坐标。因为1的4坐标不同,这两个向量之间的汉明距离是二十五分。

您可以使用函数pdist2测量第一行和第二行之间的汉明距离的数据,分类蘑菇的数值表示的数据。.2857价值意味着6的21个蘑菇的特点不同。

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

在这个例子中,您集群蘑菇数据为两个集群基于特征聚类是否对应于可食性。的kmedoids功能是保证收敛到局部最小值的聚类标准;然而,这可能不是一个全球最小的问题。这是一个好主意集群问题几次使用“复制”参数。当“复制”将一个值,n大于1,k-medoids算法运行n次,最好的结果是返回。

运行kmedoids集群数据2集群,基于汉明距离和返回3复制的最好的结果,你运行以下。

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

假设预测组1的蘑菇有毒、组2都是可以食用的。确定集群的性能结果,计算有多少蘑菇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,…,以=家,在那里的名字参数名称和吗价值相应的价值。名称-值参数必须出现在其他参数,但对的顺序无关紧要。

R2021a之前,用逗号来分隔每一个名称和值,并附上的名字在报价。

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

算法找到medoids,指定为逗号分隔组成的“算法”“帕姆”,“小”,“克拉拉”,或“大”。默认的算法依赖于的行数X

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

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

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

可以通过显式地声明覆盖默认的选择算法。这个表总结了可用的算法。

算法 描述
“帕姆”

分区在Medoids (PAM)是经典的算法求解k-medoids问题描述[1]。应用初始化函数选择初始medoid后位置,程序执行的swap-step PAM算法,也就是说,它在所有可能的搜索之间的互换medoids和non-medoids medoid之和是否集群成员距离下降。您可以指定使用哪一个初始化函数通过“开始”名称-值对的论点。

该算法所得如下。

  1. 编译步骤:每k集群与潜在medoid相关联。这个任务执行指定的使用技术“开始”名称-值对的论点。

  2. Swap-step:在每个集群中,每个点是测试作为一个潜在的medoid通过检查如果within-cluster距离变小的总和使用medoid这一点。如果是这样,关键是定义为一个新的medoid。每一个点然后分配与最近的medoid集群。

算法迭代构建swap-steps直到medoids不改变,或其他终止标准得到满足。

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

“小”

使用一个算法类似于k - means算法来找到kmedoids。这个选项使用的一种变体劳合社迭代的基础上[2]

该算法所得如下。

  1. 对于每个点每个集群,计算距离的总和到集群中的每一个点。选择最小的点作为新的medoid求和。

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

算法重复这些步骤,直到没有进一步更新发生或其他终止标准得到满足。该算法有一个可选的PAM-like在线更新阶段(指定的“OnlinePhase”名称-值对的观点),提高了聚类质量。它会返回比高质量解决方案金宝搏官方网站克拉拉算法,但它可能不是非常大的数据的最佳选择。

“克拉拉”

聚类大型应用程序(CLARA)[1]反复执行PAM算法的随机数据的子集。它旨在克服通过抽样比例PAM算法带来的挑战。

该算法所得如下。

  1. 选择数据的一个子集和PAM算法应用于子集。

  2. 点的完整的数据集分配给集群通过选择最接近medoid。

算法重复这些步骤,直到medoids不变化,或其他终止标准得到满足。

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

“大”

这是相似的规模算法和反复使用这样的k - means更新执行搜索。然而,集群成员的算法只检查一个随机样本在每个迭代。user-adjustable参数,“PercentNeighbors”、控制数量的邻居来检查。如果没有改善邻居检查后,本地搜索算法终止。算法执行的r复制(指定的“复制”名称-值对的观点),并返回最好的聚类结果。该算法有一个可选的PAM-like在线阶段(指定的“OnlinePhase”名称-值对的观点),提高了聚类质量。

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

国旗执行PAM-like在线更新阶段,指定为逗号分隔两人组成的“OnlinePhase”“上”“关闭”

如果它是,然后kmedoids执行一个PAM-like更新后的medoids劳埃德迭代中算法。在这个在线更新阶段,算法选择一小部分数据点在每个集群medoid最远和最近的。对于每个选定的点,它把整个数据集的聚类转移和检查是否这将创建一个小比最著名的距离之和。

换句话说,交换因素仅限于medoids附近的点和远离medoids。附近的点被认为是为了完善集群。远点被认为是为了避免局部最小值。打开这个功能会提高解决方案的质量所产生的两种算法。金宝搏官方网站总运行时间会增加,但增加PAM的通常小于一个迭代。

例子:OnlinePhase,“了”

距离度量、距离度量的名称指定为下表中描述,或一个函数处理。kmedoids最小化medoid集群成员距离的总和。

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

欧氏距离

“seuclidean”

标准化的欧氏距离。每个坐标差异观察是通过除以相应的扩展元素的标准差,S =性病(X, omitnan)

“cityblock”

城市街区的距离

闵可夫斯基的

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

“chebychev”

Chebychev距离(最大坐标差异)

“mahalanobis”

而使用的样本协方差距离X,C = X (X, omitrows)

的余弦

1 -之间的夹角的余弦值点(视为向量)

“相关”

1 -样本点之间的相关性(视为序列值)

“枪兵”

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

“汉明”

汉明距离,协调不同的百分比

“jaccard”

1 - Jaccard系数,非零坐标不同的百分比

@distfun

自定义距离函数处理。距离函数的形式

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

  • 是一个1——- - - - - -n向量包含一个观察。

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

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

如果你的数据不是稀疏的,你可以通过使用一个内置的通常更快的计算距离的距离而不是一个函数处理。

每个距离度量的定义,请参阅距离度量

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

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

描述
显示 显示输出。的选择是“关闭”(默认),“通路”
麦克斯特 允许的最大迭代数。默认值是One hundred.
UseParallel 如果真正的并行计算。如果并行计算工具箱™不可用,然后计算发生在串行模式。默认值是,这意味着串行计算。
UseSubstreams 设置为真正的以可再生的方式并行计算。默认值是。计算可再生产地,你还必须设置一种允许substreams:“mlfg6331_64”“mrg32k3a”
一个RandStream这样的对象的对象或单元阵列。这些选项的详细信息和并行计算统计和机器学习工具箱™,明白了加快统计计算或输入帮助parallelstats在命令行中。

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

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

例子:“复制”,4

数量的样品需要从数据时执行克拉拉算法,指定为一个正整数。默认的样本数量计算40 + 2 * k

例子:“NumSamples”, 160年

数据集的百分比来检查使用算法,指定为一个正数。

程序检查percentneighbors *大小(X, 1)medoids数量的邻居。如果没有改善within-cluster距离之和,则算法终止。

该参数的值在0和1之间,一个值接近1会给高质量的解决方案,但该算法花费的时间,和一个值接近0往往给低质量的解决方案,但完成得更快。金宝搏官方网站

例子:“PercentNeighbors”, 0.01

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

方法 描述
“+”(默认) 选择k观察从X根据k——+ +算法对聚类中心的初始化。
“样本” 选择k观察从X在随机的。
“集群” 执行初步聚类阶段随机抽样(10%)X。这初步阶段本身就是初始化使用样本,即观测是随机选择的。
矩阵 一个自定义k——- - - - - -p矩阵的开始位置。在这种情况下,您可以通过[]k输入参数,kmedoids推断k第一个维度的矩阵。你也可以提供一个三维数组,这意味着一个值“复制”从数组中第三维度。

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

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

输出参数

全部折叠

Medoid指标,作为一个数字列向量返回。idx尽可能多的行吗X,每一行表示medoid分配相应的观察。

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

Within-cluster point-to-medoid的距离,作为一个数字列向量返回。sumd是一个kby1向量元素的地方j在集群是point-to-medoid距离的总和j

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

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

算法的信息,作为struct返回。信息包含函数执行时所使用的选项等k-medoid聚类算法(算法),方法选择初始集群medoid职位(开始距离度量),(距离),迭代次数在最好的复制(迭代)和返回结果的复制数量(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相关联。这个任务执行指定的使用技术“开始”名称-值对的论点。

  2. Swap-step:在每个集群中,每个点是测试作为一个潜在的medoid通过检查如果within-cluster距离变小的总和使用medoid这一点。如果是这样,关键是定义为一个新的medoid。每一个点然后分配与最近的medoid集群。

算法迭代构建swap-steps直到medoids不改变,或其他终止标准得到满足。

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

引用

[1]考夫曼L。,和Rousseeuw, P. J. (2009). Finding Groups in Data: An Introduction to Cluster Analysis. Hoboken, New Jersey: John Wiley & Sons, Inc.

H-S[2]公园和小君,碳氢键。(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.

[5]杜赫W,境,和Grabczewski, K. (1996) Extraction of logical rules from training data using backpropagation networks. Proc. of the 1st Online Workshop on Soft Computing, 19-30, pp. 25-30.

[6]杜赫,W。,一个damczak, R., Grabczewski, K., Ishikawa, M., and Ueda, H. (1997). Extraction of crisp logical rules using constrained backpropagation networks - comparison of two new approaches. Proc. of the European Symposium on Artificial Neural Networks (ESANN'97), Bruge, Belgium 16-18.

[7]Bache k和Lichman m (2013)。UCI机器学习库[http://archive.ics.uci.edu/ml]。欧文CA:加州大学学校的信息和计算机科学。

扩展功能

版本历史

介绍了R2014b