前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >余弦相似度及其生物信息学应用

余弦相似度及其生物信息学应用

作者头像
生信菜鸟团
发布2020-07-31 14:03:38
1.1K0
发布2020-07-31 14:03:38
举报
文章被收录于专栏:生信菜鸟团生信菜鸟团

众所周知,在R里面使用cor函数可以计算两个向量的相似情况,有两个参数尤为需要注意:

代码语言:javascript
复制
其中method参数是:One of "pearson" (default), "kendall", or "spearman": can be abbreviated.
 
然后use参数是:This must be (an abbreviation of) one of the strings "everything", "all.obs", "complete.obs", "na.or.complete", or "pairwise.complete.obs".

本来呢,pearson,kendall以及spearman这3个相关性公式就让人头疼了,但是最近我在教程:比较不同的肿瘤somatic突变的signature 发现两个不同算法的signature的相似性并不是和文章完全一致,原因是作者使用了一个cosine similarity(余弦相似度)的概念

cosine similarity(余弦相似度)如何计算

简单搜索了一下它的介绍:

  • 余弦值的范围在[-1,1]之间,值越趋近于1,代表两个向量的方向越接近;越趋近于-1,他们的方向越相反;接近于0,表示两个向量近乎于正交。
  • 最常见的应用就是计算文本相似度。将两个文本根据他们词,建立两个向量,计算这两个向量的余弦值,就可以知道两个文本在统计学方法中他们的相似度情况。实践证明,这是一个非常有效的方法。

第一次搜索它在R里面的用法,发现了tcR包里面的cosine.similarity函数,就简单试用了一下。但是计算得到的结果很诡异,并不是范围在[-1,1]之间。

再次尝试搜索cosine similarity(余弦相似度),发现在 The repertoire of mutational signatures in human cancer 文章里面也提到了:

COSMIC数据库的signature需要更新

为何使用cosine similarity(余弦相似度)而不是简单的相关性系数呢?

前面我们搜索了解到,cosine similarity(余弦相似度)最常见的应用就是计算文本相似度,那么,为什么生物信息学领域里面的cosmic的signature的相似性要采用cosine similarity(余弦相似度)而不是常见的简单的相关性系数呢?

比如,同样的是对cosmic内置的30个signature互相计算相关性,如下:

代码语言:javascript
复制
# https://cancer.sanger.ac.uk/cancergenome/assets/signatures_probabilities.txt
cosmic=read.table('https://cancer.sanger.ac.uk/cancergenome/assets/signatures_probabilities.txt',
                  header = T,sep = '\t')[,1:33]

head(cosmic[,1:4])
M=cor(cosmic[,4:33])
pheatmap::pheatmap(M)

出图如下:

而计算cosine similarity(余弦相似度)代码如下;

代码语言:javascript
复制
# 具体数学公式参考:https://www.jianshu.com/p/a894ebba4a1a
cos=function(x,y){
  sum(x * y) / (sqrt(sum(x ^ 2)) * sqrt(sum(y ^ 2)));
}
M2=apply(cosmic[,4:33], 2, function(x){
  apply(cosmic[,4:33], 2, function(y){
    cos(x,y)
  }) 
})  
rownames(M2)=rownames(M)
pheatmap::pheatmap(M2)

出图如下:

虽然我做了探索,但是我其实并不明白为什么cosmic的signature的相似性要采用cosine similarity(余弦相似度)而不是常见的简单的相关性系数。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-07-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信菜鸟团 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • cosine similarity(余弦相似度)如何计算
  • 为何使用cosine similarity(余弦相似度)而不是简单的相关性系数呢?
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档