【机器学习】--层次聚类从初识到应用

一、前述

聚类就是对大量未知标注的数据集,按数据的内在相似性将数据集划分为多个类别,使类别内的数据相似度较大而类别间的数据相似度较小.

数据聚类算法可以分为结构性或者分散性,许多聚类算法在执行之前,需要指定从输入数据集中产生的分类个数。

1.分散式聚类算法,是一次性确定要产生的类别,这种算法也已应用于从下至上聚类算法。

2.结构性算法利用以前成功使用过的聚类器进行分类,而分散型算法则是一次确定所有分类。

结构性算法可以从上至下或者从下至上双向进行计算。从下至上算法从每个对象作为单独分类开始,不断融合其中相近的对象。而从上至下算法则是把所有对象作为一个整体分类,然后逐渐分小。

3.基于密度的聚类算法,是为了挖掘有任意形状特性的类别而发明的。此算法把一个类别视为数据集中大于某阈值的一个区域。DBSCAN和OPTICS是两个典型的算法。

4.层次聚类,是一种很直观的算法。顾名思义就是要一层一层地进行聚类,可以由上向下把大的类别(cluster)分割,叫作分裂法;也可以由下向上对小的类别进行聚合,叫作凝聚法;但是一般用的比较多的是由下向上的凝聚方法。

二、具体

1、大致过程:

层次聚类方法对给定的数据集进行层次的分解,直到某种条件满足为止。
在已经得到距离值之后,元素间可以被联系起来。通过分离和融合可以构建一个结构。传统上,表示的方法是树形数据结构,

层次聚类算法要么是自底向上聚集型的,即从叶子节点开始,最终汇聚到根节点;要么是自顶向下分裂型的,即从根节点开始,递归的向下分裂。

2、凝聚层次聚类:

首先将每个对象作为一个簇,然后合并这些原子簇为越来越大的簇,直到某个终结条件被满足。

AGNES算法(自底向上)(用的多些)

所谓从下而上地合并cluster,具体而言,就是每次找到距离最短的两个cluster,然后进行合并成一个大的cluster,直到全部合并为一个cluster

整个过程就是建立一个树结构,类似于下图。

一开始每个数据点独自作为一个类,它们的距离就是这两个点之间的距离。而对于包含不止一个数据点的cluster,就可以选择多种方法了。最常用的,就是average-linkage,即计算两个cluster各自数据点的两两距离的平均值。

凝聚法指的是初始时将每个样本点当做一个类簇,所以原始类簇的大小等于样本点的个数,然后依据某种准则合并这些初始的类簇,直到达到某种条件或者达到设定的分类数目。

用算法描述:

输入:样本集合D,聚类数目或者某个条件(一般是样本距离的阈值,这样就可不设置聚类数目)
       输出:聚类结果

举例如下:

在平面上有6个点:p0(1,1), p1(1,2), p2(2,2), p3(4,4), p4(4,5), p5(5,6),我现在需要对这6个点进行聚类,对应着上边的步骤我可以这样做:

1.首先每个样本看作是一个类簇,这样我可以得到初始的类簇有6个,分别为c1(p0),c2(p1),c3(p2),c4(p3),c5(p4),c6(p5)
       repeat:
       2.由上边的表可以得到两两类簇间的最小距离(并不是唯一,其他两个类簇间距离也可能等于最小值,但是先选取一个)是1,存在类簇c1和c2之间
       注意:这个类簇间距离的计算方法有许多种。
          (1).就是取两个类中距离最近的两个样本的距离作为这两个集合的距离,也就是说,最近两个样本之间的距离越小,这两个类之间的相似度就越大
          (2).取两个集合中距离最远的两个点的距离作为两个集合的距离
          (3).把两个集合中的点两两的距离全部放在一起求一个平均值,相对也能得到合适一点的结果。
          (4).取两两距离的中值,与取均值相比更加能够解除个别偏离样本对结果的干扰。
          (5).把两个集合中的点两两的距离全部放在一起求和然后除以两个集合中的元素个数
          (6).求每个集合的中心点(就是将集合中的所有元素的对应维度相加然后再除以元素个数得到的一个向量),然后用中心点代替集合再去就集合间的距离

3.合并类簇c1和c2,得到新的聚类结果c1(p0,p1),c3(p2),c4(p3),c5(p4),c6(p5)。
       util:若是我们要求聚成5个类别的话,我们这里就可以结束了。

但是如果我们设定了一个阈值f,要求若存在距离小于阈值f的两个类簇时则将两个类簇合并并且继续迭代,我们又会回到repeat继续迭代从而得到新的聚类结果。

3、分裂层次聚类:

DIANA算法(自顶向下)

首先将所有对象置于一个簇中,然后逐渐细分为越来越小的簇,直到达到了某个终结条件。

分裂法指的是初始时将所有的样本归为一个类簇,然后依据某种准则进行逐渐的分裂,直到达到某种条件或者达到设定的分类数目。用算法描述:

输入:样本集合D,聚类数目或者某个条件(一般是样本距离的阈值,这样就可不设置聚类数目)

输出:聚类结果

    1.将样本集中的所有的样本归为一个类簇;

repeat:

2.在同一个类簇(计为c)中计算两两样本之间的距离,找出距离最远的两个样本a,b;

3.将样本a,b分配到不同的类簇c1和c2中;

4.计算原类簇(c)中剩余的其他样本点和a,b的距离,若是dis(a)<dis(b),则将样本点归到c1中,否则归到c2中;

util: 达到聚类的数目或者达到设定的条件

原文地址:https://www.cnblogs.com/LHWorldBlog/p/8728270.html

时间: 2024-10-09 02:07:29

【机器学习】--层次聚类从初识到应用的相关文章

机器学习-层次聚类(划分聚类)

层次聚类(划分聚类) 聚类就是对大量未知标注的数据集,按照数据内部存在的数据特征将数据集划分为多个不同的类别,使类别内的数据比较相似,类别之间的数据相似度比较小:属于无监督学习. 算法步骤 1.初始化的k个中心点 2.为每个样本根据距离分配类别 3.更新每个类别的中心点(更新为该类别的所有样本的均值) 4.重复上面两步操作,直到达到某个中止条件 层次聚类方法对给定的数据集进行层次的分解,直到满足某种条件为止,传统的层次聚类算法主要分为两大类算法: 凝聚的层次聚类 AGNES算法==>采用自底向上

机器学习之层次聚类

层次聚类 聚类是将样本进行归类形成K个簇,层次聚类是其中的一种方法.它将数据组成一棵聚类树,过程可以是凝聚形式或分裂形式. 核心思想 凝聚是一开始将每个样本当做一个聚类,接着通过计算将距离最近的两个聚类合并,成为新聚类,每次合并聚类总数减少一个,不断循环合并操作,直到所有聚类合并成一个聚类或当聚类数量到达某预定值或当聚类直接距离达到某阀值后停止合并.而分裂则与凝聚相反,一开始将所有样本当做一个聚类,每次分裂一个聚类,直到满足某条件. 算法步骤 计算n个样本两两之间的距离 构造n个簇 找到最近距离

初识聚类算法:K均值、凝聚层次聚类和DBSCAN

原文地址http://blog.sina.com.cn/s/blog_62186b460101ard2.html 这里只是将比较重要的部分转一下 另外还有一篇关于层次聚类的 http://blog.csdn.net/jwh_bupt/article/details/7685809 聚类分析就仅根据在数据中发现的描述对象及其关系的信息,将数据对象分组(簇).其目标是,组内的对象相互之间是相似的,而不同组中的对象是不同的.组内相似性越大,组间差别越大,聚类就越好. 先介绍下聚类的不同类型,通常有以下

Python机器学习——Agglomerative层次聚类

层次聚类(hierarchical clustering)可在不同层次上对数据集进行划分,形成树状的聚类结构.AggregativeClustering是一种常用的层次聚类算法. ??其原理是:最初将每个对象看成一个簇,然后将这些簇根据某种规则被一步步合并,就这样不断合并直到达到预设的簇类个数.这里的关键在于:如何计算聚类簇之间的距离? ??由于每个簇就是一个集合,因此需要给出集合之间的距离.给定聚类簇Ci,CjCi,Cj,有如下三种距离: 最小距离: dmin(Ci,Cj)=minx? i∈C

机器学习--聚类系列--层次聚类

层次聚类 层次聚类(Hierarchical Clustering)是聚类算法的一种,通过计算不同类别数据点间的相似度来创建一棵有层次的嵌套聚类树.在聚类树中,不同类别的原始数据点是树的最低层,树的顶层是一个聚类的根节点.创建聚类树有自下而上合并和自上而下分裂两种方法. 作为一家公司的人力资源部经理,你可以把所有的雇员组织成较大的簇,如主管.经理和职员:然后你可以进一步划分为较小的簇,例如,职员簇可以进一步划分为子簇:高级职员,一般职员和实习人员.所有的这些簇形成了层次结构,可以很容易地对各层次

机器学习(6)之聚类算法(k-means\Canopy\层次聚类\谱聚类)

目录 1 聚类的定义 1.1 距离公式(相似度) 1.2 聚类的思想 2 K-means算法 2.1 K-means算法的思考 2.2 总结 3 二分K-Means算法 4 K-Means++算法 4.1 K-Means||算法 5 Canopy算法 5.1 应用场景 6 Mini Batch K-Means算法 7 层次聚类方法 7.1 AGNES算法中簇间距离 7.2 层次聚类优化算法 8 密度聚类 8.1 DBSCAN算法 8.1.1 基本概念 8.1.2 算法流程 8.1.3 DBSCA

聚类:层次聚类、基于划分的聚类(k-means)、基于密度的聚类、基于模型的聚类

一.层次聚类 1.层次聚类的原理及分类 1)层次法(Hierarchicalmethods)先计算样本之间的距离.每次将距离最近的点合并到同一个类.然后,再计算类与类之间的距离,将距离最近的类合并为一个大类.不停的合并,直到合成了一个类.其中类与类的距离的计算方法有:最短距离法,最长距离法,中间距离法,类平均法等.比如最短距离法,将类与类的距离定义为类与类之间样本的最短距离. 层次聚类算法根据层次分解的顺序分为:自下底向上和自上向下,即凝聚的层次聚类算法和分裂的层次聚类算法(agglomerat

聚类算法--K-means和k-mediods/密度聚类/层次聚类

目录 简述 K-means聚类 密度聚类 层次聚类 一.简述 聚类算法是常见的无监督学习(无监督学习是在样本的标签未知的情况下,根据样本的内在规律对样本进行分类). 在监督学习中我们常根据模型的误差来衡量模型的好坏,通过优化损失函数来改善模型.而在聚类算法中是怎么来度量模型的好坏呢?聚类算法模型的性能度量大致有两类: 1)将模型结果与某个参考模型(或者称为外部指标)进行对比,个人觉得认为这种方法用的比较少 2)另一种是直接使用模型的内部属性,比如样本之间的距离(闵可夫斯基距离)来作为评判指标,这

【ML-7】聚类算法--K-means和k-mediods/密度聚类/层次聚类

目录 简述 K-means聚类 密度聚类 层次聚类 一.简述 聚类算法是常见的无监督学习(无监督学习是在样本的标签未知的情况下,根据样本的内在规律对样本进行分类). 在监督学习中我们常根据模型的误差来衡量模型的好坏,通过优化损失函数来改善模型.而在聚类算法中是怎么来度量模型的好坏呢?聚类算法模型的性能度量大致有两类: 1)将模型结果与某个参考模型(或者称为外部指标)进行对比,个人觉得认为这种方法用的比较少 2)另一种是直接使用模型的内部属性,比如样本之间的距离(闵可夫斯基距离)来作为评判指标,这