k-means算法扩展

k-means是机器学习中最基本的聚类算法,但同样也有很多缺点:

一是k选择是随机的,可能会得到局部最优解

二是k的个数的选择是预估计的,很多时候并不知道样本被聚为几类最合适

同样,k-measns仅能实现对连续型数值的样本操作,当数据量过于庞大时,时间复杂度较高(每次计算簇的中心来选取新的中心点)

 

k-means++

为了解决k的随机性,k-means++算法与k-means算法原理基本类似,他的做法是,如果将样本聚为k类,则在数据集中随机选取一个中心点(随机种子),循环遍历所有的点与中心点的距离存放在D(m)中,其中D(m)=[d1,d2,d3,...,dm]。在D(m)中选择再选取最大的di作为第二个中心点,如此反复,直至选取好了所有的k点,再进行k-means的过程。

k-means++的基本思想就是,在初始选取中心点时,中心点k之间的距离尽可能的大

 

k-modes

如果说所要聚类的样本数据集都是离散型的数值,比如我要在电脑购买记录中去聚类相似特征的人群,其中只有性别、学历、薪资等级等特征,此时无法用k-means的欧式距离去衡量各样本的距离。k-modes衡量距离的做法是汉明距离

比如样本 1,0,1,1,1,0,1与样本1,0,0,1,0,0,1之间的汉明距离为2(异或操作),且k-modes在更新中心点的时候采用的是各个簇的众数而非均值。

 

k-prototype

如果说聚类样本之间既有离散型变量又有连续型变量,即度量样本间混合属性的距离,那么k-prototype算法能解决这一问题。

k-prototype原理就是用k-means取得连续型变量之间的欧式距离P1,k-modes度量连续型变量之间的汉明距离P2,那么度量此类样本之间的距离D = P1+a*P2,a可随机赋予,如果离散型变量的属性比较重要则增大a,否则减小a,a=0时,只有连续型变量的属性。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值