聚类算法----之----(k-means)
来源:互联网 发布:自己设计装修画图软件 编辑:程序博客网 时间:2024/05/19 23:10
1.基本k-means算法:
1:选择K个点作为初始质心
2:repeat
3:将每个点指派到最近的质心,形成K个簇
4:重新计算每个簇的质心
5:until 质心不发生变化
K-means聚类算法,整个算法中有两个量非常重要:K 和means(均值。K是指期望的簇的个数,是需要人为设定的参数;而means指的是簇的均值向量。
K-means聚类算法的空间需求是适度的,因为只需要存放数据点和质心;它的时间需求也是适度的,基本上与数据点的个数线性相关:
空间复杂度:O((m+K)n)
m:点数
n:属性数
K:簇数
时间复杂度:O( I x K x m x n)
I:收敛所需要的迭代次数
m:点数
n:属性数
K:簇数
距离的度量:
常用的距离度量方法包括:
1.欧几里得距离
2.余弦相似度
两者都是评定个体间差异的大小的。 欧几里得距离度量:会受指标不同单位刻度的影响,所以一般需要先进行标准化,同时距离越大,个体间差异越大;空间向量余弦夹角的相似度度量:不会受指标刻度的影响,余弦值落于区间[-1,1],值越大,差异越小。
k-means的缺点:
1.需要指定k值
2.选择初始质心是随机的
3.k-means算法对初始化非常敏感
4.空簇
解决 随机初始化局限的思路:
1.多次运行,每次使用不同的随机初始质心,然后选取具有最小SSE(误差的平方和,也称:散布,度量聚类质量的目标函数)的簇集;(一般不能克服)
2.取一个样本,并使用层次聚类技术对它聚类;(适用于a:样本相对较小,例如数百到数千【层次聚类开销较大】;b:K相对于样本大小较小)
3.a:随机地选择第一个点,或取所有点的质心作为第一个点;
b:然后,对于每个后继初始质心,选择离已经选取过的初始质心最远的点。
优:得到的初始质点不仅能确保是随机的,还能是散开的;缺:可能选中离群点;此外,求离当前初始质心集最远的点开销也非常大
处理空簇:
如果所有的点在指派步骤都未分配到某个簇,就会得到空簇
1.选择一个距离当前任何质心最远的点,这将消除当前对总平方误差影响最大的点
2.从具有最大SSE的簇中选择一个替补质心,这将分裂簇并降低聚类的总SSE
2.k-means++算法:
1.初始化中心点集合
2.和k-means一样,从数据点中随机选择第一个中心点
3.重复如下过程,知道选出K个初始化中心点为止
a:计算每个数据点到其最近的中心点的距离D
b:以正比于D的概率,随机选择一个数据点作为新中心点加入中心点集合中
c:repeat
k-means++算法是对k-means的一种改进,选择初始中心点的基本思想就是:初始的聚类中心之间的相互距离要尽可能的远。
3.二分k-means算法:
1.初始化簇表,使之包含由所有的点组成的簇
2.repeat
a.从簇表中取出一个簇
b.{对选定的簇进行多次二分“实验”}
c.for i=1 to 测试次数 do
使用基本K均值,二分选定簇
end for
d.将这两个簇添加到簇表中
3.until簇表中包含K个簇
二分K-means算法是基本K-means算法的直接扩充,它基于一种简单想法:为了得到K个簇,将所有点的集合分裂成两个簇,从这些簇中选取一个继续分裂,如此下去,直到产生K个簇。
选择待分裂簇的方法:
1.选择最大的簇
2.选择具有最大SSE的簇
3.基于大小和SSE的标准进行选择
........
参考资料:《数据挖掘导论》----- Pang-Ning Tan等著 ----- 范明等译
- 聚类算法----之----(k-means)
- 聚类算法之K-means
- 聚类算法之K-means
- 聚类算法之K-MEANS
- Weka -- 聚类算法之K-means
- 聚类算法 之 k-means
- 聚类算法之K-means
- Weka -- 聚类算法之K-means
- Weka -- 聚类算法之K-means
- Hadoop之K-Means聚类算法
- Hadoop之K-Means聚类算法
- Hadoop之K-Means聚类算法
- 聚类算法之K-means
- 聚类算法之K-Means
- 聚类之K-means算法
- scikit-learn学习之K-means聚类算法与 Mini Batch K-Means算法
- K-means聚类算法(JerryLead)
- 聚类算法(1) ---- K-Means
- 图像锐化
- markedTextRange
- DataTables自定义表格宽度(设置横向滚动条)
- 数据库简介
- tomcat 配置ssl/https 证书问题(一)- No enum constant org.apache.tomcat.util.net.SSLHostConfigCertificate.Typ
- 聚类算法----之----(k-means)
- Android Studio 打Jar包和混淆的Jar包
- spring架构解析(一)--IoC容器实现
- Can not read response from server. Expected to read 4 bytes, read 0 bytes
- 快速幂
- git 本地仓库和远程仓库及本地分支和远程分支
- IntelliJ IDEA快捷键(常用)
- C#“必须先将当前线程设置为单个线程单元(STA)模式方可进行OLE调用”异常解决方案
- Finding a Point on a Bézier Curve: De Casteljau's Algorithm