K-means聚类算法
流程
0 数据标准化(量纲不同时)
1 指定需要划分的簇[cù]的个数K值(类的个数);
2 随机地选择K个数据对象作为初始的聚类中心(不一定要是我们的样本点);
3 计算其余的各个数据对象到这K个初始聚类中心的距离,把数据对象划归到距离它最近的那个中心所处在的簇类中;
4 调整新类并且重新计算出新类的中心;
5 循环步骤三和四,看中心是否收敛(不变),如
果收敛或达到迭代次数则停止循环;
6 结束。
(7) 将结果中标准化的数据还原
原理的可视化
算法流程图
算法在论文中出现应使用流程图的形式
优劣
优点:
(1)算法简单、快速。
(2)对处理大数据集,该算法是相对高效率的。
缺点:
(1)要求用户必须事先给出要生成的簇的数目K。
(2)对初值敏感。
(3)对于孤立点数据敏感。
K-means++算法
K-means++算法可解决K-means算法2和3两个缺点
k-means++算法选择初始聚类中心的基本原则是:初始的聚类中心之间的相互距离要尽可能的远。
算法描述
(只对K-means算法“初始化K个聚类中心” 这一步进行了优化)
步骤零:数据标准化
步骤一:随机选取一个样本作为第一个聚类中心;
步骤二:计算每个样本与当前已有聚类中心的最短距离(即与最近一个聚类中心的距离),这个值越大,表示被选取作为聚类中心的概率较大;最后,用轮盘法(依据概率大小来进行抽选)选出下一个聚类中心;
步骤三:重复步骤二,直到选出K个聚类中心。选出初始点后,就继续使用标准的K-means算法了。
K-means算法的一些讨论
(1)聚类的个数K值怎么定?
答:分几类主要取决于个人的经验与感觉,通常的做法是多尝试几个K值,看分成几类的结果更好解释,更符合分析目的等。
(2)数据的量纲不一致怎么办?
答:如果数据的量纲不一样,那么算距离时就没有意义。例如:如果X1单位是米,X2单位是吨,用距离公式计算就会出现“米的平方”加上“吨的平方”再开平方,最后算出的东西没有数学意义,这就有问题了。
z标准化:
注意最后将结果中标准化的数据还原
使用SPSS操作聚类算法
清风第十讲第一部分