数据挖掘十大算法之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=1M∣∣xi−uci∣∣2,其中
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=1M∣∣xi−uci∣∣2,其中
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。
以上是关于数据挖掘十大算法之K-Means K均值聚类算法的主要内容,如果未能解决你的问题,请参考以下文章