R语言的层次聚类方法是什么


这篇文章主要介绍了R语言的层次聚类方法是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇R语言的层次聚类方法是什么文章都会有所收获,下面我们一起来看看吧。聚类分析(clustering analysis)是将一组对象根据其特征分成不同的cluster,使得同一cluster内的对象在某种意义上比不同的cluster之间的对象更为相似。由于 “cluster” 没有一个明确的定义,因而会有基于不同的模型的聚类算法,其中被广泛运用的聚类算法有以下几类:基于连通模型(connectivity-based)的聚类算法: 即本文将要讲述的层次聚类算法,其核心思想是按照对象之间的距离来聚类,两个离的近的对象要比两个离的远的对象更有可能属于同一cluster。基于中心点模型(centroid-based)的聚类算法: 在此类算法中,每个cluster都维持一个中心点(centorid),该中心点不一定属于给定的数据集。当预先指定聚类数目k时,此类算法需要解决一个优化问题,目标函数为所有的对象距其所属的cluster的中心点的距离的平方和,优化变量为每个cluster的中心点以及每个对象属于哪个cluster;此优化问题被证明是 NP-hard 的,但有一些迭代算法可以找到近似解,k-means 算法即是其中的一种。基于分布模型(distribution-based)的聚类算法: 此类算法认为数据集中的数据是由一种混合概率模型所采样得到的,因而只要将可能属于同一概率分布所产生的数据归为同一cluster即可,最常被使用的此类算法为高斯混合模型(GMM)聚类。基于密度(density-based)的聚类算法: 在此类算法中,密度高的区域被归为一个cluster,cluster之间由密度低的区域隔开,密度低的区域中的点被认为是噪声 (noise),常用的密度聚类算法为DBSCAN和 OPTICS。层次聚类算法 (hierarchical clustering) 将数据集划分为一层一层的clusters,后面一层生成的clusters基于前面一层的结果。层次聚类算法一般分为两类:Agglomerative 层次聚类:又称自底向上(bottom-up)的层次聚类,每一个对象最开始都是一个cluster,每次按一定的准则将最相近的两个cluster合并生成一个新的cluster,如此往复,直至最终所有的对象都属于一个cluster。本文主要关注此类算法。Divisive 层次聚类: 又称自顶向下(top-down)的层次聚类,最开始所有的对象均属于一个cluster,每次按一定的准则将某个cluster划分为多个cluster,如此往复,直至每个对象均是一个cluster。下图直观的给出了层次聚类的思想以及以上两种聚类策略的异同。另外,需指出的是,层次聚类算法是一种贪心算法(greedy algorithm),因其每一次合并或划分都是基于某种局部最优的选择。树形图(dendrogram)可以用来直观地表示层次聚类的成果。一个有5个点的树形图如下图所示,其中纵坐标高度表示不同的cluster之间的距离(“距离”的衡量准则可以多种多样,详见本文后面的定义),可以从这张图看到,x1x1和x2x2的距离最近(为1),因此将x1x1和x2x2合并为一个cluster(x1,x2)(x1,x2),所以在树形图中首先将节点x1x1和x2x2连接,使其成为一个新的节点(x1,x2)(x1,x2)的子节点,并将这个新的节点的高度置为1;之后再在剩下的4个cluster(x1,x2)(x1,x2),x3x3,x4x4和x5x5中选取距离最近的两个cluster合并,x4x4和x5x5的距离最近(为2),因此将x4x4和x5x5合并为一个 cluster(x4,x5)(x4,x5),体现在树形图上,是将节点x4x4和x5x5连接,使其成为一个新的节点(x4,x5)(x4,x5)的子节点,并将此新节点的高度置为2;….依此模式进行树形图的生成,直至最终只剩下一个cluster((x1,x2),x3),(x4,x5))((x1,x2),x3),(x4,x5))。可以直观地看到,如果我们想得到一个聚类结果,使任意的两个cluster之间的距离都不大于hh,我们只要在树形图上作一条水平的直线对其进行切割,使其纵坐标等于hh,即可获得对应的聚类结果。例如,在下面的树形图中,设h=2.5h=2.5,即可得到3个cluster(x1,x2)(x1,x2),x3x3和(x4,x5)(x4,x5)。衡量两个对象之间的距离的方式有多种,对于数值类型(Numerical)的数据,常用的距离衡量准则有 Euclidean 距离、Manhattan 距离、Chebyshev 距离、Minkowski 距离等等。对于dd维空间的两个对象x=[x1,x2,…,xd]Tx=[x1,x2,…,xd]T和y=[y1,y2,…,yd]Ty=[y1,y2,…,yd]T,其在不同距离准则下的距离计算方法如下表所示:Minkowski 距离就是LpLp范数(p≥1p≥1),而 Manhattan 距离、Euclidean 距离、Chebyshev 距离分别对应p=1,2,∞p=1,2,∞时的情形。另一种常用的距离是 Maholanobis 距离,其定义如下:dmah(x,y)=(x−y)T−1(x−y)−−−−−−−−−−−−−−−−√dmah(x,y)=(x−y)T−1(x−y)其中为数据集的协方差矩阵,为给出协方差矩阵的定义,我们先给出数据集的一些设定,假设数据集为X=(x1,x2,…,xn)∈RdnX=(x1,x2,…,xn)∈Rdn,xi∈Rdxi∈Rd为第ii个样本点,每个样本点的维度为dd,样本点的总数为nn个;再假设样本点的平均值mx=1n∑ni=1ximx=1n∑i=1nxi为00向量(若不为00,我们总可以将每个样本都减去数据集的平均值以得到符合要求的数据集),则协方差矩阵∈Rdd∈Rdd可被定义为=1nXXT=1nXXTMaholanobis 距离不同于 Minkowski 距离,后者衡量的是两个对象之间的绝对距离,其值不受数据集的整体分布情况的影响;而 Maholanobis 距离则衡量的是将两个对象置于整个数据集这个大环境中的一个相异程度,两个绝对距离较大的对象在一个分布比较分散的数据集中的 Maholanobis 距离有可能会比两个绝对距离较小的对象在一个分布比较密集的数据集中的 Maholanobis 距离更小。更细致地来讲,Maholanobis 距离是这样计算得出的:先对数据进行主成分分析,提取出互不相干的特征,然后再将要计算的对象在这些特征上进行投影得到一个新的数据,再在这些新的数据之间计算一个加权的 Euclidean 距离,每个特征上的权重与该特征在数据集上的方差成反比。由这些去相干以及归一化的操作,我们可以看到,对数据进行任意的可逆变换,Maholanobis 距离都保持不变。除了需要衡量对象之间的距离之外,层次聚类算法还需要衡量cluster之间的距离,常见的cluster之间的衡量方法有 Single-link 方法、Complete-link 方法、UPGMA(Unweighted Pair Group Method using arithmetic Averages)方法、WPGMA(Weighted Pair Group Method using arithmetic Averages)方法、Centroid 方法(又称 UPGMC,Unweighted Pair Group Method using Centroids)、Median 方法(又称 WPGMC,weighted Pair Group Method using Centroids)、Ward 方法。前面四种方法是基于图的,因为在这些方法里面,cluster是由样本点或一些子clus免费云主机域名ter(这些样本点或子cluster之间的距离关系被记录下来,可认为是图的连通边)所表示的;后三种方法是基于几何方法的(因而其对象间的距离计算方式一般选用 Euclidean 距离),因为它们都是用一个中心点来代表一个cluster。假设CiCi和CjCj为两个 cluster,则前四种方法定义的CiCi和CjCj之间的距离如下表所示:其中 Single-link 定义两个cluster之间的距离为两个cluster之间距离最近的两个对象间的距离,这样在聚类的过程中就可能出现链式效应,即有可能聚出长条形状的cluster;而 Complete-link 则定义两个cluster之间的距离为两个cluster之间距离最远的两个对象间的距离,这样虽然避免了链式效应,但其对异常样本点(不符合数据集的整体分布的噪声点)却非常敏感,容易产生不合理的聚类;UPGMA 正好是 Single-link 和 Complete-link 的一个折中,其定义两个cluster之间的距离为两个cluster之间两个对象间的距离的平均值;而 WPGMA 则计算的是两个cluster之间两个对象之间的距离的加权平均值,加权的目的是为了使两个cluster对距离的计算的影响在同一层次上,而不受cluster大小的影响(其计算方法这里没有给出,因为在运行层次聚类算法时,我们并不会直接通过样本点之间的距离之间计算两个cluster之间的距离,而是通过已有的cluster之间的距离来计算合并后的新的cluster和剩余cluster之间的距离,这种计算方法将由下一部分中的 Lance-Williams 方法给出)。Centroid/UPGMC 方法给每一个cluster计算一个质心,两个cluster之间的距离即为对应的两个质心之间的距离,一般计算方法如下:DUPGMC(Ci,Cj)=1∣Ci∣∣Cj∣∑x∈Ci,y∈Cjd(x,y)−12∣Ci∣2∑x,
关于“R语言的层次聚类方法是什么”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“R语言的层次聚类方法是什么”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注百云主机行业资讯频道。

相关推荐: Node进程管理工具pm2如何使用

这篇文章主要介绍了Node进程管理工具pm2如何使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Node进程管理工具pm2如何使用文章都会有所收获,下面我们一起来看看吧。 pm2 是一个守护进程管理工具,它能帮你守护和管理你的应…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

Like (0)
Donate 微信扫一扫 微信扫一扫
Previous 07/16 18:50
Next 07/16 18:50

相关推荐