统计距离
熵Permalink
Entropy, [ˈentrəpi], 熵,无序状态
信息量Permalink
信息不确定性越大,信息量越大。
假定X是随机事件集合,其中 p(x0) 表示事件x0的概率,那么事件x0的信息量定义为 h(x0)=−log2p(x0)。
信息熵Permalink
H(X)=−n∑i=1p(xi)log2p(xi)信息熵用来衡量事物的不确定性,信息熵越大,事物越具有不确定性。
相对熵 (KL散度)Permalink
设 p(x)、q(x) 是 离散随机变量 中取值的两个概率分布,则
对
的相对熵是:
另外有推导证明:DKL(p∥q)≥0
相对熵可以用来衡量两个概率分布之间的差异。该公式的意义在于,求p与q之间的对数差在p上的期望值。
交叉熵Permalink
设p(x)是真实分布,q(x)是非真实分布。使用q(x)来表示p(x)的编码长度,则:
H(p,q)=−n∑i=1p(x)log2q(x)另外有:
DKL(p∥q)=n∑i=1p(xi)log2p(xi)q(xi)=n∑i=1p(xi)log2p(xi)−n∑i=1p(xi)log2q(xi)可以得出:
DKL(p∥q)=H(p,q)−H(p)既可以理解为:用交叉熵比信息熵多出的部分,就是相对熵。
又有DKL(p∥q)≥0,得出 H(p,q)≥H(p)。
交叉熵广泛用于sigmoid和softmax函数中作为损失函数使用。
方差Permalink
方差Permalink
方差(variance): 用来度量随机变量和其数学期望(即均值)之间的偏离程度。
σ2=∑(xi−μ)2Nσ2为总体方差,xi为样本变量,μ为总体均值,N为样本数量标准差Permalink
标准差:方差的平方根,用来反映数据集的离散程度。
σ=√∑(xi−μ)2N均方误差Permalink
均方误差:数据偏离真实值的距离平方和的平均数
均方根误差:均方误差的平方根
MSE=∑(x−xi)2N均方根误差=√MSE欧式距离Permalink
以二维空间举例如图:
求A点与B点的欧氏距离。
在二维空间欧式距离就是两点的直线距离:
E(A,B)=c=√(b1−a1)2+(b2−a2)2多维空间同理:
E(p,q)=√(p1−q1)2+(p2−q2)2+...+(pn−qn)2=√n∑i=1(pi−qi)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+b2−2abcos(θ)进一步推导:
cos(θ)=a2+b2−c22ab=a1b1+a2b2√a21+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=A−B=[A0−B0,A1−B1,...]SNR=10×log10∑(Ai−¯A)2∑(Ni−ˉN)2