第十章 利用K-均值聚类算法对未标注数据分组

第 10 章 利用K-均值聚类算法对未标注数据分组

10.1 K-均值聚类算法

                    K-均值聚类
优点:容易实现
缺点:可能收敛到局部最小值,在大规模数据集上收敛较慢
适用数据类型:数值型数据

K-均值聚类伪代码:

创建k个点作为起始质心(经常是随机选择)
当任意一个点的簇分配结果发生改变时
    对数据集中的每个数据点
        对每个质心
            计算质心与数据点之间的距离
        将数据点分配到距其最近的簇
    对每一个簇,计算簇中所有点的均值并将均值作为质心

10.2 使用后处理来提高聚类性能

​ 在前面一节中,k值由用户预先定义的参数,用户如何知道k值是否正确?如何知道生成的簇比较好?在包含簇分配结果的矩阵中保存着每个点的误差,即该点到簇质心的距离平方值。在这一节中,利用该误差来评价聚类质量。

​ K-均值算法收敛但聚类效果较差的原因是,K-均值算法收敛到了局部最小值,而非全局最小值(局部最小值指结果还可以但是并非最好结果,全局最小值是最可能的最好结果)。

​ 一种用于度量聚类效果的指标是SSE(Sum of Squared Error, 误差平方和),SSE值越小表示数据点越接近于它们的质心,聚类效果也是越好。因为误差取了平方,所以更加重视那些远离中心的点。越好的聚类SSE应该越小,最简单的降低SSE值方法是增加K值,但这违背了聚类的目标。聚类的目标是在保持簇数目不变的情况下提高簇的质量。

​ 对生成的簇进行后处理,一种方式是将具有最大SSE值的簇分成两个簇,但是这个来带来一个问题:K值增加即簇的数量增多。为了保证簇总数不变,可以将两个簇合并,下面提供了两种可以量化的方法:

  • 合并最近的质心:通过计算所有质心之间的距离,然后合并距离最近的两个点来实现。
  • 合并两个簇然后计算总SSE值:必须在所有可能的两个簇上重复上述处理过程,直到找到最佳两个簇为止。

10.3 二分K-均值算法

​ 为了克服K-均值算法收敛于局部最小值的问题,有人提出了二分K-均值算法。该算法首先将所有点作为一个簇,然后将该簇一分为二。之后选择其中一个簇继续进行划分,选择哪一个簇进行划分取决于对其划分是否可以最大程度降低SSE值。

二分k-均值的伪代码形式:

将所有点看成一个簇
当簇数目小于k时
对于每个簇
    计算总误差
    在给定的簇上面进行k-均值聚类(k=2)
    计算将该簇一分为二之后的总误差
选择使得误差最小的那个簇进行划分操作
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值