-
2022-01-31 12:44:20
非度量多维标度分析(Non-metricMultidimensional Scaling,NMDS),是主坐标分析(PCoA)的一种替代方法,NMDS分析是对已设定的排序轴进行排序,其算法并非最大限度地保证排序对象的原始距离关系,而是反映这些对象之间的顺序关系。这句话听不懂没关系,我的理解是:如果要检测不同取样地微生物某一分类水平下或原始OTU数据分布是否相似,那么就可以进行NMDS分析。
先上两个例子:
上图中,NMDS分析了不同土层中撒石灰、肥料以及不施肥中3个土层的细菌群落差异分析。原文中,作者对NMDS分析的结论是:The NMDS analysis based on the UniFrac distance matrix showed that the soil bacterial community structure was different between the fertilization plus liming (NPKS-L) and the other treatments in the 0–10 cm soil layer (Fig. 3a), as there was a significant interaction between fertilization and liming on bacterial community structure (P=0.003); that relationship disappeared in the deeper soil layers.ÿ
更多相关内容 -
16s分析作图之NMDS非度量多维尺度分析
2020-12-21 00:58:57摘要:beta多样性分析网络上已经有很多,大部分出图都是基于R的基础包,很难看,而且很多图形不够完善,没有...NMDS分析,网络上已近有很多相关教程分享其原理,与其他排序(PCA、PCoA、CCA、RDA)方法的不同之处,简...摘要:beta多样性分析网络上已经有很多,大部分出图都是基于R的基础包,很难看,而且很多图形不够完善,没有做方差分析,更没有将其直接输到图上,本文主要做NMDS分析并做一张完善的高质量图片,提取stress值,推荐适合NMDS结果的差异分析并通过命令展示在图形上,最后加上置信区间椭圆。
NMDS分析,网络上已近有很多相关教程分享其原理,与其他排序(PCA、PCoA、CCA、RDA)
方法的不同之处,简单来讲NMDS也是一种使用物种组成数据的排序称作非限制性排序;NMDS基于距离算法,优于PCA、PCoA、CCA、RDA的地方在于当样本或者物种数量过多的时候使用NMDS会更加准确;
基于R语言,开始作图:安装package,两个重要的包
install.packages("vegan")#微生态常用包,一定安装上
install.packages("ggplot2")
调用package
library("vegan")
#设定工作路径
setwd("E:/马兄作图")
#读取数据,一份otu.table文件和一份分组信息文件
design
otu=read.table("16s_otu_tablejidai.txt",row.names=1, header=T,sep="\t")
#如果数据调整为列名是OTU,行名是样本名
otu=t(otu)
#查看一下
head(otu)
#标准化,当然method有很多,可以跟换?decostand查看其它method
vare.hel
#计算矩阵
vare.dis
#使用NMDS的方法
vare.mds
到此分析过程就算完成了,使用基础包plot()作图当然已不是我们最佳的选择了,图形很基础,我就不展示了,下面基于ggplot做一张完善的图#首先提取前两轴坐标
point = scores(vare.mds)
#将分组文件和得分文件合并
index = merge(design, point,by="row.names",all=F)
计算Stress值
Stress值是反映模型合适程度的指标,NMDS会多次打乱数据计算Stress值,知道找到最合适的模型,也就是最低的Stress值;理想状况下,Stress值为0,一般Stress值低于0.1较为合理(本数据这个值偏高一些)
vare.mds
结果输出中寻找下面stress结果:
#显着性检验;anosim本质是基于排名的算法更加适合NMDSanosim.result
summary(anosim.result)
结果输出,得到下面这两个值:
#tiff输出图形,适合大部分出版刊物,入门级别分辩率300,18*14的长宽;
tiff(file="beta_bray_NMDS.tif", res = 300, compression ="none", width=180,height=140,units= "mm")
#开始出图,将上面得到的三个指标在图中更换stress,R,p,不多说,代码如下:
library("ggplot2")
p = ggplot(index, aes(x=NMDS1, y=NMDS2, color=SampleType)) +
geom_point(alpha=.7, size=2) +
labs(x=paste("NMDS1"),
y=paste("NMDS1"),
title="")#置信区间当然要加上,有三种方式,线条类型也可以更改
p+stat_ellipse(type = "t", linetype = 2)+
annotate("text",x=-1.07,y=-1,parse=TRUE,size=4,label=""R:"*0.7031",family="serif",fontface="italic",colour="darkred")+
annotate("text",x=-1.1,y=-0.9,parse=TRUE,size=4,label=""p:"*0.001",family="serif",fontface="italic",colour="darkred")+
annotate("text",x=-1,y=-0.78,parse=TRUE,size=4,label=""Stress:"*0.1208",family="serif",fontface="italic",colour="darkred")dev.off()
成图展示:
当然这还达不到对于拥有轻微强迫症的我对于图行要求:
请看下一篇文章
-
非度量多维尺度分析
2021-01-12 19:51:48导读非度量多维尺度分析(nonmetric multidimensional scaling, NMDS),是一种简介的梯度分析方法,也是基于距离或者相异性矩阵。与其它主要用于最大化变异和一致性的方法不一样,NMDS是一种排序方法。这对于距离缺失...导读
非度量多维尺度分析(nonmetric multidimensional scaling, NMDS),是一种简介的梯度分析方法,也是基于距离或者相异性矩阵。与其它主要用于最大化变异和一致性的方法不一样,NMDS是一种排序方法。这对于距离缺失的数据有优势,只要先办法确定对象之间的位置关系,便可以进行NMDS分析。NMDS的计算过程会以代码的形式贴在下方,供大家参考
数据格式
NMDS与PCoA一样,NMDS可以基于任何类型距离、相异性矩阵对象(样方)进行排序。当然也可以是原始数据矩阵。这里我用的是weighted unifrac距离矩阵数据
图1 weighted 距离矩阵
分析代码
NMDS排序分析可以通过生态学分析R包vegan中的metaMDS()函数实现。因为输入metaNMDS()的数据可以是原始数据矩阵,也可以是距离矩阵,这里拿上面列举的数据做示范。
运行NMDS分析
rm(list = ls())
path
setwd(path)
library(vegan) ## 加载包
weight_dm
sep = "\t",check.names = F) ## 加载weighted距离矩阵数据
meta_info
#group
set.seed(1234) ## 设置随机种子,以便结果可以重复
weight_nmds
weight_nmds$stress # 压力值,一般小于0.1比较好,但是也要根据所选择的的主成分数目来看
图2 strees的scree图,stress随着主成分数的增加而减少
图片来源GUSTA ME[2]
作图
tiff("NMDS.tiff",width=1000,height=1000)
p
cex=1.5, font=1, pch=5) ##NMDS作图###
legend('topleft', legend=levels(meta_info$group), col=c("purple","green","blue","red"),pch=5,cex=1.5,box.lty =1)###NMDS添加Legend###
with(weight_nmds,ordiellipse(weight_nmds, meta_info$group,display = "sites", kind = "se", conf = 0.95, lwd=2,cex=0.8,lty=1,col=c("purple","green","blue","red"),font=2,label = FALSE))
#dev.off()
#env
#head(env)
#ef1
#p
#ef1
dev.off()
图3 常规方法作图
site.scores
site.scores
head(site.scores)
library("FactoMineR")
library("factoextra")
p
geom_point(aes(shape=group,color=group,fill=group),size=3)
p
p
panel.grid.minor = element_blank(),
legend.position="top",
axis.title.x = element_text(size = 16),
axis.text.x = element_text(angle=0,color="black",vjust = 0.95,hjust = 0.95,size=12),
axis.title.y = element_text(size=16),
axis.text.y = element_text(size=14,color="black"),
strip.text.x = element_text(size=18),
legend.text = element_text(size=14),
legend.title = element_text(size=16))
p
p
ggsave("NMDS.tiff", height=8, width=8, units="in")
图4 ggplot2作图
参考
-
NMDS非度量多维尺度分析—基于微生物群落
2021-01-28 09:17:51今天,看到赖江山老师在博客中分享了vegan中的一些函数的中文帮助文件,翻译专业,可读性强,这本材料是我们熟悉vegan原理...非度量多维尺分析( NMDS)是一种很好的排序方法,因为它可以使用 具有生态学意义的 方法来...今天,看到赖江山老师在博客中分享了vegan中的一些函数的中文帮助文件,翻译专业,可读性强,这本材料是我们熟悉vegan原理和提高内涵的有力学习途径。(末尾有彩蛋)本文主要做NMDS分析并做一张完善的高质量图片,提取stress值,推荐适合NMDS结果的差异分析并通过命令展示在图形上,最后加上置信区间椭圆。非度量多维尺分析( NMDS)是一种很好的排序方法,因为它可以使用 具有生态学意义的 方法来度量群落差异 。一个好的 相异性测度与环境梯距离具有很好的秩 关系。因为 NMDS只使用秩信息,并且映射的在有序空间 上是非线性的, 故它能处理任意 类型 的非线性物种 矩阵 ,并能有效、稳健地找 到潜在梯度。NMDS分析,网络上已近有很多相关教程分享其原理,与其他排序(PCA、PCoA、CCA、RDA) 方法的不同之处,简单来讲NMDS也是一种使用物种组成数据的排序称作非限制性排序;NMDS基于距离算法,优于PCA、PCoA、CCA、RDA的地方在于当样本或者物种数量过多的时候使用NMDS会更加准确;
vegan 的ordiplot()函数可以用来绘制NMDS 的结果:plot(vare.mds,type= "t")
vegan 包中的metaMDS()函数不需要单独计算相异矩阵,直接 将原始数据矩阵作为输入。结果比以前更丰富 ,除了奥杜尔包中isoMDS()结果中 的成分外还有很多其他结果输出:nobj, nfix, ndim, ndis, ngrp, diss, iidx, jidx, xinit, istart, isform, ities, iregn, iscal, maxits, sratmx, strmin, sfgrmn, dist, dhat, points, stress, grstress, iters, icause, call,model, distmethod, distcall, data, distance, converged, tries,engine, species。该函数将这些的过程封装到一个函数中:一般生态群落数据比较离散 ,用平方根转换数据 ,然后进行 Wisconsin双重 标准化,或物种除以它们的最大值 将数据 均一化 为相等的总数。这两个标 准化通常可以提高排序的质量,但是我们在最初分析中忘了考虑数据的转化问题 。
默认使用 Bray-Curtis相异系数。
运行多次独立的isoMDS(),并在一定次数的尝试之后停止,或者找到两个具有最小应力 函数之后停止 ,返回了最佳的排序结果。
旋转排序图,使样方坐标的最大差位于第一轴上。
对排序结果进行标准化,使一个单元应于将群落相似性从重复相似性减半。
函数发现物种 排序轴为样方排序轴 的加权平均值 并将其扩大,使物种和样 方排序轴 具有相等的方差,可以使用shrink = TRUE撤消。metaMDS()的帮助页面将提供更多细节,并解释函数使用 的帮助页面将提供更多细节,并解释函数使用 过程 。
清理环境#清空内存
rm(list=ls())
准备主题和数据Mytheme
#scale_fill_brewer(palette = "YIOrRd", guide = guide_legend(title = NULL), limits = c("CK1","CK3","CK5","CK7","CK9","CK11","CK13","CK15","CK17","CK19"))+
theme(
panel.grid.major=element_blank(),
panel.grid.minor=element_blank(),
plot.title = element_text(vjust = -8.5,hjust = 0.1),
axis.title.y =element_text(size = 24,face = "bold",colour = "black"),
axis.title.x =element_text(size = 24,face = "bold",colour = "black"),
axis.text = element_text(size = 20,face = "bold"),
axis.text.x = element_text(colour = "black",size = 14),
axis.text.y = element_text(colour = "black",size = 14),
legend.text = element_text(size = 15,face = "bold")
#legend.position = "none"#是否删除图例
)
#设定路径
path = getwd()
# 导入包
library(phyloseq)
library(ggplot2)
suppressMessages(library(vegan))
# 使用示例数据,注意是phyloseq封装好的
data("GlobalPatterns")
ps = GlobalPatterns
提取数据 运算NMDSvegan_otu
OTU
if(taxa_are_rows(OTU)){
OTU
}
return(as(OTU,"matrix"))
}
x = as.data.frame(t(vegan_otu(GlobalPatterns)))
head(x)
x = as.matrix(x)
x = t(t(x)/colSums(x,na=T))* 100 # normalization to total 100
head(x)
##bray
bray.mds
bray.mds
##jackard
x = decostand(x,"pa")
jaccard.mds
jaccard.mds
str(bray.mds) #structure
# ## 输出坐标
bray_axis = bray.mds$points
jaccard_axis = jaccard.mds$point
计算Stress值
Stress值是反映模型合适程度的指标,NMDS会多次打乱数据计算Stress值,直到找到最合适的模型,也就是最低的Stress值;理想状况下,Stress值为0,一般Stress值低于0.1较为合理(本数据这个值偏高一些)# 读入实验设计和Alpha多样性值
design = as.data.frame(sample_data(ps))
head(design)
########outbray出图坐标准备
outbray = as.data.frame(bray_axis)
index = merge(outbray,design, by="row.names",all=F)
head(index)
dim(index)
stress = paste("bray ","stress: ",round(bray.mds$stress,3), sep = "")
stress
使用坐标和stress出图mi = c("#FFF5EB" ,"#FEE6CE" ,"#FDD0A2", "#FDAE6B", "#FD8D3C", "#F16913", "#D94801", "#A63603", "#7F2704","black")
# mi=c("#1B9E77" ,"#D95F02", "#7570B3","#E7298A")
p
geom_point(alpha=.7, size=5, pch = 21) +
labs(x=paste("NMDS1",sep=""),
y=paste("NMDS2" ,sep=""),
title=stress)+
#stat_ellipse( linetype = 2,level = 0.65,aes(group =group, colour = group))+
#stat_ellipse( linetype = 1,level = 0.8)+
#geom_text_repel(aes(label=points$id),size=4)+
scale_fill_manual(values = mi)+
#labs(title = "toamto hea and dis")+
guides(color=guide_legend(title = NULL),shape=guide_legend(title = NULL))+
#scale_y_continuous(expand = c(0,0))+
geom_hline(aes(yintercept=0), colour="black", linetype=2) +
geom_vline(aes(xintercept=max(index$MDS2/2)), colour="black", linetype="dashed")
p
# points$id=row.names(points)
# p+geom_text(aes(label=points$id),size=4)#?stat_ellipse
p = p + Mytheme
p
plot_name = paste(path,"/a3_NMDS.pdf",sep = "")
ggsave(plot_name, p, width = 8, height = 6)
成图展示:
基于ade4 的NMDS分析(此中文来自赖江山老师团队翻译结果)
非度量多维尺分析( Non-metric multidimensional scaling, NMDS)可以用 )可以用 MASS包中的 isoMDS()函数实现,输入相异矩阵即可。函数实现,输入相异矩阵即可。vegan的 vegdist()函数可 以计算群落 的相异矩阵 ,默认是 Bray-Curtis相异系数,现在通常称为 Steinhaus 相似指数,在芬兰称为 Sorensen指数。基本步骤如下 指library(vegan)
library(MASS)
data(varespec)
vare.dis
vare.mds0
NMDS排序结构通过迭代来不断最小化应力函数(stress function),默认情 况下是找到两个维度并使用度量尺度分析(cmdscale)作为初始结构进行调整。从 跟踪(trace)信息中可以看出迭代过程(通过设置参数trace = F来隐藏迭代过程)。
isoMDS()返回一个排序构建过程和应力函 数的列表(item points, stress)。S应力函数是一个拟合度统计量,是排序空 间内对象结构与原始距离矩阵之间的相异程度 的度量。NMDS将观察到的群落差异非线性地映射 到排序空间上,可以基于任何类型距离矩阵对 对象进行排序。可以用MASS包的函数 Shepard()或者vegan包的stressplot()函数来评估 NMDS的结果(Shepard图)。stressplot(vare.mds0, vare.dis)
stressplot函数绘制了一个Shepard图,其中 横坐标为原始距离,纵坐标为排序距离,用单 调的折线拟合。此外,stressplot()显示了这两者 距离相关性,如拟合度(goodness of fit)与应 力函数的关系是R²= 1 - S²。“fit-based R²”是拟合 值θ(d)和运算出的排序图上距离d之间的相关 性,或者是折线和点之间的相关性。它应该是 线性的,即使拟合有点弯曲,通常仍被称为“线性拟合”。这两个相关性都是基 于Shepard图中的残差,但是它们的零模型有所不同。在线性拟合中,零模型是 所有排序距离相等,拟合为一条水平直线。这听起来很合理,但是需要N-1维的 N个点的零模型,而这个零模型在排序空间中是没有几何意义的。基本应力采 用零模型,所有的观测都放在同一点上,这在几何上是可能的。注意,有时人 们使用群落差异和排序距离之间的相关性。但是由于NMDS是一种非线性方 法,因此这样做既危险又具有误导性:使用该准则,具有更多非线性关系的分类将会出现更多错误。
reference
http://wap.sciencenet.cn/home.php?mod=space&uid=267448&do=blog&id=1194081
-
多维标度分析
2015-01-11 21:03:42多维标度法(Multidimensional Scaling)是一种多维标度法是一类多元统计分析方法的总称,包含各种各样的模型和手段,其目的是通过各种途径把高维的研究对象转化成低维情形进行定位、分析和归类,同时又保留对象间的... -
R软件包vegan教程 2.1非度量多维度标度变换
2020-12-21 00:58:562.1 非度量多维度标度变换(Non-metric Multidimensionalscaling)可以用vegan里的 monoMDS函数执行非度量多维标度变换,它需要把差异(dissimilarities)作为输入量。差异用vegan里的vegdist函数求取。默认值是Bray-... -
ggord:使用 ggplot2 绘制排序图
2021-05-30 15:02:41戈德 马库斯·W·贝克, 一个使用 ggplot2 创建排序图的简单包。... 大多数方法适用于主成分分析的结果,但也可使用非度量多维标度、多重对应分析、对应分析和线性判别分析的方法。 可用的方法如下: # -
多维尺度变换(multidimensional scaling, MDS)
2017-04-16 12:08:09多维尺度变换(multidimensional scaling, MDS)是在低维空间去展示高维多元数据的一种可视化方法。该方法看起来类似于利用主成分得分作图,或者对两个线性判别量的得分作图。与上述方法不同的是,多维尺度变换的基本... -
统计分析/PCA,PCoA,NMDS等的区别
2018-04-02 10:51:27相信大家在做微生物多样性研究时经常听到PCA分析、PCoA分析,NMDS分析,CCA分析,RDA分析。它们对物种(或基因、功能)的分析具有重要作用,因而频频出现在16S测序及宏基因组测序中。...排序(ordination)的... -
如何区分PCA PCoA NMDS LDA t-SNE?
2019-08-30 15:56:48非度量多维尺度分析(non-metric multi-dimensional scaling, NMDS),是一种将多维控件的研究对象(样本或者变量)简化到低维空间进行定位/分析和归类,同时又保留对象原始关系的数据分析方法。其基本特征是将对象间... -
论文研究 - 受热污水影响的地中海大河底栖硅藻群落
2020-05-30 01:02:40分析了在污水处理前后从天然和人工底物中采集的场地中进行的调查,并进行了非度量多维标度(NMDS),相似度百分比分析(SIMPER)和单向相似度分析(ANOSIM)以评估变化在社区结构中。 使用基于距离的多元线性回归... -
数据挖掘原理与实践(4)——相似性度量
2019-02-20 10:43:36大家好,今天我给大家介绍一下什么是相似性度量,其中会重点介绍对象之间的相似性度量,有兴趣的朋友可以好好看一看。相似性度量是衡量变量之间互相关系的强弱、联系紧密程度的重要手段,因此相似性度经常被许多数据... -
221.Beta多样性PCoA和NMDS排序
2020-06-29 07:00:00Beta多样性与PCoA和NMDS排序本节作者:文涛,刘永鑫版本1.0.4,更新日期:2020年6月27日本项目永久地址:https://github.com/YongxinLiu/Mi... -
【ELT.ZIP】OpenHarmony啃论文俱乐部——多维探秘通用无损压缩
2022-03-11 10:49:17图1:序列abracadabra的Huffman树 图2:算术编码过程 BWT算法 块排序压缩算法(block-sorting compression algorithm),通常被称为Burrows-Wheeler变换算法*(Burrows–Wheeler compression algorithm)***,... -
洛伦兹曲线看财富分配的公平性
2020-03-15 12:21:40读了篇自己很早以前的写的一篇文章,学到了不少,然而和最近的一些新想法相冲突,所以本文先抽象简化之前那篇,最后加上浙江温州那段,后面有时间再写关于多维填充导致的尺度不变性的解释,也就是幂律的终极根源。... -
机器学习系列--数据预处理
2018-09-04 14:51:04预处理 现实世界数据源极易受噪声、缺失值和不一致数据的侵扰。低质量的数据将导致低质量的挖掘结果。 属性是一个数据字段,表示数据...非对称,比如:疾病,阴性和阳性,结果不是同样重要。 序数属性... -
哈工大硕士生用 Python 实现了 11 种经典数据降维算法,源代码库已开放
2019-11-27 08:58:00因此,大部分经典降维技术也是基于这一内容而展开,其中降维方法又分为线性和非线性降维,非线性降维又分为基于核函数和基于特征值的方法。 线性降维方法: PCA 、ICA LDA、LFA、LPP(LE 的线性表示) ... -
基于 Python 的 11 种经典数据降维算法
2019-11-28 09:34:54MDS 即多维标度分析,它是一种通过直观空间图表示研究对象的感知和偏好的传统降维方法。该方法会计算任意两个样本点之间的距离,使得投影到低维空间之后能够保持这种相对距离从而实现投影。 由于 sklearn 中 MDS 是... -
异常点检测算法分析与选择
2018-05-28 12:06:28另一方面,基于距离的方法理论上能处理任意维任意类型的数据,当属性数据为区间标度等非数值属性时,记录之间的距离不能直接确定,通常需要把属性转换为数值型 [37 ] [44 ] ,再按定义计算记录之间的距离。当... -
-
sklearn自学指南(part33)--流形学习
2021-01-29 17:49:36文章目录流形学习简介Isomap局部线性嵌入修正局部线性嵌入算法(MLLE)Hessian EigenmappingSpectral Embedding局部切线空间排列算法多维标度(MDS)度量多维标度非度量多维标度t分布随机邻居嵌入(t-SNE)优化t-SNEBarnes... -
MADlib——基于SQL的数据挖掘解决方案(1)——数据挖掘入门
2017-12-19 11:09:30根据回归方法中因变量的个数和回归函数的类型(线性或非线性)可将回归方法分为以下几种:一元线性、一元非线性、多元线性、多元非线性。另外还有两种特殊的回归方式,一种是在回归过程中可以调整变量数的回归方法... -
数据挖掘技术 知识点整理
2019-12-31 16:35:01对数据集的数据进行排序 确定箱子个数k、选定数据分箱的方法并对数据集中数据进行分箱 选定处理箱子数据的方法,并对其重新赋值 常用分箱方法:等深分箱、等宽分箱、自定义区间、最小熵分箱法 6. 设... -
R语言--数据挖掘4---探索性数据降维分析
2021-04-15 22:44:21KaTeX parse error: No such environment: equation at position 8: \begin{̲e̲q̲u̲a̲t̲i̲o̲n̲}̲ u_1={ \left[ \… 将特征值排序,计算方差贡献率和累计方差贡献率,找到达到累计贡献率的前几个特征值 λ... -
数据挖掘笔记
2015-07-22 13:18:04也就是说,如果度量是比率标度的,则我们可以说一个值是另一个的倍数。此外,这些值是有序。 离散属性具有有限或无限可数个值,可以具有数值值。如果一个属性可能的值集合是无限的。但是可以建立一个与自然数的... -
常见分析方法 | PCA、PCoA和NMDS有什么区别?
2021-01-16 11:43:18非度量多维标度分析法 | Non-metric multidimensional scaling,NMDS NMDS分析与PCoA分析的相同点在于两者都使用样本相似性距离矩阵进行降维排序分析,从而在二维平面上对样本关系做出判断。 不同于PCoA分析,NMDS... -
数据挖掘十大经典算法(详解)
2016-01-18 15:32:57(4)不适合于发现非凸面形状的簇,或者大小差别很大的簇。 (5)对于"噪声"和孤立点数据敏感,少量的该类数据能够对平均值产生极大影响。 算法的改进 针对算法存在的问题,对K-means算法提出一些改进: 一... -
R语言如何做NMDS分析(26)
2022-05-09 16:52:15 非度量多维标度(NMDS)分析,是PCoA的非度量替代方法。NMDS是一种将多维空间的研究对象(样本或变量)简化到低维空间进行定位、分析和归类,同时又保留对象间原始关系的数据分析方法。NMDS需要在一开始就要指定... -
KDD 2016 | SDNE:结构化深层网络嵌入
2022-01-22 09:52:39在此之前,除了一些经典的图嵌入或降维算法,如多维标度(MDS)、IsoMap、局部线性嵌入(LLE)和拉普拉斯特征映射,业界主要使用的方法有DeepWalk和LINE。DeepWalk更倾向于具有更高二阶邻近度的节点产生类似的低维表示,...