k-means的这三种改进都属于“硬聚类”,而软聚类是与之对应的每个样本是以一定概率被分到某一类别中去的。
(1)k-means++:原始的k-means算法最初是随机的从原始数据集中选取k个节点作为初始聚类中心,而k-means对初始聚类中心十分敏感,不同的初始聚类中心会得到不同的聚类结果,而k-means++按照如下思路进行选取k个聚类中心:①:选取一个初始聚类中心;②:选取距离这个聚类中心越远的点会有更高的概率被选为第2个聚类中心;③:重复前面两部的操作。
(2)ISODATA算法:全称是迭代自组织数据分析算法:K-means的k值是预先确定的,并在整个算法中无法更改,而ISODATA就是针对这个问题提出改进的,他的思想是:当属于某一类的样本数太少时就把这个类去除,当属于某个类别的样本个数过多、分散程度较大时把这个类分为两个子类。
(3)Kernel k-means:传统的k-means是利用欧式距离进行样本间的相似度量,而不是所有数据都适用于这种度量方式。这里采用的是核函数的思想将所有样本映射到另外一个特征空间进行聚类,使效果得到改善。