r k-means 分类结果_Kmeans

kmeans

一. 算法原理

从数据集中随机选择k个聚类样本作为初始的聚类中心,然后计算数据集中每个样本到这k个聚类中心的距离,并将此样本分到距离最小的聚类中心所对应的类中。将所有样本归类后,对于每个类别重新计算每个类别的聚类中心即每个类中所有样本的质心,重复以上操作直到聚类中心不变为止。

kmeans的计算方法如下:

1 随机选取k个中心点

2 遍历所有数据,将每个数据划分到最近的中心点中

3 计算每个聚类的平均值,并作为新的中心点

4 重复2-3,直到这k个中线点不再变化(收敛了),或执行了足够多的迭代

伪代码

选择k个点作为初始质心。

repeat

将每个点指派到最近的质心,形成k个簇

重新计算每个簇的质心

until 质心不发生变化

二.k-means算法缺点

1、需要提前指定k;值的选取也会直接影响聚类结果,最优聚类的k值应与样本数据本身的结构信息相吻合,而这种结构信息是很难去掌握,因此选取最优k值是非常困难的。

2、k-means算法对种子点的初始化非常敏感;k-means是局部最优的,容易受到初始质心的影响。

三.确定K值方法

法1:(轮廓系数)在实际应用中,由于Kmeans一般作为数据预处理,或者用于辅助分聚类贴标签。所以k一般不会设置很大。可以通过枚举,令k从2到一个固定值如10,在每个k值上重复运行数次kmeans(避免局部最优解),并计算当前k的平均轮廓系数,最后选取轮廓系数最大的值对应的k作为最终的集群数目。

r k-means 分类结果_Kmeans_第1张图片

法2:(Calinski-Harabasz准则)

3724fef15bbed01ce434052691b49794.png

其中SSB是类间方差,

fcf585e908965450a9c61f8e56cd1440.png

m为所有点的中心点,mi为某类的中心点;

SSW是类内方差,

c5cb71673751dd6476f188049f07b67b.png

(N-k)/(k-1)是复杂度;

VRCk比率越大,数据分离度越大。

三.k-means改进

k-means++算法

k-means++是选择初始种子点的一种算法,其基本思想是:初始的聚类中心之间的相互距离要尽可能的远。

方法如下:

1.从输入的数据点集合中随机选择一个点作为第一个聚类中心

2.对于数据集中的每一个点x,计算它与最近聚类中心(指已选择的聚类中心)的距离D(x)

3.选择一个新的数据点作为新的聚类中心,选择的原则是:D(x)较大的点,被选取作为聚类中心的概率较大

4.重复2和3直到k个聚类中心被选出来

5.利用这k个初始的聚类中心来运行标准的k-means算法

第2、3步选择新点的方法如下:

a.对于每个点,我们都计算其和最近的一个“种子点”的距离D(x)并保存在一个数组里,然后把这些距离加起来得到Sum(D(x))。

b.然后,再取一个随机值,用权重的方式来取计算下一个“种子点”。这个算法的实现是,先用Sum(D(x))乘以随机值Random得到值r,然后用currSum += D(x),直到其currSum>r,此时的点就是下一个“种子点”。原因见下图:

deca5b2fd1c36ff75881ba6904155ced.png

假设A、B、C、D的D(x)如上图所示,当算法取值Sum(D(x))*random时,该值会以较大的概率落入D(x)较大的区间内,所以对应的点会以较大的概率被选中作为新的聚类中心。

四.聚类性能度量

我们通常按照一个标准来分析聚类之后的结果,简单来说这个标准是“簇内相似度高,簇间相似度低”,下面我们用一堆“指数”,“系数”来数学化引号里面的内容。

性能度量分类:

聚类性能度量的主要分为两类,一类是将聚类结果与某个“参考模型”进行比较,成为“外部指标”;另一类是直接考察聚类结果而不用任何参考模型,称为“内部指标”。

外部指标

“外部指标”通常有Jaccard系数(Jaccard Coefficient,简称JC)、FMI系数(Fowlkes and Mallows Index,简称FMI)、Rand指数(Rand Index,简称RI)。

r k-means 分类结果_Kmeans_第2张图片

内部指标

常用的内部指标有DB指数(Davies-Bouldin Index,简称DBI)和Dunn指数(Dunn Index,简称DI)。

四.kmeans与EM关系

https://www.cnblogs.com/rong86/p/3517573.html

K-means聚类算法可认为是聚类算法中最简单的一种了。

K-means面对的第一个问题是如何保证收敛,前面的算法中强调结束条件就是收敛,可以证明的是K-means完全可以保证收敛性。下面我们定性的描述一下收敛性,我们定义畸变函数(distortion function)如下:

794cedd9c9b5c4dddca8b443d721017f.png

J函数表示每个样本点到其质心的距离平方和。

K-means是要将J调整到最小。

r k-means 分类结果_Kmeans_第3张图片

r k-means 分类结果_Kmeans_第4张图片

r k-means 分类结果_Kmeans_第5张图片

r k-means 分类结果_Kmeans_第6张图片

你可能感兴趣的:(r,k-means,分类结果)