聚类就是对大量未知标注的数据集,按照数据内部存在的数据特征将数据集划分为多个不同的类别,使类别内的数据比较相似,类别之间的数据相似度比较小,属于无监督学习。聚类算法的重点是计算样本项之间的相似度,有时候也称为样本间的距离。
1、均一性、完整性、V-measure
均一性(类似于精确率)p:一个簇中只包含一个类别的样本,则满足均一性。其实也可以认为就是正确率(每个 聚簇中正确分类的样本数占该聚簇总样本数的比例和)
完整性(类似于召回率)r:同类别样本被归类到相同簇中,则满足完整性;每个聚簇中正确分类的样本数占该
类型的总样本数比例的和
V-measure:均一性和完整性的加权平均
2、轮廓系数
簇内不相似度:计算样本i到同簇其它样本的平均距离为ai,应尽可能小。
簇间不相似度:计算样本i到其它簇Cj的所有样本的平均距离bij,应尽可能大。
轮廓系数:si值越接近1表示样本i聚类越合理,越接近-1,表示样本i应该分类到 另外的簇中,近似为0,表示样本i应该在边界上;所有样本的si的均值被成为聚类结果的轮廓系数。
假设输入样本为T= X1,X2,...,Xm ;则算法步骤为(使用欧几里得距离公式):
因为更新每个类别的中心点 aj 为隶属该类别的所有样本的均值,所以方法叫做K-均值算法。推导如下:
1) 记K个簇中心分别为 a1,a2,...ak ;每个簇的样本数量为 N1,N2,...,NK ;
2) 使用平方误差作为目标函数(使用欧几里得距离),公式为:
为了解决K-means对离群点敏感的问题,不是用均值来决定簇中心点,而是用中值来决定中心点。
为了解决K-Means算法对初始簇心比较敏感的问题:
算法缺点:由于聚类中心点选择过程中的内在有序性,在扩展方面存在着性能方面的 问题(第k个聚类中心点的选择依赖前k-1个聚类中心点的值)
为了解决K-means需要设定K值,能够缓解K-Means算法对于初始聚类中心点敏感的问题
Canopy算法
聚类的结果作为初值再进行k-means聚类。
层次聚类方法对给定的数据集进行层次的分解,直到满足某种条件为止,传统的层次聚类算法主要分为两大类算法:自下而上的凝聚类算法,自上而下的分裂类算法。
采用自底向上的策略。最 初将每个对象作为一个簇,然后这些簇根据某些准则被一步一步合并,两个簇间的距离可 以由这两个不同簇中距离最近的数据点的相似度来确定;聚类的合并过程反复进行直到所 有的对象满足簇数目。
优化算法:
BIRCH算法(平衡迭代削减聚类法):聚类特征使用3元组进行一个簇的相关信息, 通过构建满足分枝因子和簇直径限制的聚类特征树来求聚类,聚类特征树其实是 一个具有两个参数分枝因子和类直径的高度平衡树;分枝因子规定了树的每个节 点的子女的最多个数,而类直径体现了对这一类点的距离范围;非叶子节点为它 子女的最大特征值;聚类特征树的构建可以是动态过程的,可以随时根据数据对 模型进行更新操作。
优缺点:
适合大规模数据集,线性效率; 但只适合分布呈凸形或者球形的数据集、需要给定聚类个数和簇之间的相关参数;
CURE算法(使用代表点的聚类法):该算法先把每个数据点看成一类,然后合并距 离最近的类直至类个数为所要求的个数为止。但是和AGNES算法的区别是:取 消了使用所有点或用中心点+距离来表示一个类,而是从每个类中抽取固定数量、 分布较好的点作为此类的代表点,并将这些代表点乘以一个适当的收缩因子,使 它们更加靠近类中心点。代表点的收缩特性可以调整模型可以匹配那些非球形的 场景,而且收缩因子的使用可以减少噪音对聚类的影响
优缺点:
能够处理非球形分布的应用场景 采用随机抽样和分区的方式可以提高算法的执行效率
采用自顶向下的策略。首先将所 有对象置于一个簇中,然后按照某种既定的规则逐渐细分为越来越小的簇(比如最大的欧式 距离),直到达到某个终结条件(簇数目或者簇距离达到阈值)。
密度聚类方法的指导思想: 只要样本点的密度大于某个阈值,则将该样本添加到 最近的簇中,这类算法可以克服基于距离的算法只能发现凸聚类的缺点,可以发现任意形状的聚类,而且对噪声数据不敏感。但计算复杂度高,计算量大。
一个比较有代表性的基于密度的聚类算法,相比于基于划分的聚类方法和层次聚类方法,DBSCAN算法将簇定义为密度相连的点的最大集合,能够将足够高密度 的区域划分为簇,并且在具有噪声的空间数据商能够发现任意形状的簇。DBSCAN算法的核心思想是:用一个点的邻域内的邻居点数衡量该点所在空间的密度,该算法可以找出形状不规则的簇,而且聚类的时候事先不需要给定簇的数量。
算法基于密度的思想引入划分聚类中,使用密度而不是初始点作为考察簇归属情况的依据,能够自动确定簇数量并发现任意形状的簇,另外MDCA一般不保留噪声,因此也避免了阈值选择不当情况下造成的对象丢弃情况。MDCA算法的基本思路是寻找最高密度的对象和它所在的稠密区域,MDCA算法在原理上来讲,和密度的定义没有关系,采用任意一种密度定义公式均可,一般情况下采用DBSCAN算法中的密度定义方式。