R与数据分析旧笔记(十三) 聚类初步
聚类
聚类
关键度量指标:距离
常用距离
- 绝对值距离
绝对值距离也称为“棋盘距离”或“城市街区距离”。 - 欧氏(Euclide)距离
- 闵可夫斯基(Minkowski)距离
不难看出绝对值距离和Euclide距离是Minkowski距离的特例
当各变量的单位不同或测量值的范围相差很大时,不应直接采用Minkowski距离,而应先对各变量的数据作标准化处理,然后再用标准化后的数据进行计算 - 切比雪夫(Chebyshev)距离
它是Minkowski距离中的情况
- 马氏(Mahalanobis)距离
其中为样本方差矩阵
用Mahalanobis距离的好处是考虑到各变量之间的相关性,并且与变量的单位无关,但Mahalanobis距离有一个很大的缺陷,就是Mahalanobis距离公式中的难以确定
- Lance和Williams距离
其中
disst()函数
> x1=c(1,2,3,4,5)
> x2=c(3,2,1,4,6)
> x3=c(5,3,5,6,2)
> x=data.frame(x1,x2,x3)
> dist(x,method="euclidean")
1 2 3 4
2 2.449490
3 2.828427 2.449490
4 3.316625 4.123106 3.316625
5 5.830952 5.099020 6.164414 4.582576
> dist(x,method="minkowski")
1 2 3 4
2 2.449490
3 2.828427 2.449490
4 3.316625 4.123106 3.316625
5 5.830952 5.099020 6.164414 4.582576
> dist(x,method="minkowski",p=5)
1 2 3 4
2 2.024397
3 2.297397 2.024397
4 3.004922 3.143603 3.004922
5 4.323101 4.174686 5.085057 4.025455
- “euclidean”——Euclide距离
- “maximum”——Chebyshev距离
- “manhattan”——绝对值距离
- “canberra”——Lance距离
- “minkowski”——Minkowski距离,其中p是Minkowski距离的阶数
- “binary”——定性变量距离
数据中心化与标准化变换
- 目的:使到各个变量平等地发挥作用
- scale()函数
- 极差化,sweep()函数
> x
x1 x2 x3
1 1 3 5
2 2 2 3
3 3 1 5
4 4 4 6
5 5 6 2
> scale(x,center=T,scale=T)
x1 x2 x3
[1,] -1.2649111 -0.1039750 0.4868645
[2,] -0.6324555 -0.6238503 -0.7302967
[3,] 0.0000000 -1.1437255 0.4868645
[4,] 0.6324555 0.4159002 1.0954451
[5,] 1.2649111 1.4556507 -1.3388774
attr(,"scaled:center")
x1 x2 x3
3.0 3.2 4.2
attr(,"scaled:scale")
x1 x2 x3
1.581139 1.923538 1.643168
(凝聚的)层次聚类法
- 思想
- 开始时,各个样本各自为一类
- 规定某种度量作为样本之间的距离及类与类之间的距离,并计算之
- 将距离最短的两个类合并为一个新类
- 重复2-3,即不断合并最近的两个类,每次减少一个类,直至所有样本被合并为一类
hclust()函数
- 例子
> x<-c(1,2,6,8,11);dim(x)<-c(5,1);
> x
[,1]
[1,] 1
[2,] 2
[3,] 6
[4,] 8
[5,] 11
> d<-dist(x)
> d
1 2 3 4
2 1
3 5 4
4 7 6 2
5 10 9 5 3
hc1<-hclust(d,"single");hc2<-hclust(d,"complete")
> hc3<-hclust(d,"median");hc4<-hclust(d,"mcquitty")
> opar<-par(mfrow=c(2,2))
> plot(hc1,hang=-1);plot(hc2,hang=-1)
> plot(hc3,hang=-1);plot(hc4,hang=-1)
> par(opar)
- “single”——最短距离法
- “complete”——最长距离法
- “median”——中间距离法
- “mcquitty”——Mcquitty相似法
- “averrage”——类平均法
- “centroid”——重心法
- “ward”——离差平方和法
类个数的确定
在聚类过程中类的个数如何确定才是适宜的呢?这是一个十分困难的问题,至今仍未找到令人满意的 方法,但这又是一个不可回避的问题。目前基本的方法有三种:
- 给定一个阈值,通过观察谱系图,给出一个你认为的阈值T,要求类与类之间的距离要大于T
- 观测样本的散点图,对于二维或三维变量的样本,可以通过观测数据的散点图来确定类的个数
- 使用统计量,通过一些统计量来确定类的个数
- 根据谱系图确定分类个数的推测
Bemirmen(1972)提出了一个根据研究目的来确定适当的分类方法,并提出一些根据谱系图来分析的准则:
准则A 各类重心的距离必须很大
准则B确定的类中,各类所包含的元素都不要太多
准则C类的个数必须符合实用目的
准则D 若采用几种不同的聚类方法处理,则在各自的聚类图中应发现相同的类
在R语言中,有个叫rect.hclust()的函数,可以用来确定类的个数。
rect.hclust(tree,kk=NULL,which=NULL,x=NULL,h=NULL,border=2,cluster=NULL)
> plot(hc1,hang=-1)
> rect.hclust(hc1,k=2)
R与数据分析旧笔记(十三) 聚类初步的更多相关文章
- R与数据分析旧笔记(十五) 基于有代表性的点的技术:K中心聚类法
基于有代表性的点的技术:K中心聚类法 基于有代表性的点的技术:K中心聚类法 算法步骤 随机选择k个点作为"中心点" 计算剩余的点到这个k中心点的距离,每个点被分配到最近的中心点组成 ...
- R与数据分析旧笔记(十四) 动态聚类:K-means
动态聚类:K-means方法 动态聚类:K-means方法 算法 选择K个点作为初始质心 将每个点指派到最近的质心,形成K个簇(聚类) 重新计算每个簇的质心 重复2-3直至质心不发生变化 kmeans ...
- R与数据分析旧笔记(十一)数据挖掘初步
PART 1 PART 1 传统回归模型的困难 1.为什么一定是线性的?或某种非线性模型? 2.过分依赖于分析者的经验 3.对于非连续的离散数据难以处理 网格方法 <Science>上的文 ...
- R与数据分析旧笔记(十六) 基于密度的方法:DBSCAN
基于密度的方法:DBSCAN 基于密度的方法:DBSCAN DBSCAN=Density-Based Spatial Clustering of Applications with Noise 本算法 ...
- R与数据分析旧笔记(五)数学分析基本
R语言的各种分布函数 rnorm(n,mean=0,sd=1)#高斯(正态) rexp(n,rate=1)#指数 rgamma(n,shape,scale=1)#γ分布 rpois(n,lambda) ...
- R与数据分析旧笔记(三)不知道取什么题目
连线图 > a=c(2,3,4,5,6) > b=c(4,7,8,9,12) > plot(a,b,type="l") 多条曲线效果 plot(rain$Toky ...
- R与数据分析旧笔记(一)基本数学函数的使用
创建向量矩阵 > x1=c(2,3,6,8) > x2=c(1,2,3,4) > a1=(1:100) > length(a1) [1] 100 > length(x1) ...
- R与数据分析旧笔记(十八完结) 因子分析
因子分析 因子分析 降维的一种方法,是主成分分析的推广和发展 是用于分析隐藏在表面现象背后的因子作用的统计模型.试图用最少的个数的不可测的公共因子的线性函数与特殊因子之和来描述原来观测的每一分量 因子 ...
- R与数据分析旧笔记(十七) 主成分分析
主成分分析 主成分分析 Pearson于1901年提出的,再由Hotelling(1933)加以发展的一种多变量统计方法 通过析取主成分显出最大的个别差异,也用来削减回归分析和聚类分析中变量的数目 可 ...
随机推荐
- TCP应用编程--套接字C#实现
套接字之间的连接过程可以分为三个步骤: 1.服务器监听 2.客户端请求 3.连接确认 Ø服务器监听:是指服务器套接字并不定位具体的客户端套接字,而 是处于等待连接的状态,实时监控网络状态. Ø客户端 ...
- Ubuntu引导修复问题
Ubuntu和Win7双系统,一不小心在Ubuntu下把Win7 C盘的boot目录给删了(手贱呀),然后Win7就没了,后来找了张WinPE启动盘修复了Win7引导结果,Ubuntu系统的引导没了. ...
- alimama open source mdrill启动后访问蓝鲸任务时出错:Caused by:org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss
启动后,访问:http://IP:1107/mdrill.jsp 蓝鲸任务
- iphone--有关日历中NSDateFormatter中英文
在使用日历使用中,获取星期的时候 NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; [dateFormat setDateFo ...
- OC中对象拷贝概念
OC中的对象拷贝概念,这个对于面向对象语言中都会有这种的问题,只是不同的语言有不同的解决方式:C++中有拷贝构造函数,Java中需要实现Cloneable接口,在clone方法中进行操作.但是不过OC ...
- oFixed() 方法
oFixed() 方法可把 Number 四舍五入为指定小数位数的数字. 在本例中,我们将把数字舍入为仅有一位小数的数字: Show the number 13.37 with one decimal ...
- OC语法9——Category类别
Category(分类): 当我们在开发过程中要给类添加新的方法时,一般不要去动原类. 再不改动原类的限制下,怎么拓展类的方法?以往我们的做法是新建子类使其继承该类,然后通过子类拓展类的行为. OC提 ...
- mysql 存储过程中的declare 和 set @的两种变量的区别
两者在手册中的说明: DECLARE var_name[,...] type [DEFAULT value]这个语句被用来声明局部变量.要给变量提供一个默认值,请包含一个DEFAULT子句.值可以被指 ...
- springFramework 源码学习之源码下载与编译
1.源码下载 Spring已经将源码从svn迁移到了git.对于习惯了svn的人来说依然可以svn checkout,最好checkout到英文路径下,本人中文路径编译不过,具体原因不明,路径: ht ...
- Android 树形菜单
首先来一张萌萌哒的效果图(比较懒 - -) 然后是代码: // Node package com.example.treeview.utils; import java.util.ArrayList; ...