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

一、系统聚类法
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实现的更多相关文章
- (数据科学学习手札08)系统聚类法的Python源码实现(与Python,R自带方法进行比较)
聚类分析是数据挖掘方法中应用非常广泛的一项,而聚类分析根据其大体方法的不同又分为系统聚类和快速聚类,其中系统聚类的优点是可以很直观的得到聚类数不同时具体类中包括了哪些样本,而Python和R中都有直接 ...
- (数据科学学习手札10)系统聚类实战(基于R)
上一篇我们较为系统地介绍了Python与R在系统聚类上的方法和不同,明白人都能看出来用R进行系统聚类比Python要方便不少,但是光介绍方法是没用的,要经过实战来强化学习的过程,本文就基于R对2016 ...
- (数据科学学习手札09)系统聚类算法Python与R的比较
上一篇笔者以自己编写代码的方式实现了重心法下的系统聚类(又称层次聚类)算法,通过与Scipy和R中各自自带的系统聚类方法进行比较,显然这些权威的快捷方法更为高效,那么本篇就系统地介绍一下Python与 ...
- R语言简单实现聚类分析计算与分析(基于系统聚类法)
聚类分析计算与分析(基于系统聚类法) 下面以一个具体的例子来实现实证分析.2008年我国其中31个省.市和自治区的农村居民家庭平均每人全年消费性支出. 根据原始数据对我国省份进行归类统计. 原始数据如 ...
- 【数据挖掘】聚类之k-means(转载)
[数据挖掘]聚类之k-means 1.算法简述 分类是指分类器(classifier)根据已标注类别的训练集,通过训练可以对未知类别的样本进行分类.分类被称为监督学习(supervised learn ...
- ITTC数据挖掘系统(六)批量任务,数据查看器和自由文档
这一次带来了一系列新特新,同时我们将会从商业智能的角度讨论软件的需求 一. 批量任务向导 一个常用的需求是完成处理多个任务,可能是同一个需求以不同的参数完成多次,这类似批量分析某一问题:或者是不同的需 ...
- SAP R/3系统的R和3分别代表什么含义,负载均衡的实现原理
1972年,SAP诞生,推出了RF系统(实时财务会计系统), 后来命名为R1. R指Real time.3既指第三代系统,又代表3层架构. 三层架构分别为下图的Presentation server ...
- Windows7-32位系统下R语言链接mySQL数据库步骤
安装R和MySQL在此就不再多说了.网上有非常多教程能够找到.以下直接进入到odbc的安装流程. 1.下载安装mysql-connector-odbc-5.x.x-win32.msi 下载地址:htt ...
- 续前篇---数据挖掘之聚类算法k-mediod(PAM)原理及实现
上一篇博文中介绍了聚类算法中的kmeans算法.无可非议kmeans由于其算法简单加之分类效率较高 已经广泛应用于聚类应用中. 然而kmeans并非十全十美的.其对于数据中的噪声和孤立点的聚类带来的误 ...
- 数据挖掘之聚类算法K-Means总结
序 由于项目需要,需要对数据进行处理,故而又要滚回来看看paper,做点小功课,这篇文章只是简单的总结一下基础的Kmeans算法思想以及实现: 正文: 1.基础Kmeans算法. Kmeans算法的属 ...
随机推荐
- nuxt.js的生命周期
nuxt的生命周期分为客户端生命周期,服务端生命周期 1.服务端的生命周期 执行顺序为:nuxtServerlnit(store,context){}, 类似于vue.js中的main.js.可以在 ...
- 20200925--矩阵乘法(奥赛一本通P94 多维数组)
计算两个矩阵的乘法.n*m阶的矩阵A乘以m*k阶的矩阵B得到的矩阵C是n*k阶的,且C[i][j]=A[i][0]*B[0][j]+A[i][1]*B[1][j]+...+A[i][m-1]*B[m- ...
- windows IIS http 自动转https
1.安装url重写组件 https://www.iis.net/downloads/microsoft/url-rewrite#additionalDownloads 2.刷新IIS 3.添加规则
- C语言初级阶段5——函数2
C语言初级阶段5--函数2 址传递 1.地址:在定义变量,数组,函数等等,系统会自动给分配他们的内存区域(地址),把这个数据放到这个地址上面. 2.&:&a 得到a的地址编号 3.*: ...
- SpringBoot - Lombok使用详解4(@Data、@Value、@NonNull、@Cleanup)
六.Lombok 注解详解(4) 8,@Data (1)@Data 是一个复合注解,用在类上,使用后会生成:默认的无参构造函数.所有属性的 getter.所有非 final 属性的 setter 方法 ...
- js 全屏显示指定区域
小猪最近使用vue开发项目的时候,需要实现将指定区域全拼展示的操作. 小猪选择使用js来实现,实现原理:使用requestFullscreen()方法将指定的dom元素在全屏模式下打开. 支持的部分浏 ...
- K8S中Pod概念
一.资源限制 Pod 是 kubernetes 中最小的资源管理组件,Pod 也是最小化运行容器化应用的资源对象.一个 Pod 代表着集群中运行的一个进程.kubernetes 中其他大多数组件都是围 ...
- EXT GridPanel button 按钮 事件 方法 DirectMethod
C# 代码 //首页 Ext.Net.Button btnFirst = new Ext.Net.Button(); btnFirst.Icon = Icon.ControlStartBlue; bt ...
- RPC方式调用远程webservice接口
/** * 可调整调用方法与命名空间的请求 * @param wsMethod 方法名 * @param bodyMessage json请求体.toString() * @return JSONOb ...
- ubuntu14.04 cm12.0 genymotion
前几天在ubuntu14.04编译过android5.0.1源码,但是呢?不知怎么运行不起来,后来又试了试把img文件在win平台运行虚拟机不知怎么还是不行,再后来想通过刷机运行学习framework ...