范数
范数(norm)是一个类似“长度”概念的函数
范数的严格定义如下:
赋范线性空间
若X是数域上的线性空间,泛函
∣∣⋅∣∣→R
满足:
(1)正定性:
∥x∥≥0
,且
∥x∥=0⇔x=0
;
(2)正齐次性:
∥cx∥=|c|∥x∥
;
(3)次可加性(三角不等式):
∥x+y∥≤∥x∥+∥y∥
。
那么,
∥⋅∥
称为X上的一个范数。
向量的p-范数
p-范数是范数的一种,是比较常用的一类距离的度量方法。
需要注意的是,矩阵的p-范数与向量的p-范数是不同的
- p-norm ∣∣X∣∣p=(∑i=1N∣xi∣p)1/p
从p-norm可以推导出一些常用的范数(norm)
- 0-norm
∣∣X∣∣0=N
,也就是向量的维度
- 1-norm
∣∣X∣∣1=(∑i=1N∣xi∣)
,也就是X的各个元素绝对值之和
- 2-norm
∣∣x∣∣2=(∑i=1N∣xi∣2)1/2
,我们常见的Euclidean范数,或Frobenius范数
-
∞
-norm , p-norm中的p求极限,结果是X各个元素绝对值中的中的最大值
∣∣x∣∣∞=max∣xi∣
-
−∞
-norm ,p-norm中的p求极限,结果是X各个元素绝对值中的最小值
∣∣x∣∣−∞=min∣xi∣
矩阵的范数
- 1-norm ∣∣A∣∣1=maxj∑i=1m∣aij∣ ,列和范数,是矩阵列向量绝对值之和的最大值。
- 2-norm ∣∣A∣∣2=maxλ1−−√ , λ1 是 ATA 的最大特征值。谱范数
- ∞ -norm , ∣∣A∣∣∞=maxi∑j=1m∣aij∣ ,列和范数,是矩阵列向量绝对值之和的最大值。
- F-范数 ∣∣X∣∣F=(∑i=1m∑i=1n∣aij∣2)1/2 Frobenius范数
测度
测度的定义
测度是定义在
X∗X
上的函数,记为
d(x,y)
其中
x,y∈X
,并且满足:
1.
d(x,x)=0
2.
x≠y
时,
d(x,y)>0
3.
d(x,y)=d(y,x)
4.
d(x,y)≤d(x,y)+d(y,z)
(三角不等式)
特殊的测度
如果X是
F
上的一个向量空间,
translation invariant(平移不变量
):
测度函数附加条件:
∀z∈X,d(x,y)=d(x+z)+d(y+z)
齐次性
测度函数附加条件
∀a∈F,d(ax,ay)=∣a∣d(x,y)
测度空间的定义
对任意点集X,定义一个测度 (X,d) 是一个测度空间
测度的性质
如果
d(x,y)
是一个测度,那么:
1.
λ>0,d′(x,y)=λd(x,y)
也是一个测度
2.
d′(x,y)=d(x,y)1+d(x,y)
也是一个测度
测度与范数的区别
- 测度对应的集合可以是一般的集合,范数对应的集合必须有算术结构
- 如果
d(x,y)
是向量空间X上的测度,并且满足
平移不变性
和齐次性
,那么这个 d(x,0) 就是某种范数 - 反之,如果 ∣∣x∣∣ 是范数,那么 d(x,y)=∣∣x−y∣∣ 一定是测度
测度的等价
在集合X上可以定义很多种测度,其中一些测度
d1,d2
有些相似性。
例如,对于物理距离来说,单位为米或千米,虽然数值不一样,但有很大的相似性,引入测度定价
这一概念。
Lipschiz equvalent(李普希斯等价) 定义:
测度空间X上两个测度
d1,d2
李普希斯等价,如果存在正实数
λ1,λ2
,使得
∀x,y∈X
,有:
λ1d1(x,y)≤d2(x,y)≤λ2d1(x,y)
测度的等价,是数学意义上的等价(反身性,对称性,传递性)
定理 : Rn 上的各种 lp 范数都是Lipschiz等价的
收敛性
可以在测度上可以定义收敛性
d(xn,y)→0
拓扑等价
测度球
有一个测度 (X,d1) ,定义测度球为
p取不同值的时候,画出的图很有意思
P>1时,测度球是一个凸集
拓扑等价
(topologically equivalent)
空间X上有两种测度
d1,d2
,
如果
∃r1,r2∈R
,两者都是r,x的函数,
使得
Bd1r1⊂Bd2r⊂Bd1r2
那么
d1,d2
也是拓扑等价
的
命题 如果
d1,d2
是Lipschiz 等价的,那么也是拓扑等价的。
反之未必,因为拓扑等价中的
r1,r2
,可以是x的函数,而Lipschiz等价必须是固定的值
距离
闵可夫斯基距离(Minkowski Distance)
欧氏距离(Euclidean Distance)
曼哈顿距离(Manhattan Distance)
切比雪夫距离(Chebyshev Distance)
余弦夹角(Cosine)
汉明距离(Hamming Distance)
杰拉德距离(Jaccard Similarity Coefficient)
闵可夫斯基距离
两个n维变量
A=(a1,a2,...,an),B=(b1,b2,...bn)
d=
∣∣A−B∣∣p
,就是向量的p-norm
- 当p=1,就是曼哈顿距离
- 当p=2,就是欧式距离
- 当p= ∞ ,就是切比雪夫距离
欧式距离
是我们最易于理解的一种距离曼哈顿距离
想象从在曼哈顿市区的一个地方到另一个地方,只能走南北或东西的道路,那么所走的实际距离就是曼哈顿距离
代码实现:
import numpy as np
a1=np.linalg.norm([1,2,3],ord=-np.inf)
a2=np.linalg.norm([1,2,3],ord=np.inf)
a3=np.linalg.norm([1,2,3],ord=2)
a4=np.linalg.norm([1,2,3,1],ord=0)
a1,a2,a3,a4
夹角余弦
几何上夹角的余弦,特点是与量无关,与方向有关,机器学习也有用途。
cosθ=AB∣A∣∣B∣
numpy中没找到直接能实现的函数,所以这么做:
a=np.array([1,2,3])
b=np.array([4,5,6])
np.dot(a,b)/np.linalg.norm(a)/np.linalg.norm(b)
汉明距离
定义:
两个等长度字符串s1和s2之间的汉明距离,定义为s1变成s2所需要的最小替换次数。例如1111,1001的汉明距离为2
用途:
信息编码,为了增强容错性,所用编码的最小汉明距离要尽可能大
代码实现:
a=np.random.randint(low=0,high=2,size=(1,10))
b=np.random.randint(low=0,high=2,size=(1,10))
d=np.sum((a-b!=0))
杰卡德相似系数
杰卡德相似系数,定义为两个集合的交集在并集中所占比例
杰卡德距离是一个类似的概念
Jδ(A,B)=1−J(A,B)
Python实现:
a=np.array([1,1,0,1,0])
b=np.array([0,1,1,0,0])
1-np.sum(a&b)/np.sum(a|b)
计算代码
上面给出了一些计算的代码,除此之外,还可以用scipy
import scipy.spatial.distance as dist
d=dist.pdist(m,metric='jaccard')
#'euclidean'
#'minkowski'
#'cityblock'
#...