K-means聚类算法

聚类概念

在无监督学习中,训练样本的标记信息是未知的,目标是通过对无标记训练样本的学习来揭示数据的内在性质和规律。此类学习任务中研究最多的是聚类。

聚类视图将数据中的样本分为若干个不相交的子集,每个子集称为一个簇。每个簇有各自的性质。

聚类既能作为一个单独过程,用于寻找数据内在的分布结构,也可以作为分类等其他学习任务的前驱过程。先聚类得到有多少个类型,再将这些类型用以分类。

性能度量

聚类性能度量大致有两类,一类是将聚类结果与某个“参考模型”比较,有一个外部指标;另一类直接考察聚类结果,不参考外部指标。

是否与外部指标的分类相似,有一些指标FM指数、Rand指数。

或者使用簇直接的距离来度量。闵可夫斯基距离。距离越大,相似度越小。

k均值算法

西瓜书聚类9.4.1

E越小,簇内样本相似度越高。E等于x与簇内均值差平方。

k均值算法采用贪心策略,迭代优化近似求解最小E。

流程
1.从样本集D中随机选取K个样本作为初始均值向量{u1,u2,...,uk}
2.repeat
3.令Ci = 空   Ci表示簇
4. for j = 1 : m do  m个样本
5. 计算样本xj与各个均值向量的距离
6. 根据距离最近的均值向量,确定xj的簇标记
7. 将样本加入相应的簇
8. end
9. for i = 1 : k do k个簇
10. 计算新均值向量,等于所有簇内向量平均u'
11. ifu' != 原来的u,就替换为u'
12. 一直循环,直到均值向量没有更新
原文地址:https://www.cnblogs.com/chenshaowei/p/12769740.html