系统聚类法

聚类就是按照某个特定标准把一个数据集分割成不同的类或簇,最后的结果是希望同类之间的差异性尽可能小,不同类之间的差异性尽可能大。不同的类具有能够表达异于其他类的指标,这样针对不同的类,后续就能采取不一样的处理手段。聚类的应用场景的比较多,比如建立客户画像、商品聚类、离群值检验等等;与分类算法不一样,聚类属于非监督学习算法,其算法类型也很多,系统聚类是相对其他较简单的。

一、系统聚类法

1. 系统聚类法思想

系统聚类也称为层次聚类,因为其结果会呈现显著的层次结构,通常分为自底向上和自顶向下,两种方法的原理是相同的,区别在于计算的方向是相反的。

(1)自低向下:又称为合并法,这种方法是先将每个样本分别作为一个独立的类,然后通过距离计算,将距离相近的两个样本合并为一类,其他样本仍然各自为一类,重复上面的过程直至达到设定的聚类数。自顶向下:又称为分解法,与自低向下相反,会将所有样本看出一类,通过各样本间的距离,选出距离最远的两个样本,各自为一个类别,其余样本根据就近原则分配到两个类别中,重复上面的过程直至达到设定的聚类数。

(2)聚类方向明确之后,接下来就是关键问题定义样本点之间的距离。在聚类时常见的距离定义方法有绝对值距离、欧式距离、闵可夫距离、切比雪夫距离等等,最常用的就是欧式距离,如下图所示。

(3)样本点的距离解决之后,就轮到怎么样确定两个类之间的距离,通常确定的方法有最短距离法、最长距离法、中间距离法、类平均法、重心法和离差平方法,如下图所示。

2. 系统聚类法示例

最短距离

最短距离法:将类中的样本间最短距离作为类之间的距离。

最长距离

最长距离法:将类中样本间的最长距离作为类之间的距离。



二、 系统聚类R实现

在R语言中,hclust函数能够实现系统聚类,输入项为距离矩阵(可以由dist函数计算所得),设置method可实现不同算法。

out.hclust=hclust(out.dist,method="complete") #根据距离聚类
#类平均法:average 重心法:centroid
#中间距离法:median 最长距离法:complete 默认
#最短距离法:single 离差平方和法:ward
#密度估计法:density

1. 聚类处理的数据结构

2. R处理程序

#数据输入
dd1=c(2.5,3.0,6.0,6.6,7.2,4.0,4.7,4.5,5.5)
dd2=c(2.1,2.5,2.5,1.5,3.0,6.4,5.6,7.6,6.9)
dd=data.frame(dd1,dd2)
#聚类函数
out.dist=dist(dd,method="euclidean") #样本间距离计算
out.hclust=hclust(out.dist,method="complete") #系统聚类
plot(out.hclust) #系统聚类图

3. 计算结果

plot(out.hclust)                      #系统聚类图
rect.hclust(out.hclust, k=3) #添加聚类分类矩形,如分为3类

out.id = cutree(out.hclust, k=3)      #得到分为3类的数值
out.id
[1] 1 1 2 2 2 3 3 3 3
table(out.id,paste("Name",1:9,""))     # 以矩阵的方式分辨名称对应的类
out.id Name 1  Name 2  Name 3  Name 4  Name 5  Name 6  Name 7   Name 8    Name 9
1 1 1 0 0 0 0 0 0 0
2 0 0 1 1 1 0 0 0 0
3 0 0 0 0 0 1 1 1 1

三、总结

系统聚类法是目前国内外使用比较多的一种聚类方法,其实现方式是:它首先将每个样本单独看成一类,在规定类间距离的条件下,选择距离最小的一对合并成一个新类,并计算新类与其他类之间的距离,再将距离最近的两类合并,这样每次会减少一个类,直到所有的样本合为一类为止。高维聚类分析已成为聚类分析的一个重要研究方向。同时高维数据聚类也是聚类技术的难点。随着技术的进步使得数据收集变得越来越容易,导致数据库规模越来越大、复杂性越来越高,如各种类型的贸易交易数据、Web 文档、基因表达数据等,它们的维度(属性)通常可以达到成百上千维,甚至更高。但是,受“维度效应”的影响,许多在低维数据空间表现良好的聚类方法运用在高维空间上往往无法获得好的聚类效果。高维数据聚类分析是聚类分析中一个非常活跃的领域,同时它也是一个具有挑战性的工作。高维数据聚类分析在市场分析、信息安全、金融、娱乐、反恐等方面都有很广泛的应用。

参考文献

(聚类分析—系统聚类)[https://zhuanlan.zhihu.com/p/267700

数据挖掘系统聚类—R实现的更多相关文章

  1. (数据科学学习手札08)系统聚类法的Python源码实现(与Python,R自带方法进行比较)

    聚类分析是数据挖掘方法中应用非常广泛的一项,而聚类分析根据其大体方法的不同又分为系统聚类和快速聚类,其中系统聚类的优点是可以很直观的得到聚类数不同时具体类中包括了哪些样本,而Python和R中都有直接 ...

  2. (数据科学学习手札10)系统聚类实战(基于R)

    上一篇我们较为系统地介绍了Python与R在系统聚类上的方法和不同,明白人都能看出来用R进行系统聚类比Python要方便不少,但是光介绍方法是没用的,要经过实战来强化学习的过程,本文就基于R对2016 ...

  3. (数据科学学习手札09)系统聚类算法Python与R的比较

    上一篇笔者以自己编写代码的方式实现了重心法下的系统聚类(又称层次聚类)算法,通过与Scipy和R中各自自带的系统聚类方法进行比较,显然这些权威的快捷方法更为高效,那么本篇就系统地介绍一下Python与 ...

  4. R语言简单实现聚类分析计算与分析(基于系统聚类法)

    聚类分析计算与分析(基于系统聚类法) 下面以一个具体的例子来实现实证分析.2008年我国其中31个省.市和自治区的农村居民家庭平均每人全年消费性支出. 根据原始数据对我国省份进行归类统计. 原始数据如 ...

  5. 【数据挖掘】聚类之k-means(转载)

    [数据挖掘]聚类之k-means 1.算法简述 分类是指分类器(classifier)根据已标注类别的训练集,通过训练可以对未知类别的样本进行分类.分类被称为监督学习(supervised learn ...

  6. ITTC数据挖掘系统(六)批量任务,数据查看器和自由文档

    这一次带来了一系列新特新,同时我们将会从商业智能的角度讨论软件的需求 一. 批量任务向导 一个常用的需求是完成处理多个任务,可能是同一个需求以不同的参数完成多次,这类似批量分析某一问题:或者是不同的需 ...

  7. SAP R/3系统的R和3分别代表什么含义,负载均衡的实现原理

    1972年,SAP诞生,推出了RF系统(实时财务会计系统), 后来命名为R1. R指Real time.3既指第三代系统,又代表3层架构. 三层架构分别为下图的Presentation server ...

  8. Windows7-32位系统下R语言链接mySQL数据库步骤

    安装R和MySQL在此就不再多说了.网上有非常多教程能够找到.以下直接进入到odbc的安装流程. 1.下载安装mysql-connector-odbc-5.x.x-win32.msi 下载地址:htt ...

  9. 续前篇---数据挖掘之聚类算法k-mediod(PAM)原理及实现

    上一篇博文中介绍了聚类算法中的kmeans算法.无可非议kmeans由于其算法简单加之分类效率较高 已经广泛应用于聚类应用中. 然而kmeans并非十全十美的.其对于数据中的噪声和孤立点的聚类带来的误 ...

  10. 数据挖掘之聚类算法K-Means总结

    序 由于项目需要,需要对数据进行处理,故而又要滚回来看看paper,做点小功课,这篇文章只是简单的总结一下基础的Kmeans算法思想以及实现: 正文: 1.基础Kmeans算法. Kmeans算法的属 ...

随机推荐

  1. Java实现简单的大顶堆

    Java实现简单的大顶堆 今天刷LeetCode的347. 前 K 个高频元素的时候使用到了优先队列,由于对大顶堆掌握不算熟练,于是写了一个简单大顶堆练手: 实现代码在最后 之前很少使用泛型来写代码, ...

  2. Python爬虫之Scrapy框架爬虫实战

    Python爬虫中Scrapy框架应用非常广泛,经常被人用于属于挖掘.检测以及自动化测试类项目,为啥说Scrapy框架作为半成品我们又该如何利用好呢 ?下面的实战案例值得大家看看. 目录: 1.Scr ...

  3. vs xamarin获取sha1申请百度sdk密钥

    请查看微软帮助文档 查找密钥存储的签名 - Xamarin | Microsoft Docs

  4. DP-最大子矩阵

    1768:最大子矩阵 题目描述: 描述已知矩阵的大小定义为矩阵中所有元素的和.给定一个矩阵,你的任务是找到最大的非空(大小至少是1 * 1)子矩阵比如,如下4 * 4的矩阵 0 -2 -7 09 2 ...

  5. django_设计模式和模板层

    一.django的设计模式 1.传统MVC设计模式 (1)MVC(Model-View-Controller,模型-视图-控制器)模式. M--模型层,主要用于对数据库的封装: V--视图层,用于向用 ...

  6. github 开源项目安装

    1.打开github 2.搜索相关项目 3.使用系统下载安装 4.执行 指令;git clone git://github.com/****.git

  7. Linux 常用杂项命令

    1.查看监听端口的进程名称 lsof -i:[3306] # 3306是端口名称 2.查看PID进程文件的位置 ls -al /proc/51955/exe # 51955是进程PID

  8. 论C语言数组

    一维数组  对于一个一维数组a[10]来说  它对储存空间的申请可以看成是这样的  数组名a就代表着首元素a[0]的地址,也很容易看出a+5是元素a[5]的地址. 二维数组  对于一个二维数组a[3] ...

  9. lc.977 有序数组的平方

    题目描述 给你一个按非递减顺序排序的整数数组nums,返回每个数字的平方组成的新数组,要求也按非递减顺序 排序. 输入:nums = [-4,-1,0,3,10] 输出:[0,1,9,16,100] ...

  10. 归一化,正则化,标准化,dropout的联系与区别

    归一化(Normalization)是指将数据缩放到一定范围内,一般是将数据映射到[0,1]或[-1,1]之间.这样可以避免不同特征的数值差异过大而导致的训练困难,同时也有助于加快梯度下降的收敛速度. ...