kmeans k值确定 matlab,kmeans算法原理以及实践操作(多种k值确定以及如何选取初始点方法)...

本文介绍了KMeans聚类算法的原理,包括随机选取k个中心点、迭代更新直至收敛的过程。讨论了为何算法能逐步减少误差,并提出了评估聚类效果的轮廓系数。文章还探讨了确定k值的两种常见方法,如轮廓系数最大值法和Calinski-Harabasz准则。此外,详细阐述了k-means++初始化方法,以及层次聚类和Canopy算法作为初始点选择的策略。文章提供了R语言的实践操作示例,指导如何在实际应用中执行KMeans算法。
摘要由CSDN通过智能技术生成

kmeans一般在数据分析前期使用,选取适当的k,将数据聚类后,然后研究不同聚类下数据的特点。

算法原理:

(1) 随机选取k个中心点;

(2) 在第j次迭代中,对于每个样本点,选取最近的中心点,归为该类;

(3) 更新中心点为每类的均值;

(4) j

空间复杂度o(N)

时间复杂度o(I*K*N)

其中N为样本点个数,K为中心点个数,I为迭代次数

为什么迭代后误差逐渐减小:

SSE=

6e439b12cae187a84a61bbf274eb4445.png

对于

546b82a220fb9ab934b9428522f10b8b.png 而言,求导后,当

adae78c1ad9d3a300f7c42fcfa3be8ba.png 时,SSE最小,对应第(3)步;

对于

8f1881d1cfd390d4bbe35b5fc844d3af.png 而言,求导后,当

fa0850cb980f68b1d0912d99eed6f410.png 时,SSE最小,对应第(2)步。

因此kmeans迭代能使误差逐渐减少直到不变

轮廓系数:

轮廓系数(Silhouette Coefficient)结合了聚类的凝聚度(Cohesion)和分离度(Separation),用于评估聚类的效果。该值处于-1~1之间,值越大,表示聚类效果越好。具体计算方法如下:

对于每个样本点i,计算点i与其同一个簇内的所有其他元素距离的平均值,记作a(i),用于量化簇内的凝聚度。

选取i外的一个簇b,计算i与b中所有点的平均距离,遍历所有其他簇,找到最近的这个平均距离,记作b(i),即为i的邻居类,用于量化簇之间分离度。

对于样本点i,轮廓系数s(i) = (b(i) – a(i))/max{a(i),b(i)}

计算所有x的轮廓系数,求出平均值即为当前聚类的整体轮廓系数,度量数据聚类的紧密程度

从上面的公式,不难发现

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值