聚类算法(K | 您所在的位置:网站首页 › kmeans算法的例题 › 聚类算法(K |
一、聚类算法基本概念
1. 定义:
聚类就是按照某个特定标准(如距离准则)把一个数据集分割成不同的类或簇,使得同一个簇内的数据对象的相似性尽可能大。即聚类后同一类的数据尽可能聚集到一起,不同数据尽量分离。简单来讲就是把相似的东西分到一起。 2. 无监督学习我们一定要区分开聚类算法和分类算法。分类算法是训练一个分类器,根据已知的事物和对应的标签进行学习、训练,属于有监督学习。而聚类算法仅仅是把相似的事物分成一组,没有标签,属于无监督学习。 3. 常见的聚类算法主要的聚类算法可以划分为如下几类:(1)划分方法 (2)层次方法 (3)基于密度的方法 (4)基于网格的方法 (5)基于模型的方法。本讲主要介绍以下三种聚类算法👇: K-means(又称k-均值或k-平均)聚类算法。算法思想就是首先随机确定k个中心点作为聚类中心,然后把每个数据点分配给最邻近的中心点,分配完成后形成k个聚类,计算各个聚类的平均中心点,将其作为该聚类新的类中心点,然后重复迭代上述步骤直到分配过程不再产生变化。 ① 从D中随机取k个元素,作为k个簇的各自的中心。 ② 分别计算剩下的元素到k个簇中心的相异度,将这些元素分别划归到相异度最低的簇。 ③ 根据聚类结果,重新计算k个簇各自的中心,计算方法是取簇中所有元素各自维度的算术平均数。 ④ 将D中全部元素按照新的中心重新聚类。 ⑤ 重复第4步,直到聚类结果不再变化。 ⑥ 将结果输出。 (3)K-means示例① 假设K=3,首先 3 个中心点被随机初始化,所有的数据点都还没有进行聚类,默认全部都标记为红色,如下图所示: 参考1: 层次聚类是另一种主要的聚类方法,它具有一些十分必要的特性使得它成为广泛应用的聚类方法。它生成一系列嵌套的聚类树来完成聚类。单点聚类处在树的最底层,在树的顶层有一个根节点聚类。根节点聚类覆盖了全部的所有数据点。 可根据其聚类方式划分为:(1)凝聚(自下而上)聚类 (2)分裂(自上而下)聚类。层次凝聚的代表是AGNES算法。层次分裂的代表是DIANA算法。接下来主要介绍以下AGNES算法。 (2)AGNES算法AGNES (AGglomerative NESting)算法最初将每个对象作为一个簇,然后这些簇根据某些准则被一步步地合并。两个簇间的相似度由这两个不同簇中距离最近的数据点对的相似度来确定。聚类的合并过程反复进行直到所有的对象最终满足簇数目。 SingleLinkage又叫做 nearest-neighbor ,就是取两个类中距离最近的两个样本的距离作为这两个集合的距离,也就是说,最近两个样本之间的距离越小,这两个类之间的相似度就越大。 注:这个方法有一个很大的问题,当两个簇整体距离很远,但是某两个点离得很近,这会导致模型认为两个簇很想相近,导致误判。而且这样得到的簇也会很松散。 ② CompleteLinkageCompleteLinkage是 Single Linkage 的反面极端,取两个集合中距离最远的两个点的距离作为两个集合的距离。 注:这个方法的问题是,当两个簇整体距离很近,但是某两点离得很远,就永远不会合并成一个簇,导致误判。 ③ Average-linkageAverage-linkage就是把两个集合中的点两两的距离全部放在一起求一个平均值,相对也能得到合适一点的结果。 接下来我们利用层次聚类和Average-linkage判定相似性的方法来看一个例题吧👇: 密度聚类方法的指导思想是,只要一个区域中的点的密度大于某个域值,就把它加到与之相近的聚类中去。这类算法能克服基于距离的算法只能发现“类圆形”的聚类的缺点,可发现任意形状的聚类,且对噪声数据不敏感。但计算密度单元的计算复杂度大,需要建立空间索引来降低计算量,且对数据维数的伸缩性较差。 这类方法需要扫描整个数据库,每个数据对象都可能引起一次查询,因此当数据量大时会造成频繁的I/O操作。代表算法有:(1)DBSCAN (2)OPTICS (3)DENCLUE etc (2)DBSCANDBSCAN(Density-Based Spatial Clustering of Applications with Noise)一个比较有代表性的基于密度的聚类算法。与划分和层次聚类方法不同,它将簇定义为密度相连的点的最大集合,能够把具有足够高密度的区域划分为簇,并可在有“噪声”的空间数据库中发现任意形状的聚类。了解DBSCAN,务必熟悉几个概念: ① 对象的ε-临域:给定对象在半径ε内的区域。 ② 核心对象:如果一个对象的ε-临域至少包含最小数目MinPts个对象,则称该对象为核心对象。 例如,在下图中,ε=1cm,MinPts=5,q是一个核心对象: |
CopyRight 2018-2019 实验室设备网 版权所有 |