聚类

聚类

关键度量指标:距离

常用距离

  • 绝对值距离



    绝对值距离也称为“棋盘距离”或“城市街区距离”。
  • 欧氏(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

(凝聚的)层次聚类法

  • 思想

    1. 开始时,各个样本各自为一类
    2. 规定某种度量作为样本之间的距离及类与类之间的距离,并计算之
    3. 将距离最短的两个类合并为一个新类
    4. 重复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”——离差平方和法

类个数的确定

在聚类过程中类的个数如何确定才是适宜的呢?这是一个十分困难的问题,至今仍未找到令人满意的 方法,但这又是一个不可回避的问题。目前基本的方法有三种:

  1. 给定一个阈值,通过观察谱系图,给出一个你认为的阈值T,要求类与类之间的距离要大于T
  2. 观测样本的散点图,对于二维或三维变量的样本,可以通过观测数据的散点图来确定类的个数
  3. 使用统计量,通过一些统计量来确定类的个数
  4. 根据谱系图确定分类个数的推测

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与数据分析旧笔记(十三) 聚类初步的更多相关文章

  1. R与数据分析旧笔记(十五) 基于有代表性的点的技术:K中心聚类法

    基于有代表性的点的技术:K中心聚类法 基于有代表性的点的技术:K中心聚类法 算法步骤 随机选择k个点作为"中心点" 计算剩余的点到这个k中心点的距离,每个点被分配到最近的中心点组成 ...

  2. R与数据分析旧笔记(十四) 动态聚类:K-means

    动态聚类:K-means方法 动态聚类:K-means方法 算法 选择K个点作为初始质心 将每个点指派到最近的质心,形成K个簇(聚类) 重新计算每个簇的质心 重复2-3直至质心不发生变化 kmeans ...

  3. R与数据分析旧笔记(十一)数据挖掘初步

    PART 1 PART 1 传统回归模型的困难 1.为什么一定是线性的?或某种非线性模型? 2.过分依赖于分析者的经验 3.对于非连续的离散数据难以处理 网格方法 <Science>上的文 ...

  4. R与数据分析旧笔记(十六) 基于密度的方法:DBSCAN

    基于密度的方法:DBSCAN 基于密度的方法:DBSCAN DBSCAN=Density-Based Spatial Clustering of Applications with Noise 本算法 ...

  5. R与数据分析旧笔记(五)数学分析基本

    R语言的各种分布函数 rnorm(n,mean=0,sd=1)#高斯(正态) rexp(n,rate=1)#指数 rgamma(n,shape,scale=1)#γ分布 rpois(n,lambda) ...

  6. R与数据分析旧笔记(三)不知道取什么题目

    连线图 > a=c(2,3,4,5,6) > b=c(4,7,8,9,12) > plot(a,b,type="l") 多条曲线效果 plot(rain$Toky ...

  7. R与数据分析旧笔记(一)基本数学函数的使用

    创建向量矩阵 > x1=c(2,3,6,8) > x2=c(1,2,3,4) > a1=(1:100) > length(a1) [1] 100 > length(x1) ...

  8. R与数据分析旧笔记(十八完结) 因子分析

    因子分析 因子分析 降维的一种方法,是主成分分析的推广和发展 是用于分析隐藏在表面现象背后的因子作用的统计模型.试图用最少的个数的不可测的公共因子的线性函数与特殊因子之和来描述原来观测的每一分量 因子 ...

  9. R与数据分析旧笔记(十七) 主成分分析

    主成分分析 主成分分析 Pearson于1901年提出的,再由Hotelling(1933)加以发展的一种多变量统计方法 通过析取主成分显出最大的个别差异,也用来削减回归分析和聚类分析中变量的数目 可 ...

随机推荐

  1. UART串口协议基础1

    Louis kaly.liu@163.com 串口协议基础 1 串口概述 串口由收发器组成.发送器是通过TxD引脚发送串行数据,接收器是通过RxD引脚接收串行数据. 发送器和接收器都利用了一个移位寄存 ...

  2. PowerDesigner使用方法小结

    PowerDesigner多用来进行数据库模型设计,具有SQL语句自动生成等功能.当然,也有不少缺点,比如团队分享. 一.设置PowerDesigner模型视图中数据表显示列 1.Tools-Disp ...

  3. 相比于python2.6,python3.0的新特性。

    这篇文章主要介绍了相比于python2.6,python3.0的新特性.更详细的介绍请参见python3.0的文档. Common Stumbling Blocks 本段简单的列出容易使人出错的变动. ...

  4. JavaScript、JSP、Java及javaEE

    对JavaScript.JSP.Java及javaEE之间区别的理解 JavaScript和Java名字极为类似,相信不少的初学者或者准备学这些知识的人对于JavaScript.JSP.Java及Ja ...

  5. Mysql动态多条件查询

    动态多条件查询是一类经常遇到的问题. 在Mysql里面可以用语句简单的解决. SELECT * FROM product WHERE price = IF('{0}' = '', price, '{0 ...

  6. js 报错 :object is not a function

    object is not a function 我遇到的具体问题是:js命名方法重复了,找到了别的地方,改个方法名就可以了 var h2_price = document.getElementByI ...

  7. 定时自动备份mysql数据库

    新建备份文件并赋予可以执行的权限 mkdir -p /home/mysql_backup/ touch /home/mysql_backup/mysql_backup.sh chmod 551 /ho ...

  8. [LeetCode]题解(python):151-Reverse Words in a String

    题目来源: https://leetcode.com/problems/reverse-words-in-a-string/ 题意分析: 给定一个字符串,里面包括多个单词,将这个字符串的单词翻转,例如 ...

  9. 简易 Ajax 入门案例

    AJAX = 异步 JavaScript 及 XML(Asynchronous JavaScript and XML) AJAX 不是一种新的编程语言,而是一种用于创建更好更快以及交互性更强的 Web ...

  10. cdn与http缓存

    http缓存与cdn相关技术   摘要:最近要做这个主题的组内分享,所以准备了一个星期,查了比较多的资料.准备的过程虽然很烦很耗时间,不过因为需要查很多的资料,因此整个过程下来,对这方面的知识影响更加 ...