机器学习方法简介(3)--kmeans

kmeans是最著名的聚类算法,聚类算法就是计算种群中的距离,根据距离的远近将数据划分为多个族群。

kmeans算法首先需要确定k的数量,即全部样本所包含类别的数量。然后选择k个初始中心点,之后我们计算所有样本点与k个中心点之间的距离,对于任意一个样本点,它与哪个中心点距离最小我们就将其分配到该中心点所在类。完成所有样本点的分配后将重新计算中心点。重复上述过程,比较样本点与中心点的距离并将样本点重新分配,直到中心点改动小于给定阈值或者达到规定迭代次数。

1.k值得确定

1)根据问题内容确定

2)肘部法则

把不同k值得成本函数画出来,k值增大过程中,畸变程度的改善效果下降幅度最大的位置对应的k值就是肘部。

3)与层次聚类结合

先用层次聚类找到簇的数量和一个初始聚类。

4)稳定性方法

稳定性方法对一个数据集进行2次重采样产生2个数据子集,再用相同的聚类算法对2个数据子集进行聚类,产生2个具有k个聚类的聚类结果,计算2个聚类结果的相似度的分布情况。2个聚类结果具有高的相似度说明k个聚类反映了稳定的聚类结构,其相似度可以用来估计聚类个数。采用此方法试探多个k,找到合适的k值。

5)系统演化方法

系统演化方法将一个数据集视为伪热力学系统,当数据集被划分为k个聚类时称系统处于状态k。系统由初始状态k=1出发,经过分裂过程和合并过程,系统将演化到它的稳定平衡状态 k_{i},其所对应的聚类结构决定了最优类数 k_{i}

6)使用canopy算法进行初始划分

分成两个阶段:

在第一阶段选择简单、计算代价较低的方法计算对象相似性,将相似的对象放在一个子集中,这个子集被叫做Canopy,通过一系列计算得到若干Canopy,Canopy之间可以是重叠的,但不会存在某个对象不属于任何Canopy的情况,可以把这一阶段看做数据预处理;

第二阶段,在各个Canopy内使用传统的聚类方法(如Kmeans),不属于同一Canopy的对象之间不进行相似性计算。

2.初始质心的选择

1)多次运行,每次使用一组不同的随机初始质心,然后选取具有最小SSE(误差的平方和)的簇集。这种策略简单,但是效果可能不好,这取决于数据集和寻找的簇的个数。

2)取一个样本,并使用层次聚类技术对它聚类。从层次聚类中提取kk个簇,并用这些簇的质心作为初始质心。该方法通常很有效,但仅对下列情况有效:(1)样本相对较小,例如数百到数千(层次聚类开销较大);(2) kk相对于样本大小较小。

3)随机地选择第一个点,或取所有点的质心作为第一个点。然后,对于每个后继初始质心,选择离已经选取过的初始质心最远的点。使用这种方法,确保了选择的初始质心不仅是随机的,而且是散开的。但是,这种方法可能选中离群点。此外,求离当前初始质心集最远的点开销也非常大。为了克服这个问题,通常该方法用于点样本。

4)canopy算法

3.聚类算法效果评估方法--轮廓系数

轮廓系数是类的密集与分散程度的评价指标。它会随着类的规模增大而增大。彼此相距很远,本身很密集的类,其轮廓系数较大,彼此集中,本身很大的类,其轮廓系数较小。

 

s=\frac{a-b}{max(a,b))}

a是每一个类中样本彼此距离的均值,b是一个类中样本与其最近的那个类的所有样本的距离的均值。

4. Kmeans算法流程

输入:聚类个数k,数据集XmxnXmxn。 
输出:满足方差最小标准的k个聚类。

(1) 选择k个初始中心点,例如c[0]=X[0] , … , c[k-1]=X[k-1];

(2) 对于X[0]….X[n],分别与c[0]…c[k-1]比较,假定与c[i]差值最少,就标记为i;

(3) 对于所有标记为i点,重新计算c[i]={ 所有标记为i的样本的每个特征的均值};

(4) 重复(2)(3),直到所有c[i]值的变化小于给定阈值或者达到最大迭代次数。

Kmeans的时间复杂度:O(tkmn),空间复杂度:O((m+k)n)。其中,t为迭代次数,k为簇的数目,m为样本数,n为特征数。

5.优点

1)容易理解,聚类效果不错

2)处理大数据集时,有较好的伸缩性和高效率

3)当簇近似高斯分布的时候,效果相当不错

6.缺点

1)k值需要用户给定,对于不同的k值,聚类效果不一样

2)对初始簇中心点是敏感的

3)不适合发现非凸形状的簇或者大小差别很大的簇

4)离群值影响很大

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值