R语言学习笔记(九)聚类分析
文章目录
- 聚类分析
- 概念
- 聚类统计量
- 距离
- 明式距离(Minkowski)
- 马氏距离(Mahalanobis)
- 兰氏距离(Canberra)
- R语言实现
- 相似系数
- 夹角余弦
- 相关系数
- 距离和相似系数之间的转换
- 系统聚类法
- 基本步骤
- R实现
- 快速聚类法
- 主要步骤
- 原理与计算
- 平方误差准则
- R实现
- 主要参考
聚类分析
概念
聚类分析法(Cluster Analysis)是研究“物以类聚”的一种现代统计分析方法,在众多的领域中,都需要采用聚类分析作分类研究。
聚类分析方法{系统聚类法(hclust)快速聚类法(kmeans)\text{聚类分析方法} \begin{cases} \text{系统聚类法(hclust)}\\ \text{快速聚类法(kmeans)}\\ \end{cases} 聚类分析方法{系统聚类法(hclust)快速聚类法(kmeans)
聚类分析的类型{Q型聚类:对样品的聚类R型聚类:对变量的聚类\text{聚类分析的类型} \begin{cases} \text{Q型聚类:对样品的聚类}\\ \text{R型聚类:对变量的聚类}\\ \end{cases} 聚类分析的类型{Q型聚类:对样品的聚类R型聚类:对变量的聚类
聚类统计量
聚类统计量{距离{欧氏距离马氏距离兰氏距离相似系数{夹角余弦相关系数\text{聚类统计量} \begin{cases} \text{距离} \begin{cases} \text{欧氏距离}\\ \text{马氏距离}\\ \text{兰氏距离}\\ \end{cases} \\ \text{相似系数} \begin{cases} \text{夹角余弦}\\ \text{相关系数}\\ \end{cases} \end{cases} 聚类统计量⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧距离⎩⎪⎨⎪⎧欧氏距离马氏距离兰氏距离相似系数{夹角余弦相关系数
距离
为了计算平面上各点之间的距离dijd_{ij}dij,在聚类分析中对连续变量常用的距离有:
明式距离(Minkowski)
dij(q)=[∑k=1p(xik−xjk)q]1qd_{ij}(q)=\left[\sum_{k=1}^p(x_{ik}-x_{jk})^q\right]^{\frac1q} dij(q)=[k=1∑p(xik−xjk)q]q1
{q=1时,称为绝对值距离(Manhattan)q=2时,称为欧氏距离(Euclidean)q=∞时,称为切比雪夫距离(Maximum)\begin{cases} q=1\text{时,称为绝对值距离(Manhattan)}\\ q=2\text{时,称为欧氏距离(Euclidean)}\\ q=\infty\text{时,称为切比雪夫距离(Maximum)} \end{cases} ⎩⎪⎨⎪⎧q=1时,称为绝对值距离(Manhattan)q=2时,称为欧氏距离(Euclidean)q=∞时,称为切比雪夫距离(Maximum)
马氏距离(Mahalanobis)
dij(M)=(xi−xj)′Σ−1(xi−xj)d_{ij}(M)=(x_i-x_j)'\Sigma^{-1}(x_i-x_j) dij(M)=(xi−xj)′Σ−1(xi−xj)
其中,xix_ixi为样品iii的ppp个指标组成的行向量,Σ\SigmaΣ为协方差矩阵。
兰氏距离(Canberra)
dij(LW)=1p∑k=1p∣xik−xjk∣xik+xjk,(xij>0)d_{ij}(LW)=\frac1{p}\sum_{k=1}^p\frac{|x_{ik}-x_{jk}|}{x_{ik}+x{jk}},\quad(x_{ij}>0) dij(LW)=p1k=1∑pxik+xjk∣xik−xjk∣,(xij>0)
R语言实现
使用dist(x, method="euclidean", diag=F, upper=F, p=2)
函数计算距离。
相似系数
用于刻画两个变量间的相似程度。
夹角余弦
Cij(1)=∑k=1nxkixkj[(∑k=1nxki2)(∑k=1nxkj2)]12C_{ij}(1)=\frac{\sum\limits_{k=1}^nx_{ki}x_{kj}}{\left[\left(\sum\limits_{k=1}^nx_{ki}^2\right)\left(\sum\limits_{k=1}^n x_{kj}^2\right)\right]^\frac{1}{2}} Cij(1)=[(k=1∑nxki2)(k=1∑nxkj2)]21k=1∑nxkixkj
相关系数
Cij(2)=∑k=1n(xki−xˉi)(xkj−xˉj)∑k=1n(xki−xˉi)2∑k=1n(xkj−xˉi)2C_{ij}(2)=\frac{\sum\limits_{k=1}^n(x_{ki}-\bar{x}_i)(x_{kj}-\bar{x}_j)}{\sqrt{\sum\limits_{k=1}^n(x_{ki}-\bar{x}_i)^2\sum\limits_{k=1}^n(x_{kj}-\bar{x}_i)^2}} Cij(2)=k=1∑n(xki−xˉi)2k=1∑n(xkj−xˉi)2k=1∑n(xki−xˉi)(xkj−xˉj)
距离和相似系数之间的转换
一般距离越小,相似系数越大,关系越密切。
dij2=1−Cij2.d_{ij}^2=1-C_{ij}^2. dij2=1−Cij2.
系统聚类法
- 最短距离法;
- 最长距离法;
- 类平均法;
- 重心法;
- 中间距离法;
- 离差平方和法(Ward法)。
基本步骤
- 计算nnn个样品两两间的距离;
- 构造nnn个类,每类只包含一个样品;
- 合并距离最近的两类为一个新类;
- 计算新类与当前各类的距离;
- 画聚类图;
- 决定类的个数和类。
R实现
使用hclust(d, method="complete", ...)
函数
快速聚类法
主要介绍Kmeans聚类法(K均值法)。
主要步骤
- 将所有样品分成kkk个初始类;
- 通过欧氏距离将某个样品划入离中心最近的类中,并对获得样品与失去样品的类重新计算中心坐标;
- 重复2,直到所有的样品都不能再分类为止。
原理与计算
平方误差准则
E=∑i=1k∑p=Ci(p−mi)2E=\sum_{i=1}^k\sum_{p=C_i}(p-m_i)^2 E=i=1∑kp=Ci∑(p−mi)2
R实现
使用kmeans(x, centers, ...)
函数。
主要参考
[1] 王斌会 《多元统计分析及R语言建模(第四版)》
R语言学习笔记(九)聚类分析相关推荐
- R语言学习笔记之聚类分析
感谢关注天善智能,走好数据之路↑↑↑ 欢迎关注天善智能,我们是专注于商业智能BI,人工智能AI,大数据分析与挖掘领域的垂直社区,学习,问答.求职一站式搞定! 对商业智能BI.大数据分析挖掘.机器学习, ...
- r语言descstats_R语言学习笔记之聚类分析
原标题:R语言学习笔记之聚类分析 taoyan:伪码农,R语言爱好者,爱开源. 个人博客: https://ytlogos.github.io/ 使用k-means聚类所需的包: factoextra ...
- R语言学习笔记(1~3)
R语言学习笔记(1~3) 一.R语言介绍 x <- rnorm(5) 创建了一个名为x的向量对象,它包含5个来自标准正态分布的随机偏差. 1.1 注释 由符号#开头. #函数c()以向量的形式输 ...
- r语言c函数怎么用,R语言学习笔记——C#中如何使用R语言setwd()函数
在R语言编译器中,设置当前工作文件夹可以用setwd()函数. > setwd("e://桌面//") > setwd("e:\桌面\") > ...
- R语言学习笔记 07 Probit、Logistic回归
R语言学习笔记 文章目录 R语言学习笔记 probit回归 factor()和as.factor() relevel() 案例11.4复刻 glm函数 整理变量 回归:Logistic和Probit- ...
- R语言学习笔记——入门篇:第一章-R语言介绍
R语言 R语言学习笔记--入门篇:第一章-R语言介绍 文章目录 R语言 一.R语言简介 1.1.R语言的应用方向 1.2.R语言的特点 二.R软件的安装 2.1.Windows/Mac 2.2.Lin ...
- R语言学习笔记——高级篇:第十四章-主成分分析和因子分析
R语言 R语言学习笔记--高级篇:第十四章-主成分分析和因子分析 文章目录 R语言 前言 一.R中的主成分和因子分析 二.主成分分析 2.1.判断主成分的个数 2.2.提取主成分 2.3.主成分旋转 ...
- R语言学习笔记——入门篇:第三章-图形初阶
R语言 R语言学习笔记--入门篇:第三章-图形初阶 文章目录 R语言 一.使用图形 1.1.基础绘图函数:plot( ) 1.2.图形控制函数:dev( ) 补充--直方图函数:hist( ) 补充- ...
- R语言学习笔记 06 岭回归、lasso回归
R语言学习笔记 文章目录 R语言学习笔记 比较lm.ridge和glmnet函数 画岭迹图 图6-4 <统计学习导论 基于R语言的应用>P182 图6-6<统计学习导论 基于R语言的 ...
- R语言学习笔记(八)--读写文件与网络爬虫
R语言学习笔记(八) 1 工作路径 2 保存R对象 3 Scan函数 3-1 从控制台读取数据 3-2 从txt文件读取数据 3-3 从url读取数据 4 按行读写文本文件 5 读取文本文件(txt. ...
最新文章
- 在sqlplus中操作blob和clob
- python ascii转utf8_ascii 转换为 utf-8
- 打印出系统所有即未被assign到business transaction和IBASE component的product ID列表
- C++:vs2017编写代码时的光标变成了黑块,选中字时替换掉了黑块选中的字【解决办法】
- OpenStack 认证服务 KeyStone部署(三)
- Ubuntu下网络调试助手 NetAssist(实际这个我启动不了)
- 系统分析与设计-我爱烤鱼创新过程与UP过程对比分析之我见
- 2、【STM32】新建工程模板、ISP串口程序下载、JLINK程序下载与调试(在线和软件)
- M2Det 论文笔记
- JAVA我的世界怎么弄TNT大陆_《我的世界》爷爷的遗言:TNT大陆地图存档
- 100行代码,10分钟,详解Vue2.x响应式原理——理解Observer,Dep,Watcher
- HA-reshacker
- iomega ix2 Android,Lenovo Iomega ix2系统安装_联想 IOMEGA IX2_服务器评测与技术-中关村在线...
- 安卓模拟器(手机)安装抓包工具(fiddler)证书及手机设置代理后无法上网?
- Notes Twelfth Day-渗透攻击-红队-命令与控制
- 用Qt搭建图书管理系统(三)
- 为什么Vue组件里面data必须是个函数
- 40-网上商城数据库-商品类别数据操作(一)
- 手牵手,我们一起搭建VuePress博客
- 实现OPC UA publish/subscribe单次发送