两条曲线相似度的探究(MSE推广)

两条曲线相似度的探究(MSE推广)_第1张图片

1. 什么条件下两条曲线最相似

那肯定是在定义域[a, b]中,两条曲线完全重合。用数学语言
∀ x ∈ [ a , b ] , f 1 ( x ) = f 2 ( x ) \forall x \isin [a, b], f_1(x) =f_2(x) x[a,b],f1(x)=f2(x)或者 ∀ x ∈ [ a , b ] , f 1 ( x ) − f 2 ( x ) = 0 (1) \forall x \isin [a, b], f_1(x) -f_2(x)=0 \tag{1} x[a,b],f1(x)f2(x)=0(1) 然而, ∀ \forall 符号是不利于我们计算的,因此我们希望能用一个不带条件的等式来表达(1)式的内容,因此就有了: ∫ a b ∣ f 1 ( x ) − f 2 ( x ) ∣ d x = 0 (2) \int_a^b |f_1(x) -f_2(x)| dx =0 \tag{2} abf1(x)f2(x)dx=0(2) 可以看到,(2)和(1)是完全等价的。
值得注意的是,(2)式里面的绝对值符号||是不能去掉的,这个应该很容易理解。
但是由于绝对值函数在数学上不是连续可导的,因此常用平方的方法,来代替绝对值。 这里我们就把求绝对值得差改成了求两个函数值的二范数 L 2 N o r m L_2Norm L2Norm ∫ a b [ f 1 ( x ) − f 2 ( x ) ] 2 d x = 0 (3) \int_a^b [f_1(x) -f_2(x)]^2 dx =0 \tag{3} ab[f1(x)f2(x)]2dx=0(3)
很明显,(1)(2)(3)都是完全等价的。

但是,并不是所有的曲线都能完全重合,即随便选出两条曲线, L o s s ( f 1 , f 2 ) = ∫ a b [ f 1 ( x ) − f 2 ( x ) ] 2 d x (4) Loss(f_1, f_2) = \int_a^b [f_1(x) -f_2(x)]^2 dx \tag{4} Loss(f1,f2)=ab[f1(x)f2(x)]2dx(4) 其损失函数Loss很大程度不可以等于0(比如上面图片中的 l o g 2 ( 1 + x ) log_2(1+x) log2(1+x) x x x在[0, 1]区间之中)。因此,我们希望能够通过某种手段,使得两条曲线最相似。

2. 怎么才能使两条曲线最相似

有了判断两条曲线相似度的准则(即损失函数) ,我们通过什么手段能够尽量让两条曲线更相似呢?一个很自然的方法就是,固定第一条曲线 f 1 ( x ) f_1(x) f1(x)不动,通过上下平移 f 2 ( x ) f_2(x) f2(x)使得平移后的曲线和 f 1 ( x ) f_1(x) f1(x)达到最相似的状态。数学表达式也就是求 L o s s ( f 1 , f 2 n e w ) Loss(f_1, f_2new) Loss(f1,f2new)的最小值 M i n ( L o s s ( f 1 , f 2 n e w ) ) Min(Loss(f_1, f_2new)) Min(Loss(f1,f2new))
这里的 f 2 n e w = f 2 + α , α ∈ C f_2new = f_2 + \alpha, \alpha \isin C f2new=f2+α,αC,也就是 α \alpha α是一个为常量的平移值。可以理解为,通过将 f 2 f_2 f2上下平移 α \alpha α α \alpha α为正就是向上,为负就是向下)个单位后, f 2 n e w f_2new f2new达到和 f 1 ( x ) f_1(x) f1(x)最相似的状态。
因此,我们的目的是求 M i n ( L o s s ( f 1 , f 2 ) ) Min(Loss(f_1, f_2)) Min(Loss(f1,f2)) = M i n ( ∫ a b [ f 1 ( x ) − ( f 2 ( x ) + α ) ] 2 d x ) (5) = Min(\int_a^b [f_1(x) - (f_2(x)+ \alpha)]^2 dx) \tag{5} =Min(ab[f1(x)(f2(x)+α)]2dx)(5)
怎么求最小值呢,当然就需要借助数学工具了。还记得我们怎么求极小值么,让其导函数等于0!!!
L o s s ′ ( f 1 , f 2 ) ) Loss'(f_1, f_2)) Loss(f1,f2)) = ( ∫ a b [ f 1 ( x ) − ( f 2 ( x ) + α ) ] 2 d x ) ′ =(\int_a^b [f_1(x) - (f_2(x)+ \alpha)]^2 dx)' =(ab[f1(x)(f2(x)+α)]2dx) = 2 × ( ∫ a b [ f 1 ( x ) − f 2 ( x ) − α ] d x ) =2\times (\int_a^b [f_1(x) - f_2(x) - \alpha] dx) =2×(ab[f1(x)f2(x)α]dx) = 2 × ( ∫ a b [ f 1 ( x ) − f 2 ( x ) ] d x − α x ∣ x = a x = b ) (6) =2\times (\int_a^b [f_1(x) - f_2(x)] dx - \alpha x \biggm\vert_{x=a}^{x=b}) \tag{6} =2×(ab[f1(x)f2(x)]dxαxx=ax=b)(6)
令(6)式=0
2 × ( ∫ a b [ f 1 ( x ) − f 2 ( x ) ] d x − α x ∣ x = a x = b ) = 0 2\times (\int_a^b [f_1(x) - f_2(x)] dx - \alpha x \biggm\vert_{x=a}^{x=b})=0 2×(ab[f1(x)f2(x)]dxαxx=ax=b)=0 ∫ a b [ f 1 ( x ) − f 2 ( x ) ] d x = α x ∣ x = a x = b \int_a^b [f_1(x) - f_2(x)] dx = \alpha x \biggm\vert_{x=a}^{x=b} ab[f1(x)f2(x)]dx=αxx=ax=b ∫ a b [ f 1 ( x ) − f 2 ( x ) ] d x = α × ( b − a ) \int_a^b [f_1(x) - f_2(x)] dx = \alpha \times (b-a) ab[f1(x)f2(x)]dx=α×(ba) α = ∫ a b [ f 1 ( x ) − f 2 ( x ) ] d x b − a (7) \alpha = \cfrac{\int_a^b [f_1(x) - f_2(x)] dx}{b-a} \tag{7} α=baab[f1(x)f2(x)]dx(7)
我们发现了什么, α \alpha α的意义就是 两 条 曲 线 差 值 的 积 分 ( 或 者 说 是 与 x 轴 围 成 的 图 形 面 积 ) 区 间 长 度 \cfrac{两条曲线差值的积分(或者说是与x轴围成的图形面积)}{区间长度} 线(x) 这可太符合我们直觉了吧!至此,我们就完成了两条曲线相似性的全部探究!

3. 结论

有了两条曲线 f 1 ( x ) , f 2 ( x ) ∈ [ a , b ] f_1(x), f_2(x) \isin[a, b] f1(x),f2(x)[a,b],我们只需要算一下其差值的积分: ∫ a b L o s s ( f 1 ( x ) , f 2 ( x ) ) \int_a^b Loss(f_1(x), f_2(x)) abLoss(f1(x),f2(x)) 再除以区间长度 b − a b-a ba,便是我们需要将 f 2 ( x ) f_2(x) f2(x)上下平移的常量 α \alpha α了。

你可能感兴趣的:(计算机科学,算法)