K-Means简记
来源:互联网 发布:竞技类网游知乎 编辑:程序博客网 时间:2024/06/13 19:48
K-Means
聚类算法。
基础含义
K-Means是一种聚类算法,它可以把n个对象根据相互之间的相似度,自动划分到K个聚类。 但并不是任意的划分,我们有明确的目标。通俗的讲,目标就是划分后的聚类, 每个类内部相对集中;而聚类与聚类之间则相对离散。
数学原理
给定n个观察点
其中每个观察点
其中
那么我们的目标函数是什么呢?
我们需要划归到
目标函数:
其中Means
的意思。
如何求一个集合的方差Var:
Var(X)=1n∑i=1n(xi−μ)2
其中μ=1n∑i=1nxi μ 其实就是平均值.
回过头来总结一下目标函数:
如果分好了K个聚类必须满足,每个聚类的方差相加,这个方差之和最小。简言之,就是开始所谓的每个聚类尽量离散程度较好(抱团),这样方差小。
k-Means的算法流程
- 随机选取k个聚类质心点为
μ1,μ2,...,μk∈Rn - 重复下面的过程直到收敛
对于每一个样例,计算其应该属于哪个类:Si:=argminj||Xi−μj||
对于每一个聚类j,重新计算质心:
通俗一点讲:
1、给出k个初始聚类中心,简称初始化质心。
2、repeat:
把每一个数据对象重新分配到k个聚类中心处,形成k个簇
重新计算每一个簇的聚类中心
3、until 聚类中心不在发生变化
最小值和求导
既然目标函数已经确定了,求最小值也明确了。如何求极值(极小)呢。
最经典的数学方法,求导。参考
质心为啥是平均值
延续上面的求导。
对
为了求极值,导数是0是必要条件。
推出:
其中
最后大功告成:
质心是当前聚类的平均值就此证明结束。
一定收敛吗
涉及非凸函数,参考https://www.zhihu.com/question/20343349。待研究。
实现收敛方法的EM有啥关系
k-means算法与EM算法的关系是这样的:
** k-means是两个步骤交替进行,可以分别看成E步和M步;
** M步中将每类的中心更新为分给该类各点的均值,可以认为是在「各类分布均为单位方差的高斯分布」的假设下,最大化似然值;
** E步中将每个点分给中心距它最近的类(硬分配),可以看成是EM算法中M步(软分配)的近似。
缺点
- 对异常值敏感
- 需要提前确定k值
如何确定k:
- 数据的先验知识,或者数据进行简单分析能得到基于变化的算法:即定义一个函数,随着K的改变,认为在正确的K时会产生极值
- 基于结构的算法:即比较类内距离、类间距离以确定K。这个也是最常用的办法,如使用平均轮廓系数,越趋近1聚类效果越好;如计算类内距离/类间距离,值越小越好;等。
- 基于一致性矩阵的算法:即认为在正确的K时,不同次聚类的结果会更加相似,以此确定K
- 基于层次聚类:即基于合并或分裂的思想,在一定情况下停止从而获得K。
- 基于采样的算法:即对样本采样,分别做聚类;根据这些结果的相似性确定K。如,将样本分为训练与测试样本;对训练样本训练分类器,用于预测测试样本类别,并与聚类的类别比较。
代码
https://github.com/serban/kmeans
可以有哪些应用
文本聚类,通过设置一定的K,文档聚类,从而发现热点新闻。
引用
https://en.wikipedia.org/wiki/K-means_clustering
https://en.wikipedia.org/wiki/Variance
- K-Means简记
- K-Means
- k-means
- K-means
- k means
- K-means
- K-means
- K-Means
- k-means
- k-means
- k-means
- k-means
- k-means
- k-means
- K-means ++
- k-means
- k-Means
- K-means
- 图像采集及处理多线程编程
- AtCoder Regular Contest 078 D
- 关于MySQL 外键索引
- 《Java面试宝典》
- 卷积神经网络教程
- K-Means简记
- UVA10763ForeignExchange
- java代码设置手机来电黑名单自动挂断
- 完全分布式Hbase环境配置以及利用Java API创建表
- 如何在window系统配置python环境变量
- 通用程序设计
- Get请求与Post请求之字符编码的问题
- HDU 1233 还是畅通工程 基础最小生成树
- 1、匿名内部类(定义和使用方式)