本主题是对。的介绍k-意味着集群和一个例子,使用统计和机器学习工具箱™功能kmeans
查找数据集的最佳集群解决方案。
k-means聚类是一个分区方法。功能kmeans
分区数据k互斥的聚类,并返回将每个观测值赋给的聚类的索引。kmeans
将数据中的每个观察结果视为一个在空间中具有位置的对象。该函数找到一个分区,在这个分区中,每个集群中的对象尽可能地彼此接近,而其他集群中的对象尽可能地远离。你可以选择距离度量使用kmeans
基于数据的属性。像许多聚类方法,k-意味着集群需要您指定集群的数量k前聚集。
与层次聚类,k-均值聚类对实际观测数据进行操作,而不是对数据中每对观测数据之间的差异进行操作。同时,k-means聚类创建簇的单级,而不是簇的多层次结构。因此,k-means聚类通常比用于大量数据的分级聚类更合适。
a中的每个集群k-means分区由成员对象以及质心(或中心)的。在每个集群,kmeans
使形心与群集的所有成员对象之间的距离之和最小。kmeans
对于支持的距离指标,以不同的方式计算形心簇。万博1manbetx有关详细信息,请参见“距离”
。
您可以使用可用的名称 - 值对控制参数的最小化的细节kmeans
;例如,可以指定群集的质心和迭代算法的最大数目的初始值。默认,kmeans
使用k——+ +算法初始化聚类中心,用平方欧几里得距离度量来确定距离。
当执行k-意味着集群,遵循这些最佳实践:
相比k-表示对不同值的聚类解万博 尤文图斯k来确定数据的最佳集群数量。
评估通过检查轮廓曲线和轮廓值集群解决方案万博 尤文图斯。您也可以使用evalclusters
函数的作用是:根据gap值、silhouette值、Davies万博 尤文图斯-Bouldin索引值和Calinski-Harabasz索引值等标准评估聚类解决方案。
从随机选择的不同质心复制聚类,并返回所有复制之间距离总和最低的解。
这个例子中探索k-表示在四维数据集中的聚类。这个例子展示了如何通过使用剪影图和值来分析不同的结果来确定数据集的正确聚类数量k——集群解决方案。万博 尤文图斯示例还显示了如何使用“复制”
名称 - 值对的参数测试的可能解决方案的指定数量,并返回一个与距离的最低总和。万博 尤文图斯
加载数据集
加载kmeansdata
数据集。
rng (“默认”)%用于重现负载('kmeansdata.mat')大小(X)
ans =1×2560年4
数据集是四维的,不容易可视化。然而,kmeans
使您能够调查的数据中是否存在一组结构。
创建集群并检查分离
划分数据成组使用三组k-means集群。指定城市街区距离度量,并使用默认k-means ++算法的聚类中心的初始化。使用'显示'
名称-值对参数,用于打印解决方案的最终距离和。
[idx3 C sumdist3] = kmeans (X, 3,“距离”,“cityblock”,'显示','最后');
复制1,7次迭代,距离= 2459.98的总和。距离= 2459.98的最好的总和
的idx3
包含簇索引,指示在各行的群集指派X
。要查看是否已产生集群很好地分开,你可以创建一个剪影图。
剪影图显示一个集群中的每个点与相邻集群中的点之间的距离。这个度量范围从1(表示距离相邻集群非常远的点)到0(在一个或另一个集群中不明显的点)到-1(可能分配给错误集群的点)。轮廓
在第一个输出中返回这些值。
创建一个轮廓图的idx3
。指定“cityblock”
对于距离度量,以指示k-means集群是基于绝对差之和。
[silh3,H] =剪影(X,的idx3,“cityblock”);包含(“轮廓值”)ylabel ('簇')
轮廓图显示,第二簇中的多数点具有大的轮廓值(大于0.6),这表明簇稍微来自相邻簇分离。然而,第三群集包含许多点具有低轮廓的值,并且第一和第三簇包含几个点与负值,这表明这两个簇不能很好分离。
看看kmeans
能找到更好的分组数据,提高集群的次数为4次。通过使用打印大约每次迭代信息'显示'
名称-值对的论点。
idx4 = kmeans (X 4“距离”,“cityblock”,'显示',“通路”);
iter相数之和1 1 560 1792.72 2 1 6 1771.1最佳总距离之和= 1771.1
为四个集群创建一个轮廓图。
[silh4 h] =轮廓(X, idx4“cityblock”);包含(“轮廓值”)ylabel ('簇')
轮廓图表明,这四个集群比前一个解决方案中的三个集群分离得更好。通过计算这两种情况的平均轮廓值,可以采用更定量的方法来比较这两种解决方案。万博 尤文图斯
计算平均轮廓值。
cluster3 =意味着(silh3)
cluster3 = 0.5352
cluster4 =意味着(silh4)
cluster4 = 0.6400
四个簇的平均轮廓值大于三个簇的平均值高。这些值支持剪影图所代表的结万博1manbetx论。
最后,发现数据五个集群。创建轮廓图和计算的平均轮廓值五个集群。
idx5对应= k均值(X,5,“距离”,“cityblock”,'显示','最后');
复制1,7次迭代,距离= 1647.26的总和。距离= 1647.26的最好的总和
[silh5,H] =剪影(X,idx5对应,“cityblock”);包含(“轮廓值”)ylabel ('簇')
意思是(silh5)
ANS = 0.5721
剪影图表明,5可能不是正确的集群数量,因为两个集群包含剪影值较低的点,而第五个集群包含一些剪影值为负值的点。此外,五个集群的平均轮廓值低于四个集群的平均轮廓值。在不知道数据中有多少个集群的情况下,尝试使用的值范围是一个好主意k
,集群的数目。
注意,距离和随着集群数量的增加而减少。例如,距离的和从2459.98
来1771.1
来1647.26
作为簇增加3至4至5的数目。因此,距离的总和不用于确定簇的最佳数目是有用的。
避免局部极小
默认,kmeans
使用一组随机选择的初始形心位置开始聚类过程。的kmeans
算法可以收敛到局部最小值(nonglobal)的解;也就是说,kmeans
可以对数据进行分区,以便将任何单点移动到不同的集群可以增加总距离。然而,与许多其他类型的数值最小化一样,这个解kmeans
有时达到依赖于起点。因此,具有距离较低的总金额的其他解万博 尤文图斯决方案(局部最小值)可以存在的数据。您可以使用“复制”
名称-值对参数,以测试不同的解决方案。万博 尤文图斯当您指定多个复制时,kmeans
反复进行从对于每个重复不同随机选择的质心开始聚类处理,并返回与所有的重复间距离的最低总和的溶液。
在数据中找到四个集群,并将集群复制五次。另外,指定城市街区距离度量,并使用'显示'
名称-值对参数,用于打印每个解决方案的最终距离和。
[idx4显式地,cent4,sumdist] = k均值(X,4,“距离”,“cityblock”,…'显示','最后',“复制”5);
复制1,2次迭代,距离= 1771.1的总和。复制2,3次迭代,距离= 1771.1的总和。复制3,3迭代中,距离= 1771.1的总和。复制4,6次迭代,距离= 2300.23的总和。复制5,2次迭代,距离= 1771.1的总和。距离= 1771.1的最好的总和
在复制4中,kmeans
找到一个局部最小值。因为每个重复来自不同的随机选择的组初始质心的开始,kmeans
有时会发现不止一个局部最小值。然而,最终的解决方案是kmeans
回报是一个拥有超过所有重复距离的最低总和。
求所返回的最终解的点到质心距离的簇内和的总和kmeans
。
总和(sumdist)
ans = 1.7711 e + 03