精华内容
下载资源
问答
  • 理解前提:侠肝义胆陈浩天:理解向量空间变化:(半)正定矩阵​zhuanlan.zhihu.com侠肝义胆陈浩天:理解向量空间变化:PCA​zhuanlan.zhihu.com马氏距离的目的就是为了解决不同维度之间的方差(covariance)与相关性...

    理解前提:

    侠肝义胆陈浩天:理解向量空间变化:(半)正定矩阵zhuanlan.zhihu.com
    侠肝义胆陈浩天:理解向量空间变化:PCAzhuanlan.zhihu.com

    马氏距离的目的就是为了解决不同维度之间的方差(covariance)与相关性(correlation). 复习一下相关定义:

    • covariance:
      ,均值 就是期望的无偏估计;
    • correlation:

    Mahalanobis Distance

    先看定义。Denote that 协方差矩阵

    , 均值
    .

    单个样本的马氏距离

    两个样本(维度)之间的马氏距离,显然如果两个样本是独立同分布,马氏距离就变成了欧氏距离。

    Covariance

    首先我们看两个独立的分布,水平线上的分布的方差为

    ,垂直线上的分布的方差为
    . 假设两个聚类中心为
    .Intuitively, 有一个数据点
    我们想计算它到聚类中心的距离,
    因为横纵分布不同,所以说横纵坐标的权重肯定不一样!我们除以方差来进行标准化(variance-normalized),来解决维度分布差异/量纲不同(different variances)的问题。或者简单理解成参数权重不一样的问题,那么就相当于
    中的
    几何间隔,固定了几何间隔,函数间隔就不会变了。函数距离
    就是未进行归一化的距离。

    5f7126606e1465a86c30f5350fa16122.png

    如图所示,那么

    注意,这两个分布是独立的,也就是说它们之间没有covariance. (多元高斯分布使用马氏距离进行衡量:https://en.wikipedia.org/wiki/Multivariate_normal_distribution#Non-degenerate_case

    显然它们的协方差矩阵为:

    ace30cb0bf640201f1671593d3daa099.png

    上面的等式

    就可以写成一般形式了

    2580a21c67dfd0a8427ce761ed61439f.png

    Correlation

    variance-normalized解决了维度权重不一样的问题。但是如果两个维度分布之间有关联,怎么解决?

    9252a5bb52af66a5a6b8f45cd8395188.png

    图中圆圈为聚类中心点,直观看起来红色

    是离群点。事实上
    , 也就说,
    就算已经进行了variance-normalized, 相对距离还是不变的。因此,我们必须考虑加上correlation.

    (事实告诉我们)协方差矩阵包含着correlation的相关信息,但是我们很难直观地弄明白它是怎么做的。我们换个角度:我们通过旋转数据,来去掉variance和correlation.

    加上还有协方差矩阵,我们马上会联想到PCA. (相信看完我的笔记,你已经十分了解向量的旋转了)那么旋转后的数据如下图。

    eb80cff14045f96b00ca8a01d95797c1.png

    但是还没结束,因为这个时候仍然是

    . 接下来就是对主元除以标准差来进行标准化了,这里也是为了消除
    量纲差异,所以同样需要除以方差。

    04d4af2d677519beee5c72872b8e4e48.png

    这个时候就能把离群点真正分离出来了。

    为什么PCA可以?

    根据我的前两篇笔记,谈谈我的理解。

    如果两个特征之间是有联系的,那么它们的向量肯定不会正交。既然我们要去除correlation和covariance, 那么肯定是希望每个特征都是相互正交的,也就是相互独立。PCA就可以达到这个效果。

    那为什么是

    ?

    显然我们知道

    的特征向量
    是一样的,只不过特征值是
    . 既然特征向量不变,那么旋转的方向是一样的,不影响相互正交;倒数的话就是为了除以方差(
    variance-normalized),消除量纲差异. 所以这样改变。

    求解的过程中,如果协方差矩阵

    是非奇异的,那么就先考虑PCA.

    参考资料:

    Mahalanobis Distance

    展开全文
  • 设和为两个向量,求它们之间的距离。这里用Numpy实现,设和为ndarray <numpy.ndarray>,它们的shape都是(N,)为所求的距离,是个浮点数(float)。import numpy as np1.欧氏距离(Euclidean distance) 欧几里得...

    为两个向量,求它们之间的距离。

    这里用Numpy实现,设

    ndarray <numpy.ndarray>,它们的shape都是(N,)

    为所求的距离,是个浮点数(
    float)。
    import numpy as np

    1.欧氏距离(Euclidean distance)

    欧几里得度量(euclidean metric)(也称欧氏距离)是一个通常采用的距离定义,指在m维空间中两个点之间的真实距离,或者向量的自然长度(即该点到原点的距离)。在二维和三维空间中的欧氏距离就是两点之间的实际距离。

    def euclidean(x, y):
    
        return np.sqrt(np.sum((x - y)**2))

    2.曼哈顿距离(Manhattan distance)

    想象你在曼哈顿要从一个十字路口开车到另外一个十字路口,驾驶距离是两点间的直线距离吗?显然不是,除非你能穿越大楼。实际驾驶距离就是这个“曼哈顿距离”。而这也是曼哈顿距离名称的来源, 曼哈顿距离也称为城市街区距离(City Block distance)。

    def manhattan(x, y):
    
        return np.sum(np.abs(x - y))

    3.切比雪夫距离(Chebyshev distance)

    在数学中,切比雪夫距离(Chebyshev distance)或是L∞度量,是向量空间中的一种度量,二个点之间的距离定义是其各坐标数值差绝对值的最大值。以数学的观点来看,切比雪夫距离是由一致范数(uniform norm)(或称为上确界范数)所衍生的度量,也是超凸度量(injective metric space)的一种。

    def chebyshev(x, y):
    
        return np.max(np.abs(x - y))

    4.闵可夫斯基距离(Minkowski distance)

    闵氏空间指狭义相对论中由一个时间维和三个空间维组成的时空,为俄裔德国数学家闵可夫斯基(H.Minkowski,1864-1909)最先表述。他的平坦空间(即假设没有重力,曲率为零的空间)的概念以及表示为特殊距离量的几何学是与狭义相对论的要求相一致的。闵可夫斯基空间不同于牛顿力学的平坦空间。

    def minkowski(x, y, p):
    
        return np.sum(np.abs(x - y) ** p) ** (1 / p)

    5.汉明距离(Hamming distance)

    汉明距离是使用在数据传输差错控制编码里面的,汉明距离是一个概念,它表示两个(相同长度)字对应位不同的数量,我们以

    表示两个字
    ,
    之间的汉明距离。对两个字符串进行异或运算,并统计结果为1的个数,那么这个数就是汉明距离。

    def hamming(x, y):
    
        return np.sum(x != y) / len(x)
    展开全文
  • 在机器学习里,我们的运算一般都是基于向量的,一条用户具有100个特征,那么他对应的就是一个100维的向量,通过计算两个用户对应向量之间的距离值大小,有时候能反映出这两个用户的相似程度。这在后面的KNN算法和K-...

    在机器学习里,我们的运算一般都是基于向量的,一条用户具有100个特征,那么他对应的就是一个100维的向量,通过计算两个用户对应向量之间的距离值大小,有时候能反映出这两个用户的相似程度。这在后面的KNN算法和K-means算法中很明显。

    设有两个n维变量A=\left[ x_{11}, x_{12},...,x_{1n} \right]B=\left[ x_{21} ,x_{22} ,...,x_{2n} \right],则一些常用的距离公式定义如下:

    1、曼哈顿距离

    曼哈顿距离也称为城市街区距离,数学定义如下:

    d_{12} =\sum_{k=1}^{n}{\left| x_{1k}-x_{2k} \right| }

    曼哈顿距离的Python实现:

    from numpy import *
    vector1 = mat([1,2,3])
    vector2 = mat([4,5,6])
    print sum(abs(vector1-vector2))
    

    2、欧氏距离

    欧氏距离其实就是L2范数,数学定义如下:

    d_{12} =\sqrt{\sum_{k=1}^{n}{\left( x_{1k} -x_{2k} \right) ^{2} } }

    欧氏距离的Python实现:

    from numpy import *
    vector1 = mat([1,2,3])
    vector2 = mat([4,5,6])
    print sqrt((vector1-vector2)*(vector1-vector2).T)
    

    3、闵可夫斯基距离

    从严格意义上讲,闵可夫斯基距离不是一种距离,而是一组距离的定义:

    d_{12} =\sqrt[p]{\sum_{k=1}^{n}{\left( x_{1k} -x_{2k} \right) ^{p} } }

    实际上,当p=1时,就是曼哈顿距离;当p=2时,就是欧式距离。

     

    4、切比雪夫距离

    切比雪夫距离就是L_{\varpi},即无穷范数,数学表达式如下:

    d_{12} =max\left( \left| x_{1k}-x_{2k} \right| \right)

    切比雪夫距离额Python实现如下:

    from numpy import *
    vector1 = mat([1,2,3])
    vector2 = mat([4,5,6])
    print sqrt(abs(vector1-vector2).max)
    

    5、夹角余弦

    夹角余弦的取值范围为[-1,1],可以用来衡量两个向量方向的差异;夹角余弦越大,表示两个向量的夹角越小;当两个向量的方向重合时,夹角余弦取最大值1;当两个向量的方向完全相反时,夹角余弦取最小值-1。

    机器学习中用这一概念来衡量样本向量之间的差异,其数学表达式如下:

    cos\theta =\frac{AB}{\left| A \right| \left|B \right| } =\frac{\sum_{k=1}^{n}{x_{1k}x_{2k} } }{\sqrt{\sum_{k=1}^{n}{x_{1k}^{2} } } \sqrt{\sum_{k=1}^{n}{x_{2k}^{2} } } }

    夹角余弦的Python实现:

    from numpy import *
    vector1 = mat([1,2,3])
    vector2 = mat([4,5,6])
    print dot(vector1,vector2)/(linalg.norm(vector1)*linalg.norm(vector2))
    

    6、汉明距离

    汉明距离定义的是两个字符串中不相同位数的数目。

    例如:字符串‘1111’与‘1001’之间的汉明距离为2。

    信息编码中一般应使得编码间的汉明距离尽可能的小。

    汉明距离的Python实现:

    from numpy import *
    matV = mat([1,1,1,1],[1,0,0,1])
    smstr = nonzero(matV[0]-matV[1])
    print smstr
    

    7、杰卡德相似系数

    两个集合A和B的交集元素在A和B的并集中所占的比例称为两个集合的杰卡德相似系数,用符号J(A,B)表示,数学表达式为:

    J\left( A,B \right) =\frac{\left| A\cap B\right| }{\left|A\cup B \right| }

    杰卡德相似系数是衡量两个集合的相似度的一种指标。一般可以将其用在衡量样本的相似度上。

    8、杰卡德距离

    与杰卡德相似系数相反的概念是杰卡德距离,其定义式为:

    J_{\sigma} =1-J\left( A,B \right) =\frac{\left| A\cup B \right| -\left| A\cap B \right| }{\left| A\cup B \right| }

    杰卡德距离的Python实现:

    from numpy import *
    import scipy.spatial.distance as dist
    matV = mat([1,1,1,1],[1,0,0,1])
    print dist.pdist(matV,'jaccard')
    展开全文
  • 参考JTS的CGAlgorithms类distancePointLine方法,实现原理是根据向量原理进行计算 利用向量积(叉积)计算三角形...在这里θ表示两向量之间的角夹角(0° ≤ θ ≤ 180°),它位于这两个矢量 所定义的平面上。 向...

    参考JTS的CGAlgorithms类distancePointLine方法,实现原理是根据向量原理进行计算

    利用向量积(叉积)计算三角形的面积和多边形的面积:

    向量的数量积和向量积:

    (1)  向量的数量积

     

    (1)  向量的向量积

    两个向量a和b的叉积(向量积)可以被定义为:

    在这里θ表示两向量之间的角夹角(0° ≤ θ ≤ 180°),它位于这两个矢量 所定义的平面上。

    向量积的(长度)可以解释成以ab为邻边的平行四边形面积求三角形ABC的面积,根据向量积的意义,得到:

    a=axi+ayj+azk;

    b=bxi+byj+bzk;

    a×b=(aybz-azby)i+(azbx-axbz)j+(axby-aybx)k,为了帮助记忆,利用三阶行列式,写成:

    根据数量积可以判断P点在AB直接或者是A之外还是B之外

    如果在AB直接根据叉乘来计算距离

    使用向量叉积来求点到直线的距离
    向量 p(x, y)

    直线上的两点的向量:a(x1, y1), b(x2, y2)

    向量 ab = a - b

    点 p 到直线 ab 的距离:|p x ab| / |ab|

    |p x ab|是 p 和 ab 形成的四边面的面积,那么除以 底边|ab| 就是高,即 p 到 ab 的距离

    根据向量表示

    向量AP可以表示为(Px-Ax,Py-Ay,0) 向量AB(Bx-Ax,By-Ay,0)则

    ax=Px-Ax,ay=Py-Ay,az=0,bx=Bx-Ax,by=By-Ay,bz=0代入公式

    S=|axby-aybx|(绝对值)=(Px-Ax)(By-Ay)-(Py-Ay)(Bx-Ax)

    AB距离算出L之后,那么点到线距离就是S/L

     

    附录:

    展开全文
  • 余弦相似度的取值范围时[-1,1],相同的两个向量之间的相似度为1,如果希望得到类似的距离的表示,将1减去余弦相似度即为余弦距离,因此,宇轩距离的取值范围为[0,2],相同两个向量余弦相似度为0. 为什么在一些场景中...
  • 向量相似度匹配之豪氏距离

    千次阅读 2014-01-16 21:38:55
    以下内容转自大嘴说图像的微博“大嘴说图像微博入口地址” 今天大嘴说说向量相似度匹配的另一个重要的举例:豪氏...假设有两组集合A={a1,…,ap},B= {b1,…,bq},则这两个点集合之间的Hausdorff 距离定义为: H(A...
  • 正交化定义范数和向量之间的距离定义?Dot product?两个向量正交?两个向量集合的正交?连个向量正交点积为零非空向量集的正交向量集2.正交投影矩阵Pw丁丁的记忆方式3.线性系统的正交化映射4.正交化投影矩阵的应用...
  • 1.欧几里得距离 M维空间中两点的直线距离,也就是两点连线后的直线距离。 2.曼哈顿距离: ...二个点之间的距离定义为其各座标数值差绝对值的最大值。以(x1,y1)和(x2,y2)二点为例,其切比雪夫距离为max(|
  • 距离向量算法描述

    2011-05-31 19:51:00
    距离向量算法描述 DV算法是迭代、异步、分布式。 分布式(asynchronous):节点根据从一个或多个直接相连邻居接收信息,执行计算,并周期性与邻居交换计算结果。 迭代(Iterative)...
  • 范数_百度百科​baike.baidu.com空间范数和距离的关系1 向量范数向量的范数可以简单形象的理解为向量的长度,或者向量到零点的距离,或者相应的两个点之间的距离向量的范数定义向量的范数是一个函数||x||,满足非...
  • 几何中夹角余弦可用来衡量两个向量方向的差异,机器学习中借用这一概念来衡量样本向量之间的差异。(1)在二维空间中向量A(x1,y1)与向量B(x2,y2)的夹角余弦公式:(2) 两个n维样本点a(x11,x12,…,x1n)和b(x21,x22,…,...
  • 向量的大小和方向,零向量的方向_3

    千次阅读 2019-02-27 19:48:22
    目录 向量的大小 ...如果将向量看成是从一个点到另一个点的箭头,则大小就是箭头的长度,即所连接的两个点之间的距离。如图: 所以,我们要计算它的这个距离,我们决定使用勾股定理: 得出: ...
  • 理解前提:侠肝义胆陈浩天:理解向量空间变化:(半)正定矩阵​zhuanlan.zhihu.com侠肝义胆陈浩天:理解向量空间变化:PCA​zhuanlan.zhihu.com马氏距离的目的就是为了解决不同维度之间的方差(covariance)与相关性...
  • 欧氏距离,最常见的两点之间或多点之间的距离表示法,又称之为欧几里得度量,它定义于欧几里得空间中,如点 x = (x1,...,xn) 和 y = (y1,...,yn) 之间的距离为: 欧氏距离虽然很有用,但也有明显的缺点。它将样本...
  • 1.向量范数之前我们在学欧几里得空间或者酉空间时利用内积定义了两个向量之间的距离。对于 ,它作为酉空间已经定义好了向量的长度以及两个向量之间的距离。事实上,对于 我们还可以定义新的长度以及新的距离。由此...
  • 具体的距离:实际上距离除了我们经常用到的直线距离外,还有向量距离, 函数距离、 曲面距离、折线距离等等,这些具体的距离与距离之间的关系类似于苹果、香蕉等与水果的关系,前面是具体的事物,后面是抽象的概念。...
  • unity3d中计算两点之间的距离 首先在unity场景中创建一个Cube1、一个Cube2,用来当做待计算距离的两个物体,且新建脚本DisCal.cs,将脚本拖入Cube1.打开脚本,在脚本中首先定义一个全局变量public Transform cube2;...
  • 赋范空间赋范空间需要满足三条公理:非负性:齐次性:三角不等式:向量空间具有向量的加法、标量与向量的乘法,内积定义了两个向量的乘法,可以度量两个向量之间的夹角,范数能够对向量的长度、距离、邻域等进行度量...
  • 对于向量(矩阵),我们以及引进了向量(矩阵)范数衡量两个向量(矩阵)之间的距离,同样,我们还可以利用向量(矩阵)范数定义向量(矩阵)序列收敛。1.向量序列的收敛性定义1:设 上的向量序列 以及向量 满足:对...
  • 想要对新样本进行预测,需要测量它与每个支持向量之间的距离以及在训练过程中学到的支持向量的重要性(保存在SVC的dual_coef_属性中)做出来的。下面我们以forge数据集训练SVM为例,对应代码如下:...
  • 欧式距离和曼哈顿距离的比较

    千次阅读 2020-01-08 10:57:21
    欧几里得度量(euclidean metric)(也称欧氏距离)是一个通常采用的距离定义,指在m维空间中两个点之间的真实距离。 意义: 欧氏距离越小,两个向量的相似度越大;欧氏距离越小,两个向量的相似度越小。 缺点: 对...
  • 距离的定义 RIP 认为一个好路由就是它通过路由器数目少,即“距离短”。 RIP 允许一条路径最多只能包含 15 个路由器。 “距离最大值为 16 时即相当于不可达。可见 RIP 只适用于小型互联网。 RIP 不能...
  • 支持向量

    2018-11-15 21:12:59
    @通用机器学习 1、损失函数 2、决策边界 根据向量内积的定义,决策边界转化如下 ...此例子是高斯核,即衡量landmark和x之间的相似性(即欧几里得距离,最相似是1) 5、参数设置 6、多分类 7、使用场景 ...
  • 常见的平面概念是在三维空间中定义的:Ax+By+Cz+D=0Ax+By+Cz+D=...b是一个实数, 代表平面与原点之间的距离。实际上,支持向量机的最大边界超平面的方程w*x+b=0是假定出来的。其中,w为法向量,决定了超平面方向,b是...
  • 边界定义为分离超平面(决策边界)与其最近的训练样本之间的距离,即所谓支持向量。接下来用sklearn训练一个支持向量机模型来对鸢尾花数据集中的不同种花进行分类 from sklearn.svm import SVC svm=SVC(kerne...
  • 间隙函数是导出误差范围的有用工具,误差范围提供了特定点与变分不等式问题的精确解之间的估计距离。 在本文中,我们对集值向量拟变分不等式问题采用了类似的方法,并基于标量化方案以及没有标量参数的方案定义了...
  • 距离函数等价性

    2020-12-30 20:05:58
    ANN应用场景广泛,如搜索、推荐,ANN在使用时对两个样本或向量之间的相似度定义有不同方式,相似度使用距离来衡量,距离越大则相似度越小,距离越小则相似度越大。文本语料上训练出来的特征向量习惯采用余弦距离,...
  • 范数与距离

    千次阅读 2017-02-21 22:47:32
     向量的范数 可以简单形象的理解为向量的长度,或者两个点之间的距离。  向量的 p范数 定义为:   汉明距离:  汉明距离 是指各个位之间的差异,来源于二进制码。  比如 1101 与 0110 之间的汉明距离是 3...

空空如也

空空如也

1 2 3 4 5 ... 16
收藏数 318
精华内容 127
关键字:

向量之间的距离定义