kmedoids
k-medoids集群
语法
描述
执行k-medoids集群分区的观察n——- - - - - -p矩阵idx
= kmedoids (X
,k
)X
成k
集群,并返回一个n1的向量idx
包含集群每个观察的指标。行X
对应点和列对应变量。默认情况下,kmedoids
利用平方欧氏距离度量的k——+ +算法选择初始集群medoid位置。
例子
组数据分成两个集群
随机生成数据。
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”);持有从
集群使用k-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
- - - - - -数据
数字矩阵
数据,指定为一个数字矩阵。的行X
对应于观测,列对应的变量。
k
- - - - - -medoids数量
正整数
medoids数量数据,指定为一个正整数。
名称-值参数
指定可选的双参数作为Name1 = Value1,…,以=家
,在那里的名字
参数名称和吗价值
相应的价值。名称-值参数必须出现在其他参数,但对的顺序无关紧要。
R2021a之前,用逗号来分隔每一个名称和值,并附上的名字
在报价。
例子:“距离”,“欧几里得”、“复制”、3、“选项”,statset (UseParallel, 1)
指定了欧几里得距离,三个复制medoids在不同的起始值,使用并行计算。
算法
- - - - - -算法找到medoids
“帕姆”
|“小”
|“克拉拉”
|“大”
算法找到medoids,指定为逗号分隔组成的“算法”
和“帕姆”
,“小”
,“克拉拉”
,或“大”
。默认的算法依赖于的行数X
。
如果行数
X
小于3000,“帕姆”
是默认的算法。如果行数在3000年至10000年之间,
“小”
是默认的算法。对于所有其他情况下,
“大”
是默认的算法。
可以通过显式地声明覆盖默认的选择算法。这个表总结了可用的算法。
算法 | 描述 |
---|---|
“帕姆” |
分区在Medoids (PAM)是经典的算法求解k-medoids问题描述[1]。应用初始化函数选择初始medoid后位置,程序执行的swap-step PAM算法,也就是说,它在所有可能的搜索之间的互换medoids和non-medoids medoid之和是否集群成员距离下降。您可以指定使用哪一个初始化函数通过 该算法所得如下。
算法迭代构建swap-steps直到medoids不改变,或其他终止标准得到满足。 该算法比其他算法可以产生更好的解决方案在某些情况下,但它可以非常长金宝搏官方网站时间运行。 |
“小” |
使用一个算法类似于k - means算法来找到 该算法所得如下。
算法重复这些步骤,直到没有进一步更新发生或其他终止标准得到满足。该算法有一个可选的PAM-like在线更新阶段(指定的 |
“克拉拉” |
聚类大型应用程序(CLARA)[1]反复执行PAM算法的随机数据的子集。它旨在克服通过抽样比例PAM算法带来的挑战。 该算法所得如下。
算法重复这些步骤,直到medoids不变化,或其他终止标准得到满足。 为了获得最佳的性能,建议您执行多个复制。默认情况下,程序执行五个复制。每个复制样品 |
“大” |
这是相似的 |
例子:“算法”、“帕姆的
OnlinePhase
- - - - - -国旗执行PAM-like在线更新阶段
“上”
(默认)|“关闭”
国旗执行PAM-like在线更新阶段,指定为逗号分隔两人组成的“OnlinePhase”
和“上”
或“关闭”
。
如果它是在
,然后kmedoids
执行一个PAM-like更新后的medoids劳埃德迭代中小
和大
算法。在这个在线更新阶段,算法选择一小部分数据点在每个集群medoid最远和最近的。对于每个选定的点,它把整个数据集的聚类转移和检查是否这将创建一个小比最著名的距离之和。
换句话说,交换因素仅限于medoids附近的点和远离medoids。附近的点被认为是为了完善集群。远点被认为是为了避免局部最小值。打开这个功能会提高解决方案的质量所产生的两种算法。金宝搏官方网站总运行时间会增加,但增加PAM的通常小于一个迭代。
例子:OnlinePhase,“了”
距离
- - - - - -距离度量
“sqEuclidean”
(默认)|“欧几里得”
|特征向量|字符串标量|函数处理|……
距离度量、距离度量的名称指定为下表中描述,或一个函数处理。kmedoids
最小化medoid集群成员距离的总和。
价值 | 描述 |
---|---|
“sqEuclidean” |
平方欧氏距离(默认) |
“欧几里得” |
欧氏距离 |
“seuclidean” |
标准化的欧氏距离。每个坐标差异观察是通过除以相应的扩展元素的标准差, |
“cityblock” |
城市街区的距离 |
闵可夫斯基的 |
闵可夫斯基距离。指数是2。 |
“chebychev” |
Chebychev距离(最大坐标差异) |
“mahalanobis” |
而使用的样本协方差距离 |
的余弦 |
1 -之间的夹角的余弦值点(视为向量) |
“相关” |
1 -样本点之间的相关性(视为序列值) |
“枪兵” |
1 -样本之间的斯皮尔曼等级相关的观察(视为序列值) |
“汉明” |
汉明距离,协调不同的百分比 |
“jaccard” |
1 - Jaccard系数,非零坐标不同的百分比 |
@ |
自定义距离函数处理。距离函数的形式 函数ZJ D2 = distfun(子)%计算距离…
如果你的数据不是稀疏的,你可以通过使用一个内置的通常更快的计算距离的距离而不是一个函数处理。 |
每个距离度量的定义,请参阅距离度量。
例子:“距离”,“汉明”
选项
- - - - - -选项来控制迭代算法最小化拟合标准
[]
(默认)|结构数组返回statset
选项来控制迭代算法来最小化拟合标准,指定为逗号分隔组成的“选项”
和一个结构数组返回statset
。金宝app支持结构数组中指定的字段选项控制迭代算法。这个表总结了支持字段。金宝app
场 | 描述 |
---|---|
显示 |
显示输出。的选择是“关闭” (默认),“通路” 。 |
麦克斯特 |
允许的最大迭代数。默认值是One hundred. 。 |
UseParallel |
如果真正的 并行计算。如果并行计算工具箱™不可用,然后计算发生在串行模式。默认值是假 ,这意味着串行计算。 |
UseSubstreams |
设置为真正的 以可再生的方式并行计算。默认值是假 。计算可再生产地,你还必须设置流 一种允许substreams:“mlfg6331_64” 或“mrg32k3a” 。 |
流 |
一个RandStream 这样的对象的对象或单元阵列。这些选项的详细信息和并行计算统计和机器学习工具箱™,明白了加快统计计算或输入帮助parallelstats 在命令行中。 |
例子:“选项”,statset(“显示”,“关闭”)
复制
- - - - - -多次重复使用新的初始聚类集群medoid位置
正整数
多次重复使用新的初始聚类集群medoid位置,指定为一个正整数。默认值取决于算法的选择。为帕姆
和小
,缺省值是1。为克拉拉
,默认值是5。为大
,默认是3。
例子:“复制”,4
NumSamples
- - - - - -样品从数据时执行克拉拉
算法
40 + 2 * k
(默认)|正整数
数量的样品需要从数据时执行克拉拉
算法,指定为一个正整数。默认的样本数量计算40 + 2 * k
。
例子:“NumSamples”, 160年
PercentNeighbors
- - - - - -使用大型数据集对算法的百分比
0.001(默认)|标量值在0和1之间
数据集的百分比来检查使用大
算法,指定为一个正数。
程序检查percentneighbors *大小(X, 1)
medoids数量的邻居。如果没有改善within-cluster距离之和,则算法终止。
该参数的值在0和1之间,一个值接近1会给高质量的解决方案,但该算法花费的时间,和一个值接近0往往给低质量的解决方案,但完成得更快。金宝搏官方网站
例子:“PercentNeighbors”, 0.01
开始
- - - - - -方法选择初始集群medoid位置
“+”
(默认)|“样本”
|“集群”
|矩阵
方法选择初始集群medoid位置,指定为逗号分隔组成的“开始”
和“+”
,“样本”
,“集群”
,或者一个矩阵。这个表总结了可用的方法。
方法 | 描述 |
---|---|
“+” (默认) |
选择k 观察从X 根据k——+ +算法对聚类中心的初始化。 |
“样本” |
选择k 观察从X 在随机的。 |
“集群” |
执行初步聚类阶段随机抽样(10%)X 。这初步阶段本身就是初始化使用样本 ,即观测是随机选择的。 |
矩阵 | 一个自定义k ——- - - - - -p矩阵的开始位置。在这种情况下,您可以通过[] 为k 输入参数,kmedoids 推断k 第一个维度的矩阵。你也可以提供一个三维数组,这意味着一个值“复制” 从数组中第三维度。 |
例子:“开始”、“样本”
数据类型:字符
|字符串
|单
|双
输出参数
idx
——Medoid指数
数字列向量
Medoid指标,作为一个数字列向量返回。idx
尽可能多的行吗X
,每一行表示medoid分配相应的观察。
C
——集群medoid位置
数字矩阵
集群medoid位置,作为一个数字矩阵返回。C
是一个k——- - - - - -p矩阵,行j的medoid集群j
sumd
——Within-cluster point-to-medoid的距离
数字列向量
Within-cluster point-to-medoid的距离,作为一个数字列向量返回。sumd
是一个k
by1向量元素的地方j在集群是point-to-medoid距离的总和j。
D
每medoid——从每一个点的距离
数字矩阵
距离每一点每medoid,返回一个数字矩阵。D
是一个n——- - - - - -k
矩阵,元素(j,米)的距离观察j对medoid米。
信息
——算法信息
结构体
算法的信息,作为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]在两个步骤所得。
编译步骤:每k集群与潜在medoid相关联。这个任务执行指定的使用技术
“开始”
名称-值对的论点。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:加州大学学校的信息和计算机科学。
扩展功能
自动并行支持金宝app
加速代码通过自动运行并行计算使用并行计算工具箱™。
并行运行,指定选项
名称-值参数在调用这个函数,设置UseParallel
选择结构领域真正的
使用statset
:
“选项”,statset (“UseParallel”,真的)
关于并行计算的更多信息,请参阅MATLAB函数自动并行支持运行金宝app(并行计算工具箱)。
版本历史
介绍了R2014b
另请参阅
MATLAB命令
你点击一个链接对应MATLAB命令:
运行该命令通过输入MATLAB命令窗口。Web浏览器不支持MATLAB命令。金宝app
你也可以从下面的列表中选择一个网站:
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。