聚类算法之K-Means算法

聚类

     对大量未进行标注(Unsupervised learning)的数据集,并按照数据集本身的内部数据特征将数据划分为多个不同的类别,从而使得类别内的数据相似度高,而类别间的数据差异性较大。因此,它的重点就在于计算样本间的相似度(Similarity)。

k-means算法思想与原理

     输入算法所需数据,数据样本集 D={X1,X2,,Xm} ,将样本数据集分开的簇数 K ,此处用欧几里得距离(Euclidean Distance)来计算样本间相似度:
1. 选择(选择策略可以随机,也可以多次选择选最佳等)初始化的K个类别的中心(Centroids),c1,c2,,ck;
2. 对于每一个样本 Xi ,将其标记为距离类别中心 cj 最近的类别j,    即,

i, labeli=argmin1jki=1n(xicji)2,cj=1N(Cj)XiCjXi

3. 更新每一个簇的质心为隶属该簇的所有样本的均值, 当然这只是策略之一,如还可以使用中值(Median) 一定程度避免outliers
4. 重复第2, 3步,直到满足终止条件之一。
终止条件,达到迭代次数,所有簇中心点变化不大于指定阈值,最小平方误差MSE
     最小化平方误差MSE(Loss Function)表示为,假设划分的簇为 {C1,C2,,Ck} ,
E=i=1kXjCi||Xjci||2,ci=1|Ci|XjCiXj

k-means算法优缺点

优点:
1. 原理简单,处理效率高,效果还不错,
2. 对于大数据处理,能够保证较好的伸缩性,
3. 如果簇近似高斯分布,那么效果将会非常不错
缺点:
1. k值需要提前指定,而不同的k值得到的结果往往差别较大,
2. 算法对于初始的k个簇的质心敏感,
3. 离群值(outliers)对模型影响较大
欢迎大家查看Github实现代码
推荐博文

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值