一、k-means
来源:互联网 发布:网络打字员兼职1w300 编辑:程序博客网 时间:2024/04/29 12:34
解K-means的大概思路,没有深究过其中的两个重要问题:一是初始点的选择;二是K值的选择。
合理的确定K值和K个初始类簇中心点对于聚类效果的好坏有很大的影响
算法原理:
(1) 随机选取k个中心点;
(2) 在第j次迭代中,对于每个样本点,选取最近的中心点,归为该类;
(3) 更新中心点为每类的均值;
(4) j<-j+1 ,重复(2)(3)迭代更新,直至误差小到某个值或者到达一定的迭代步数,误差不变.
空间复杂度o(N)
时间复杂度o(I*K*N)
其中N为样本点个数,K为中心点个数,I为迭代次数
轮廓系数:
轮廓系数(Silhouette Coefficient)结合了聚类的凝聚度(Cohesion)和分离度(Separation),用于评估聚类的效果。该值处于-1~1之间,值越大,表示聚类效果越好。具体计算方法如下:
1. 对于每个样本点i,计算点i与其同一个簇内的所有其他元素距离的平均值,记作a(i),用于量化簇内的凝聚度。
2. 选取i外的一个簇b,计算i与b中所有点的平均距离,遍历所有其他簇,找到最近的这个平均距离,记作b(i),即为i的邻居类,用于量化簇之间分离度。
3. 对于样本点i,轮廓系数s(i) = (b(i) – a(i))/max{a(i),b(i)}
4. 计算所有i的轮廓系数,求出平均值即为当前聚类的整体轮廓系数,度量数据聚类的紧密程度
从上面的公式,不难发现若s(i)小于0,说明i与其簇内元素的平均距离小于最近的其他簇,表示聚类效果不好。如果a(i)趋于0,或者b(i)足够大,即a(i)<<b(i),那么s(i)趋近与1,说明聚类效果比较好。
K值确定
法1:(轮廓系数)在实际应用中,由于Kmean一般作为数据预处理,或者用于辅助分聚类贴标签。所以k一般不会设置很大。可以通过枚举,令k从2到一个固定值如10,在每个k值上重复运行数次kmeans(避免局部最优解),并计算当前k的平均轮廓系数,最后选取轮廓系数最大的值对应的k作为最终的集群数目。
- 一、k-means
- K-means聚类(一)
- Spark MLlib(一)K-Means
- K-Means
- k-means
- K-means
- k means
- K-means
- K-means
- K-Means
- k-means
- k-means
- k-means
- k-means
- k-means
- k-means
- K-means ++
- k-means
- 数据科学家必须知道的10个深度学习架构
- 15算法课程 21. Merge Two Sorted Lists
- [linux]ssh vpn(vpn)
- Java后台框架篇--Spring之AOP
- bzoj1690 [Usaco2007 Dec]奶牛的旅行(最优比率环,二分答案+spfa判负环)
- 一、k-means
- [ffmpeg]加硬字幕
- 计算机网络--数据链路层
- Java后台框架篇--Spring之AspectJ AOP
- [ffmpeg]加幕流
- 15算法课程 26. Remove Duplicates from Sorted Array
- 讯为Exynos4412开发板例程及注释——动/静态申请字符类设备号代码及注释
- 二、决策树
- [ffmpeg]显示视频时长