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

Posted Better Bench

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据挖掘十大算法之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=1M||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=1M||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
创作打卡挑战赛 赢取流量/现金/CSDN周边激励大奖

以上是关于数据挖掘十大算法之K-Means K均值聚类算法的主要内容,如果未能解决你的问题,请参考以下文章

十大经典数据挖掘算法之k-means

聚类算法之K均值算法(k-means)的Python实现

聚类算法实现流程

k-means聚类算法python实现,导入的数据集有啥要求

k-means均值聚类算法(转)

聚类算法K-均值聚类(K-Means)算法