1。聚类的基本概念1.1定义聚类是数据挖掘中的一个概念,是将一个数据集按照一定的标准(如距离)划分为不同的类或簇,使得同一簇中数据对象的相似度为尽可能大,不在同一个簇中的数据对象的差异也尽可能大。也就是说,经过聚类后,同一类的数据尽可能聚在一起,不同类的数据尽可能分开。1.2聚类和分类的区别聚类(clustering),简单的说就是把相似的事物归为一组。聚类的时候,我们不关心某个类是什么。我们需要达到的目标是将相似的事物组合在一起。因此,一个聚类算法通常只需要知道如何计算相似度就可以开始工作,所以聚类通常不需要使用训练数据进行学习,这在机器学习中称为无监督学习(unsupervisedlearning)。分类(classification),对于一个分类器,你通常需要告诉它一些“这个东西被归为某一类”的例子。理想情况下,一个分类器会从它得到的训练集中“学习”,从而具备对数据进行分类的能力,这种提供训练数据的过程通常称为监督学习(supervisedlearning)。1.3聚类过程的数据准备:包括特征标准化和降维;特征选择:从初始特征中选择最有效的特征,存储在一个向量中;特征提取:通过对选取的特征进行变换形成新的特征;聚类(或分组):首先选择合适的特征类型的某个距离函数(或构造新的距离函数)来衡量接近度,然后进行聚类或分组;聚类结果评价:指聚类评价主要有三种:外部效度评价、内部效度评价和相关性检验评价。1.4衡量聚类算法优劣的标准处理大数据集的能力;能够处理任意形状,包括有间隙的嵌套数据;算法处理的结果是否与数据输入的顺序有关,也就是说算法是否独立于数据输入的顺序;处理数据噪声的能力;是否需要提前知道集群的数量,是否需要用户提供领域知识;算法处理具有多种属性的数据的能力,即对数据的维度是否敏感。2.聚类方法的分类主要分为层次聚类算法、分区聚类算法、基于密度的聚类算法、基于网格的聚类算法、基于模型的聚类算法等。2.1层次聚类算法,又称树聚类算法,通过层次结构重复拆分或聚合数据。典型的有BIRCH算法、CURE算法、CHAMELEON算法、序列数据粗聚类算法、组间平均算法、最远近邻算法、Neares近邻算法等。典型的凝聚层次聚类:先把每个对象看成一个簇,然后合并这些原子簇变成越来越大的簇,直到所有对象都在一个簇中,或者满足某个终止条件。算法流程:将每个对象视为一个类,计算每对之间的最小距离;将距离最小的两个类合并为一个新类;重新计算新类与所有类之间的距离;重复2,3,直到所有类最终合并为一个类。2.2划分聚类算法预先指定簇数或簇中心数,迭代逐步减小目标函数误差值直至收敛,得到最终结果。K-means、K-modes-Huang、K-means-CP、MDS_CLUSTER、Featureweightedfuzzyclustering、CLARANS等经典K-means算法流程:随机选取k个对象,每个对象初始代表一个簇的中心;对于每个剩余的对象,根据它到每个簇中心的距离,将其分配到最近的簇中;重新计算每个簇的平均值并更新到新的簇中心;重复2和3,直到准则函数收敛。2.3基于模型的聚类算法为每个聚类假设一个模型,并找到数据与给定模型的最佳拟合。同一“类”的数据属于同一概率分布,即假设数据是按照底层概率分布生成的。主要有基于统计模型的方法和基于神经网络模型的方法,特别是基于概率模型的方法。基于模型的算法可以通过构建反映数据点空间分布的密度函数来定位集群。基于模型的聚类试图优化给定数据和某些数据模型之间的拟合。SOM神经网络算法:该算法假设输入对象中存在某种拓扑结构或顺序,可以实现从输入空间(n维)到输出平面(2维)的降维映射。大脑处理有很强的理论联系。SOM网络由输入层和输出层组成。输入层对应一个高维输入向量,输出层由一系列排列在二维网格上的有序节点组成,输入节点和输出节点通过权向量连接。在学习过程中,找到距离最短的输出层单元,即获胜单元,并进行更新。同时更新相邻区域的权重,使输出节点保持输入向量的拓扑特征。算法流程:初始化网络,给输出层每个节点的权值赋初值;从输入样本中随机选择输入向量,找到与输入向量距离最小的权重向量;定义获胜单元,调整获胜单元附近的权重,使其接近输入向量;提供新样本,训练;缩小邻域半径,降低学习率,重复直到小于允许值,输出聚类结果。2.4基于密度的聚类算法主要思想:只要相邻区域的密度(物体或数据点的数量)超过一定阈值,就会继续聚类。它擅长解决不规则形状的聚类问题,广泛应用于空间信息处理。SGC、GCHL、DBSCAN算法、OPTICS算法、DENCLUE算法。DBSCAN:它对集中区域效果更好。为了发现任意形状的聚类,该方法将聚类视为数据空间中由低密度区域分隔的密集对象区域;基于高密度连接区域的基于密度的聚合。将具有足够高密度的区域分类为聚类并在嘈杂的空间数据中发现任意形状的聚类的一类方法。2.5基于网格的聚类算法基于网格的方法将对象空间量化为有限数量的单元,形成网格结构。所有聚类操作都在这个网格结构(即量化空间)上执行。该方法的主要优点是处理速度快,与数据对象的数量无关,只与量化空间中每个维度的单元数量有关。但该算法效率的提高是以牺牲聚类结果的准确性为代价的。通常与基于密度的算法结合使用。代表算法有STING算法、CLIQUE算法、WAVE-CLUSTER算法等。2.6新发展的方法是基于约束方法:现实世界中的聚类问题往往有多种约束。由于无法有效利用动态约束,该方法无法得到广泛推广应用。这里的约束可以是对个体对象的约束,也可以是对聚类参数的约束,这些都来自于相关领域的经验知识。该方法的一个重要应用在于二维空间数据与障碍物数据的聚类。COD(ClusteringwithOb2structedDistance)是处理这类问题的典型算法。它的主要思想是用两点间的障碍物距离代替一般的欧几里得距离来计算它们之间的最小距离。基于模糊的聚类方法:基于模糊集理论的一种聚类方法,样本以一定的概率属于某一类。典型的有基于目标函数的模糊聚类方法、基于相似关系和模糊关系的方法、基于模糊等价关系的传递闭包方法、基于模糊图论的最小生成树方法、基于数据集的凸聚类方法。分解、动态规划、难辨关系等方法。FCM模糊聚类算法过程:对数据矩阵进行标准化;建立模糊相似度矩阵并初始化隶属度矩阵;算法开始迭代,直到目标函数收敛到最小值;最终的隶属度矩阵根据迭代结果确定数据所属的类,并显示最终的聚类结果。基于粒度的聚类方法:基于粒度的原理,研究还不完善。量子聚类:受物理学中量子机制和特性的启发,可以利用量子理论解决聚类记录依赖于初值,需要指定类别数的问题。一个很好的例子是基于相关点和统计机制的Pott自旋提出的量子聚类模型。它将聚类问题视为一个物理系统。并且很多实例表明,该算法对于传统聚类算法无法做到的几个聚类问题都取得了比较满意的结果。核聚类:核聚类方法增加了样本特征的优化过程,利用Mercer核将输入空间的样本映射到高维特征空间,在特征空间进行聚类。核聚类方法具有普适性,性能优于经典聚类算法。通过非线性映射可以更好的区分、提取和放大有用的特征,从而实现更准确的聚类;同时,算法的收敛速度也更快。当经典聚类算法失败时,内核聚类算法仍然可以得到正确的聚类。代表性算法有SVDD算法和SVC算法。谱聚类:首先根据给定的样本数据集,定义一个描述成对数据点相似性的亲和矩阵,并计算矩阵的特征值和特征向量,然后选择合适的特征向量对不同的数据点进行聚类。谱聚类算法最初应用于计算机视觉、超大规模集成电路设计等领域,最近开始应用于机器学习,并迅速成为国际机器学习领域的研究热点。谱聚类算法是基于图论中的谱图理论。其实质是将聚类问题转化为图的最优划分问题。它是一种点到聚类算法。聚类算法简要分类结构图常用算法特点对比表3.简单代码示例4.学习数据聚类算法属于机器学习或数据挖掘领域,类别比较少,一般算作机器学习或数据挖掘的一部分中的一类算法,可以结合机器学习来学习。ScikitLearn:基于NumPy和SciPy的Python机器学习库。StanfordMachineLearning:斯坦福的机器学习课程,在Coursera上看的,这门课是AndrewNg讲解的,讲解的很好。AListofDataScienceandMachineLearningResources:由专家组织的学习资源列表。
