聚类
聚类是一种无监督的学习,它将相似的对象归到同一个簇中。其与分类的区别是分类的目标已知,而聚类所分的类别没有预先定义。
k均值聚类
K-均值是发现给定数据集的k个簇的算法。簇个数k是用户给定的,每一个簇通过其质心(centroid),即簇中所有点的中心来描述。
实现过程伪代码如下
创建k个点作为起始质心(经常是随机选择)
当任意一个点的簇分配结果发生改变时
----对数据集中的每个数据点
--------对每个质心
------------计算质心与数据点之间的距离
--------将数据点分配到距其最近的簇
----对每一个簇,计算簇中所有点的均值并将均值作为质心
为了降低误差值,有人提出了二分k均值算法,实现伪代码如下
将所有点看成一个簇
当簇数目小于k时
----对于每一个簇
--------计算总误差
--------在给定的簇上面进行K-均值聚类(k=2)
--------计算将该簇一分为二之后的总误差
----选择使得误差最小的那个簇进行划分操作
这个算法所含的数学原理很简单,很容易看懂