KMeans

总结

算法流程:

    选取K个点作为初始类中心

    将每个点指派到最近的类中心,形成k个簇

    重新计算每个簇的类中心

    直到簇不发生变化或达到最大迭代次数

时间复杂度:O(tkmn) — t为迭代次数,k为簇的数目,m为样本数,n为维数

问题

K如何确定:

1、与层次聚类的结合

    首先采用层次聚类算法决定结果中簇大概的数目,并找到一个初始聚类,然后用迭代重定位来改进该聚类

2、结果稳定性

    对数据集进行2次重采样产生2个数据子集,再用相同的聚类算法对2个子集进行聚类,产生2个具有k个聚类的聚类结果,计算2个聚类结果的相似度分布情况(如何计算聚类结果相似度),2个聚类结果具有高的相似度说明k个聚类反应了稳定的聚类结构,其相似度可以用来估计聚类个数。

    可以采用次方法试探多个k,找到合适的k值

3、使用canopy算法进行初始划分

两个阶段

stage1:

    聚类最好时的地方在于计算相似性的时候canopy在第一阶段选择简单、计算代价较低的方法计算相似性(什么方法)

    将相似的对象放在一个子集,一个子集就叫做一个canopy,就像用盖子把一些相似的样本点盖住

        初始,我们有一组点集S,预设两个距离阈值,T1>T2

        选择一个点,计算它与S中其他点的距离(这里采用成本低的计算方法)

        将距离为T1以内的点放入一个Canopy中,同时删除S中与此点距离在T2内的点

        这里是为了保证和中心距离在 T2 以内的点不能再作为其他 Canopy 的中心

    canopy之间可以重叠,但不会存在对象不属于任何一个canopy的情况

stage2:

    在各个canopy内使用传统的聚类算法(可以是KMeans),不属于同一个canopy的对象之间不尽兴相似性计算

注意:

    canopy不要太大且canopy之间重复的不要太多

    这样会大大减少后续需要计算相似性的对象的个数

    通过第一阶段可以大致得到canopy的个数,通过这个个数去确定KMeans的值将一定程度上减少盲目性
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值