【数据挖掘】十大算法之K-Means K均值聚类算法

在这里插入图片描述

1 Kmeans步骤

(1)数据预处理,如归一化、离群点处理等
(2)随机选取K个簇中心,记为 u 1 0 , u 2 0 . . . u k 0 u_1^{0},u_2^{0}...u_k^{0} u10,u20...uk0
(3)定义代价函数,表示在一个簇内,各个样本距离所属簇中心点的误差平方和
J ( c , u ) = ∑ i = 1 M ∣ ∣ x i − u c i ∣ ∣ 2 J(c,u) = \sum_{i=1}{M}||x_i-u_{c_i}||^2 J(c,u)=i=1Mxiuci2,其中 x i x_i xi代表第i个样本, c i c_i ci x i x_i xi所属的簇, u c i u_{c_i} uci代表簇对应的中心点,M是样本数。刻画了簇内样本围绕簇均值向量的紧密程度。
(4)令 t = 0 , 1 , 2 , . . . t=0,1,2,... t=0,1,2,...为迭代步数,重复下面过程直到J收敛。
在这里插入图片描述

2 kmeans损失函数

损失函数是各个样本距离所属簇中心点的误差平方和
J ( c , u ) = ∑ i = 1 M ∣ ∣ x i − u c i ∣ ∣ 2 J(c,u) = \sum_{i=1}{M}||x_i-u_{c_i}||^2 J(c,u)=i=1Mxiuci2,其中 x i x_i xi代表第i个样本, c i c_i ci x i x_i xi所属的簇, u c i u_{c_i} uci代表簇对应的中心点,M是样本数。

3 优缺点

(1)缺点

  • 受初始簇心值和离群点的影响,每次的运行结果不稳定
  • 结果通常不是全局最优
  • 无法很好地解决数据簇样本数量分布差别较大的情况(如一个簇样本10,一个簇样本是100倍)
  • 不太适用于离散分类,样本点只能被划分到单一的类中

(2)优点

  • 对于大数据,计算复杂度是O(NKt),接近与线性,其中N是数据的样本数,K是簇 心数,t是迭代的轮次数。
  • 局部最优也能满足大部分的聚类需求

4 如何调优和改进

(1)数据归一化和离群点处理

  • 均值和方差打的维度对数据的聚类结果产生决定性的影响,未做归一化处理和统一单位的数据是无法直接参与运算和比较的。
  • 离群点和少量的噪声数据会对均值产生交大的影响,导致中心偏移

(2)合理的选择K值
评价指标函数有误差平方和SSE和轮廓系数,通过可视化,采用手肘法去判断最佳的K值
(3)采用核函数
称为核K均值算法,是核聚类方法的一种,主要思想是通过一个非线性映射,将输入空间中的数据点映射到高位的特征空间中,并在新的特征空间中聚类。非线性映射增加了数据点线性可分的概率,从而在经典的聚类算法失效的情况下,通过引入核函数可以达到更为准确的聚类结果。

5 改进的算法

(1)Kmeans++
随机选择第一个簇心,则在选取之后簇心的时候,距离当前n个簇心越远的点有更高被选为第n+1的簇心。
(2)ISODATA算法
当K值不确定的时候,可以使用ISODATA算法。全称是迭代自组织数据分析法。
算法思想是当属于某个类别的样本过少时,把该类别去除;当属于某个类别的样本数过多、分散成都较大时,把该类别分为两个子类别。在K均值上增加了两个操作,一个是分裂操作,对应增加聚类中心数,二是合并操作,对应减少聚类重心数。

缺点是:需要指定的参数比较多。有四个,分别是

  • 预期的聚类中心数目K
  • 每类所要求的最小样本数目 N m i n N_{min} Nmin,用于类别删除。
  • 最大方差Sigma。用于控制某个类别中样本的分散程度,用于类别分裂。
  • 两个聚类重心之间所允许的最小距离 D m i n D_{min} Dmin

猜你喜欢

转载自blog.csdn.net/weixin_43935696/article/details/124730942