12月主要看了《数据挖掘概念与技术》第十章、第六章、第八章、第十一章,并用Python实现了kMeans算法。
一、《数据挖掘概念与技术》
第十章(2、3、4、5小节)
讲了聚类分析的几种方法:划分方法、层次方法、基于密度的方法、基于网格的方法。
1.划分方法
(1)k-均值:一种基于形心的技术
不能保证k-均值方法收敛于全局最优解,并且它常常终止于一个局部最优解。结果可能依赖于初始簇中心的随机选择。实践中,为了得到好的结果,通常以不同的初始簇中心,多次运行k-均值算法。算法复杂度是O(nkt),n是对象总数,k是簇数,t是迭代次数。通常,k<<n并且t<<n.因此,对于处理大数据集,该算法是相对可伸缩和有效的。不适合于发现非凸形状的簇,或者大小差别很大的簇。它对噪声和离群点敏感。平方误差函数的使用更是严重恶化了这一影响。
(2)k-中心点:一种基于代表对象的技术
当存在噪声和离群点时,k-中心点方法比k-均值更鲁棒,这是因为中心点不像均值那样容易受离群点或其他极端值影响。然而,k-中心点算法的每次迭代的复杂度是O(k(n-k)2).当n和k的值较大时,这种计算开销变得相当大,远高于k-均值方法。
这两种方法都要求用户指定簇数k。k-中心点算法在小型数据集上运行良好,但是不能很好的用于大数据集。这时,可以使用一种称作CLARA(Clustering LARge Applications,大型应用聚类)的基于抽样的方法。它使用数据集的一个随机样本。用PAM方法用样本计算最佳中心点,复杂度为O(ks2+k(n-k)),s是样本的大小。它的有效性依赖于样本的大小。如果最佳的抽样中心点都远离最佳的中心点,则CLARA不可能发现好的聚类。如果一个对象是k个最佳中心点之一,但它在抽样时没有被选中,则CLARA将永远不能找到最佳聚类。随机算法CLARANS(Clustering Large Application based upon RANdomized Search,基于随机搜索的聚类大型应用)可以改进CLARANS的聚类质量和可伸缩性,它能在使用样本得到聚类的开销和有效性之间权衡。
2.层次方法
层次聚类方法将