K均值

K均值算法是一种聚类算法(聚类算法就是将一堆没有标签的数据自动化分为几类,并保证同类数据有相似特征)


K均值算法的一个重要假设:数据之间的相似度由欧氏距离衡量,如果不能,那就需要将数据转化为可以用欧氏距离衡量。


“牧师-村民”模型:


有四个牧师去郊区布道,一开始牧师们随意选了四个布道点,并且把这几个布道点的情况公告给了郊区所有的居民,于是每个居民到离自己家最近的布道点去听课。听课之后,一些人觉得距离太远了,于是每个牧师统计了一下自己的课上所有的居民的地址,搬到了所有地址的中心地带,并且在海报上更新了自己的布道点的位置。牧师每一次移动不可能离所有人都更近,有的人发现A牧师移动以后自己还不如去B牧师处听课更近,于是每个居民又去了离自己最近的布道点……就这样,牧师每个礼拜更新自己的位置,居民根据自己的情况选择布道点,最终稳定了下来。



实际计算过程:

1.对于空间中的一堆点,随机生成K个聚类中心点,然后分别计算每一个数到这些中心点的距离,每个点都选取距离自己最近的中心点作为自己的类别;

2.依据已经归类好的同一个类别的点,重新计算中心点,确保一个类别内部的点和中心的的距离之和最小;

3.将这K个中心点作为新的中心点,重复步骤一和步骤二,直到收敛结束。


注意:

1.输入数据一般需要缩放(如标准化)。主要是因为距离的计算可能出现“过高的影响”情况发生;

2.输入数据的变量类型不同,需作特别处理。可以改变类型,但容易出现问题;也可将不同类型变量分开处理,在将结果合起来;

3.输出结果不固定。算法具有随机性,初始化到收敛往往不同。

4.高维数据有效性较弱。高维距离的意义有所变化;

5.运行效率与性能需要进行取舍;

 

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容