面试题:K-Means聚类的执行过程?优缺点?有哪些改进的模型?
(1)简述K-means聚类的执行过程
数据预处理,如归一化、离散点处理即可。
随机选取K个簇中心
定义代价函数(可以将簇内平方和函数作为代价函数)
定义迭代次数t,重复下面过程直到代价函数收敛(或簇心不发生变化、或达到迭代次数)
对于每一个样本x,将其分配到距离最近的簇
对于每一个簇,计算簇内均值,作为该类簇新的中心。
(3) K-means算法有哪些优缺点?
优点
- 对于大数据,计算复杂度是O(NKt),接近与线性,其中N是数据的样本数,K是簇 心数,t是迭代的轮次数。
- 局部最优也能满足大部分的聚类需求
缺点
需要人工预先确定初始K值,且该值和真实的数据分布未必吻合
K-means只能收敛到局部最优,效果收到初始值的影响很大
容易收到噪点的影响
样本点只能被划分到单一的类中
(4)有哪些改进的模型?
针对K-means的缺点,目前也有很多改进模型,主要包括如下两种:
- K-means ++
k-means++主要是在初始选取K个簇心上做出了改进。假设已经选取了n个初始聚类中心,则在选择n+1个聚类中心时,距离当前n个聚类中心越远的点会有更好的概率被选择为第n+1类聚类的中心。聚类中心当然是互相隔离的越远越好,之后的算法步骤同于k-means。
- ISODATA
ISODATA算法也是在K值上面改进,它在k-means算法的基础上增加了两个操作,第一是分裂操作,增加聚类中心数,即当属于某个类别的样本数过多时、分散程度较大时,把该类别分为两个子类别。第二是合并操作,对应着减少聚类中心数,即当属于某个类别的样本数过少时,把该类别去除。