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)加以发展的一种多变量统计方法 通过析取主成分显出最大的个别差异,也用来削减回归分析和聚类分析中变量的数目 可 ...
随机推荐
- Java线程之二 锁定与等待堵塞原理图
如上图所看到的.
- RHEL与Centos
一直在用centos,但对他的由来以及与RHEL的关系不是很明白,查些资料,小记一番. 倘若一说到Red Hat这个大名,大家似乎都听过. Qustion1:Red Hat家族中有哪些产品呢? Red ...
- vs快捷键
Ctrl+E,D ----格式化全部代码 Ctrl+A+K+FCtrl+E,F ----格式化选中的代码 Ctrl+K+FCTRL + SHIFT + B生成解决方案 Alt+B+B 或 F6 生成当 ...
- Dell 2950服务器CPU-E1422错误解决方法
.造成原因:CPU松动或者是硅胶损耗 .解决方法: .断掉电源,将其后盖打开(在手没有静电的情况下操作) .拔掉周围的排热扇 .按住关卡,将其CPU卸下:并使用清洁剂清理,再次给CPU上涂上硅胶(均匀 ...
- ORACLE EBS BOM 展开(使用标准程序bompexpl.exploder_userexit展开)
create or replace package cux_bom_pub is PROCEDURE bom_expand_to_temp( p_organization_id number, p_i ...
- FAQ:win7和win8 64位注册ocx控件方法
win7/win8 问题所在: 64位的系统一般都是可以安装32位程序的, 执行 C:\Windows\SysWOW64\regsvr32.exe 而不是 C:\Windows\Sys ...
- Vim 缓冲区与窗口 操作
##############缓冲区 :e(:open) 打开新缓冲区 :ls (:buffers) 列出列表内所有缓冲区/bs /bv /be(BufExplore快捷键) :b 2(:buffer ...
- 走进C标准库(2)——"stdio.h"中的fopen函数
其他的库文件看起来没有什么实现层面的知识可以探究的,所以,直接来看stdio.h. 1.茶余饭后的杂谈,有趣的历史 在过去的几十年中,独立于设备的输入输出模型得到了飞速的发展,标准C从这个改善的模型中 ...
- 数组初始化(c, c++, gcc, g++)
这是很基础的东西,但基础的重要性不言而喻,我敢肯定这个知识点我肯定曾经了解过,但现在,我不敢确定,由此可见纪录的重要性,这世界没有什么捷径,找对方向,然后不停重复.所以从今天开始,我会比较详细的纪录这 ...
- IBM X System ServerGuide 8.41 服务器 系统安装 引导盘
IBM X System ServerGuide 8.41 支持操作系统: 32位: Microsoft Windows 2003/2003 R2 (Enterprise, Standard, Web ...