kmeans

kmeans是很经典的一种聚类方法,也比较简单,本文主要记录kmeans的思路,代码以后再补。

主要参考资料:

wiki

http://en.wikipedia.org/wiki/K-means_clustering

漫谈clustering之kmeans

http://blog.pluskid.org/?page_id=78


1,简介

a.目标:

kmeans算法是要将空间中N个点划分到k个类别中,使得每个点与它所属的类别的中心点的距离最近。

对于一幅图片中的像素点做kmeans聚类,结果如下:


b.描述(from wiki):

(x1,x2,...xn)是观测值的一个集合,其中每个x都是一个d维向量;

Si代表每个类别,μi是Si的聚类中心点;

kmeans算法就是要将N个点划分到k个类别中,使得小组内部距离平方和WCSS(within-cluster sum of squares)最小,即满足下式:


   

c.性质:kmeans算法是无监督的,是自下而上的聚类。

2,初始化

首先要选定k个点作为初始聚类。

Forgy方法:随机从数据集中选k个observation作为初始中心点。

 Random Partition:随机为每一个observation指定聚类,然后计算每个聚类的中心,以这些中心作为初始中心点。

3,步骤

下图是kmeans算法的聚类过程:叉点表示聚类中心


 a.划分: 把xp分配到Si中,图中的紫红色划分线,使得WCSS最小。由于WCSS是欧氏距离的平方,所以直观上讲,就是把xp分配到离它最近的一个Si中。

b.更新聚类中心:

就是对类别Si中的点做算术平均,由于算术平均值是一种最小二乘估计(最小二乘法通过最小化误差的平方和寻找数据和最佳函数的匹配),所以这一步也有助于聚类内部WCSS值的减小。

c.重复以上两步,直到划分方案不再改变。因为a,b两步都在最小化WCSS,且分配方案有限,所以算法最终会收敛到某个最优解,但不一定是全局最优的。


以上步骤是基于EM思想。


以上内容主要依据wiki及wiki reference中的一些参考材料,图片来自《Pattern Recognition and Machine Learning》。

漫谈clustering中也提供了一种数学描述,对理解也有一些帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值