美文网首页
PH525x series - Euclidean Distan

PH525x series - Euclidean Distan

作者: 3between7 | 来源:发表于2019-12-10 14:13 被阅读0次

本篇开始学习这个系列教程的第八章Distance and Dimension Reduction,第一节首先介绍了下什么是距离,然后讲的是Euclidean Distance距离的计算方法。

简单介绍下距离

其实距离的概念很简单,比如说,当我们想把一些动物分成几个亚类时,我们就会定义一种距离,然后用距离的远近区分彼此间的相似性。很多高纬度数据的分析中也会或直接或间接运用距离这一概念,比如基因组学中很常见的热图就是一个典型的例子。

欧氏距离( Euclidean Distance)

  • 二维坐标中的定义

AB两个点同处于一个笛卡尔坐标系中,那么这两个点之间的欧式距离就是:

\sqrt{(A_x - B_x)^2 + (A_y - B_y)^2}

  • 高维坐标中的定义

以R语言tissuesGeneExpression包中的一组基因表达数据为例说明,该数据中共有样本189个,基因22,215个。在这组数据中我们既可以计算样本之间的距离,又可以去计算计算基因之间的距离。

为了定义高纬度数据的距离,首先我们要搞清楚我们用于计算的是什么东西。其实也很简单,在本例中,如果你要计算样本之间的距离,那么每个点就代表每个样本,只不过每个点都有22,215个维度:(Y_{1,i},\cdots,Y_{22215,i})^T,一个维度对应一个基因;如果你要计算基因g之间的距离,那么点就代表基因,每个基因都有189个维度:(Y_{g,1},\cdots,Y_{g,189})^T,一个维度对应一个样本。

点定义好之后,剩下的就和在二维坐标上计算欧氏距离差不多了,比如计算样本i和样本j之间的距离是:

dist(i,j) = \sqrt{\sum_{g=1}^{22215}(Y_{g,i} - Y_{g,j})^2}

基因hg之间的距离就是:

dist(h,g) = \sqrt{\sum_{i=1}^{189}(Y_{h,i} - Y_{g,i})^2}

用矩阵代数计算距离

在矩阵代数相关的章节里,我们已知:

假设 :
r ≡ \left\{\begin{matrix}Y_1- \bar Y \\ \vdots \\ Y_N - \bar Y \end{matrix}\right\}
那么方差便等于:
r^Tr = \sum_{i=1}^N(Y_i - \bar{Y})^2

因此样本i和样本j之间距离的计算公式就可以变成:

dist(i,j) = (Y_i - Y_j)^T(Y_i - Y_j)

其中,Y_iY_j对应第ij列的样本。

举例

题目是分别计算样本1和样本2与样本89之间的距离,这里作者提供了3种计算方法,首先就是手工计算:

library(devtools)
install_github("genomicsclass/tissuesGeneExpression")
library(tissuesGeneExpression) 
data(tissuesGeneExpression)

x <- e[,1]
y <- e[,2]
z <- e[,87]
sqrt(sum((x-y)^2))
## [1] 85.8546
sqrt(sum((x-z)^2))
## [1] 122.8919

第二种方法就是使用函数crossprod():

sqrt( crossprod(x-y) )
##         [,1]
## [1,] 85.8546
sqrt( crossprod(x-z) )
##          [,1]
## [1,] 122.8919

第三种是一个新方法,就是使用dist()函数,这个函数的作用是计算每个行之间的距离,所以在这里我们还需要将矩阵转置一下:

d <- dist(t(e))
class(d)
## [1] "dist"
as.matrix(d)[1,2] 
## [1] 85.8546 
as.matrix(d)[1,87] 
## [1] 122.8919

注意,如果你使用整个矩阵去计算的话,这个函数就会生成一个22215 * 22215的矩阵,计算量这么大,非常有可能会让R卡死在那儿。不过dist()函数只会返回下三角矩阵,所以就没事。

原文链接

相关文章

  • PH525x series - Euclidean Distan

    本篇开始学习这个系列教程的第八章Distance and Dimension Reduction,第一节首先介绍了...

  • PH525x series - Exercises - Line

    本篇文章是PH525x series课程中Linear models and randomness的练习章节,下面...

  • 线性回归模型

    在学习PH525x series - Chapter 5 - Linear Models时,觉得有些地方理解起来有...

  • PH525x series - Hierarchical Mod

    在上一篇文章PH525x series - Bayesian Statistics中是将层次模型应用到了棒球运动当...

  • PH525x series - Collinearity

    共线性 当自变量之间存在共线性时,线性回归得到的最小二乘估计的值并不唯一。共线性简单点说就是,设计矩阵中的某几列存...

  • PH525x series - Introduction to

    本章会对线性模型做一个大致的介绍,还是举例说明吧: 例1:自由落体问题 想象自己是16世纪的伽利略,正在研究自由落...

  • PH525x series - Projections

    前面的章节学的是降维、奇异值分解以及主成分分析的大致内容,本篇文章则开始更加详细的介绍这背后的数学原理,首先要学的...

  • PH525x series - Running PCA and

    在PCA相关的章节最后,系列教程的作者又专门写了一章“在R中运行PCA和SVD”,使用的还是tissuesGene...

  • PH525x series - Statistical Mode

    正连续值的分布 在生物学中有很多数据的分布特征是“strictly positive and heavy righ...

  • PH525x series - Principal Compon

    这一章,作者就是在数学原理方面又细讲了下主成分分析(PCA) 例子:双胞胎身高 作者首先使用双胞胎身高的例子来说明...

网友评论

      本文标题:PH525x series - Euclidean Distan

      本文链接:https://www.haomeiwen.com/subject/tkfggctx.html