统计距离

5 分钟阅读

Permalink

Entropy, [ˈentrəpi], 熵,无序状态

信息量Permalink

信息不确定性越大,信息量越大。

假定X是随机事件集合,其中 p(x0) 表示事件x0的概率,那么事件x0的信息量定义为 h(x0)=log2p(x0)

信息熵Permalink

H(X)=ni=1p(xi)log2p(xi)

信息熵用来衡量事物的不确定性,信息熵越大,事物越具有不确定性。

相对熵 (KL散度)Permalink

设 p(x)、q(x) 是 离散随机变量 X 中取值的两个概率分布,则 pq 的相对熵是:

DKL(pq)=ni=1p(xi)log2p(xi)q(xi)

另外有推导证明:DKL(pq)0

相对熵可以用来衡量两个概率分布之间的差异。该公式的意义在于,求p与q之间的对数差在p上的期望值。

交叉熵Permalink

设p(x)是真实分布,q(x)是非真实分布。使用q(x)来表示p(x)的编码长度,则:

H(p,q)=ni=1p(x)log2q(x)

另外有:

DKL(pq)=ni=1p(xi)log2p(xi)q(xi)=ni=1p(xi)log2p(xi)ni=1p(xi)log2q(xi)

可以得出:

DKL(pq)=H(p,q)H(p)

既可以理解为:用交叉熵比信息熵多出的部分,就是相对熵。

又有DKL(pq)0,得出 H(p,q)H(p)

交叉熵广泛用于sigmoid和softmax函数中作为损失函数使用。

方差Permalink

方差Permalink

方差(variance): 用来度量随机变量和其数学期望(即均值)之间的偏离程度。

σ2=(xiμ)2Nσ2xiμN

标准差Permalink

标准差:方差的平方根,用来反映数据集的离散程度。

σ=(xiμ)2N

均方误差Permalink

均方误差:数据偏离真实值的距离平方和的平均数

均方根误差:均方误差的平方根

MSE=(xxi)2N=MSE

欧式距离Permalink

以二维空间举例如图:

求A点与B点的欧氏距离。

在二维空间欧式距离就是两点的直线距离:

E(A,B)=c=(b1a1)2+(b2a2)2

多维空间同理:

E(p,q)=(p1q1)2+(p2q2)2+...+(pnqn)2=ni=1(piqi)2

欧式相似度:

euclidean_similarity=11+E(p,q)

意义:用于对数值差异敏感的场景。

python实现Permalink

#!/usr/bin/env python

from math import *

def euclidean_distance(x,y):
  return sqrt(sum(pow(a-b,2) for a, b in zip(x, y)))

print euclidean_distance([0,3,4,5],[7,6,3,-1]) #9.74679434481

余弦相似度Permalink

余弦定理:

c2=a2+b22abcos(θ)

进一步推导:

cos(θ)=a2+b2c22ab=a1b1+a2b2a21+a22×b21+b22

多维空间同理:

cosine_similary(A,B)=cos(θ)=A×B||A||×||B||=ni(Ai×Bi)ni(A2i)×ni(B2i)

意义:值越趋于1越相似。一般用于数值不敏感,方向差异敏感的场景。

python实现Permalink

#!/usr/bin/env python

from math import *

def square_rooted(x):
   return round(sqrt(sum([a*a for a in x])),3)

def cosine_similarity(x,y):
  numerator = sum(a*b for a,b in zip(x,y))
  denominator = square_rooted(x)*square_rooted(y)
  return round(numerator/float(denominator),3)

print cosine_similarity([3, 45, 7, 2], [2, 54, 13, 15]) # 0.972

参考:Permalink

IMPLEMENTING THE FIVE MOST POPULAR SIMILARITY MEASURES IN PYTHON

SNRPermalink

信噪比:Signal-to-noise ratio,比值大于1时表明信号大于噪音,比值越大越好。

令标准数据为A:[A0,A1,A2,],采集数据为B:B0,B1,B2,],则计算如下:

Noise=AB=[A0B0,A1B1,...]SNR=10×log10(Ai¯A)2(NiˉN)2