k-means++ The Advantages of Careful Seeding
第三十一次写博客,本人数学基础不是太好,如果有幸能得到读者指正,感激不尽,希望能借此机会向大家学习。由于K-Means++是标准K-Means的一种优化算法,因此这篇文章作为原型聚类中介绍的第六篇,其他有关于原型聚类算法的讨论可以移步到该类算法的导航页《原型聚类算法综述(原型聚类算法开篇)》。
传统K-Means聚类方法的缺点?
在K-Means聚类问题中,给定聚类数量 k k k和数据集 χ ∈ R n × d \chi\in{\Bbb{R}^{n\times{d}}} χ∈Rn×d,聚类目标是要最小化目标函数 ϕ \phi ϕ,该函数计算数据集中所有样本点与其最近的质心之间距离(2-范数)的平方和(见式(1)),在这篇文章中,该函数也被做为用来表征聚类性能的“势函数”(Potential Function)。假设, k k k个簇质心的集合 C = { c 1 , c 2 , . . . , c k } C=\{\mathbf{c}_1,\mathbf{c}_2,...,\mathbf{c}_k\} C={ c1,c2,...,ck},那么势函数可以表示为,
传统K-Means聚类方法选择初始簇质心的方法是,在数据集 χ \chi χ进行均匀随机采样,这种算法虽然相较于其他解决上述NP-hard问题的算法,在时间复杂度和精度上都有较好的保证,但是实验证明该算法的速度和时间复杂度的改善是以聚类精度为代价的。另外,假设K-Means问题的最优聚类集合是 C o p t C_{opt} Copt, ϕ o p t \phi_{opt} ϕopt是 C o p t C_{opt} Copt对应的最优势函数,传统K-Means聚类产生的聚类集合是 C C C, ϕ \phi ϕ是 C C C对应的最优势函数,由于 ϕ ϕ o p t \frac{\phi}{\phi_{opt}} ϕoptϕ的上界并不依赖于参数 n n n和 k k k的取值,因此在很多情况下该算法会得到较差的聚类效果。
之前的关于改善传统K-Means聚类的研究?
尽管传统K-Means算法有精度上的限制,但是由于他使用方便而且具有客观的收敛速度,至今仍被广泛应用,很多相关学者均提出了各种提升该算法收敛速度的方法,这里主要讨论提升算法精度的相关研究成果。
在理论界,Lnaba等人首先提出了时间复杂度为 O ( n k d ) O\left(n^{kd}\right) O(nkd)、具有精确聚类结果的改进算法。至此,许多近似的研究成果不断涌现,研究人员开始致力于观察聚类问题的内部结构,但是这类改进算法的时间复杂度大多是 k k k的指数级甚至更糟。随后,Kanungo等人提出了一种时间复杂度为 O ( n 3 ε − d ) O\left(n^{3}\varepsilon^{-d}\right) O(n3ε−d)、近似聚类精度为 O ( 9 + ε ) O\left(9+\varepsilon\right) O(9+ε)(这里“近似聚类精度”是指 ϕ ϕ o p t \frac{\phi}{\phi_{opt}} ϕoptϕ)的改进算法,但是注意到该算法的时间复杂度与原始数据集所在的空间维度 d d d有关,只有丢弃算法中的所有近似性担保时,才能忽略 d d d对时间复杂度的影响,但是这也会大大降低算法的聚类精度。由Mattu和Plaxton等人提出的改进算法虽然具有 O ( 1 ) O\left(1\right) O(1)的近似聚类精度, O