机器学习--K-means算法

        聚类分析是数据挖掘及机器学习领域内的重点问题之一,在数据挖掘、模式识别、决策支持、机器学习及图像分割等领域有广泛的应用,是最重要的数据分析方法之一。聚类是在给定的数据集合中寻找同类的数据子集合,每一个子集合形成一个类簇,同类簇中的数据具有更大的相似性。聚类是一种无监督学习,它将相似的对象归到同一簇中。它有点像全自动分类(自动意思是连类别体系都是自动构建的)。聚类方法几乎可以应用于所有对象,簇内的对象越相似,聚类的效果越好。本节学习一种称为K-means(K-均值)聚类的算法。之所以称之为K-均值是因为它可以发现k个不同的簇,且每个簇的中心采用簇中所含值的均值计算而成。

        K-means算法是一种得到最广泛使用的基于划分的聚类算法,把m个对象分为k个簇,以使簇内具有较高的相似度。相似度的计算根据一个簇中对象的平均值来进行。它与处理混合正态分布的最大期望算法很相似,因为他们都试图找到数据中自然聚类的中心。

算法描述

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


        K-means算法是发现给定数据集的k个簇的算法。簇个数k是用户给定的,每一个簇通过其质心(centroid),即簇中所有点的中心来描述。
        K-means算法的工作流程是这样的。首先,随机确定k个初始点作为质心。然后将数据集中的每个点分配到一个簇中,具体来讲,为每个点找距其最近的质心,并将其分配给该质心所对应的簇。进一步完成之后,每个簇的质心更新为该簇中所有点的平均值。


下面是K-means算法的分析:

        假设训练样本为 ,其中 。算法的目的是将这m个样本聚类到K个不同的簇中,事先已经指明K的取值。随机选取作为K个簇的质心,即用 来代表将要聚类得到的不同的簇。我们的目的就是将训练样本聚类到K个不同的簇中,并得到

        对每一个样本 ,用 来表示 被分到的簇,当 属于第k簇时,有 ;否则

        定义失真函数(distortion function)为:

                                                                                  

        是每个数据点到其所在簇的质心的距离的平方和。我们的目的是寻找 和来最小化 。可以通过迭代来完成,每次都迭代包含两个步骤,分别是关于 的优化。首先随机选择 的初始值,在第一步中先固定 ,然后根据 来最小化 ;在第二步中先固定 ,然后根据 来最小化 。重复这两个步骤,直到 收敛。

        首先固定 ,来考虑 。因为 的线性函数,因此很容易求出闭型解(closed form solution)。式子中包含m个独立的样本,所以我们可以一个一个的来优化,通过求出样本点 与每个质心 的距离的平方,并选择最小的一个所对应的质心作为 所在的簇。可以用下面的式子表述:

                                                                        

        接下来固定 ,来考虑 。因为 是 的二次函数,可以通过关于 求导并令导数等于0来实现最小化。

                                                                        

        能够很容易的得到:

                                                                         

        上式中分母是属于第k个簇的样本的个数,分子是属于第k个簇的样本之和,故可以将上式理解为: 是属于第k个簇的样本的平均值。这就是为什么称为K-means算法的原因。

        失真函数 不是一个凸函数,所以通过上述迭代方法并不能保证 收敛到全局最小值。也就是说,K-means比较容易受所选定的初始值的影响,如前面写的,K-means是可能收敛到局部最小值。但一般情况下K-means所达到的局部最优已经能够很好的满足要求。如果你担心陷入一个较差的局部最优,那么可以选定不同的随机初始值 ,然后选择最小的 所对应的 作为输出。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值