首页 > 技术文章 > 代价方程

red-code 2018-08-24 19:24 原文

以回归方程为例,最后的回归方程无论是直线还是曲线,方程除了应有的自变量外,还存在各种常量参数,这些参数的不同,直接影响着最终方程。

 

还是以回归问题为例。

假设我们要将数据线性回归到某条直线上(逻辑回归等其他回归同理)。

那么我们首先能设这个回归方程为:y(x) = θ1x+θ2

其中x和y在某种程度上都是已知的,因为我们肯定有很多样本数据,这些样本数据就是具体的x、y坐标。

很明显,我们如果能知道θ1、θ2,这个回归方程也就出来了。

代价函数的目的就是找到这些θ。

 

让我们用白话来描述一下求出θ的思路:

假设我们有好多个样本点,如(1,2)、(3,4)、(5,6)等

我们这条拟合直线肯定越靠近这些点越好。

怎么个靠近法呢?把这些点的x坐标代入方程,其计算后得出的y值“离该点真实的y值距离越小越好”。

回到我们之前“假设”的回归方程y(x) = θ1x+θ2上。

当我们把这些真实的样本点的x值代入y(x)函数中,得到的就是拟合直线上的y值,如果这个y值的距离离真实y值很小,就表示该拟合方程很好。

以点(3,4)为例,拟合方程计算得到的y值与实际y值之差表示为:距离 = (θ1*3+θ2)-(4)

即:距离 = θ1*x1+θ2 - y1

但我们肯定不止(x1,y1)这一个样本点,当还有(x2,y2)等多个样本点后,就需要计算拟合方程距离各个样本点的距离,即:

距离1 = θ1*x1+θ2 - y1

距离2 = θ1*x2+θ2 - y2

距离3 = θ1*x3+θ2 - y3

······

这么多距离,我们最好求一个这些距离的平均值来表达一个平均距离,比较合适的方法如:

计算所有距离的平方差后再除以1/2得到

 

其中h(x)函数就是θ1x+θ2,x(i),y(i)是具体样本点的x,y坐标。

(求平均值的方法有很多,并不一定非要用这种)

这个方程就是代价方程。

 

通过上面一系列的推导,我们很容易看出所有的x(i),y(i)都是已知的样本点,即全是已知常数,反而未知数变成了θ。

所以我们可以将上面的代价函数设为J(θ)。

通过之前的推导我们知道这个方程最终的结果是“拟合y值到真实y值的距离差”,自然是越小越好。

所以我们要求的就是J(θ)函数的最小值。

 

(这里提一下,以上的θ全都是向量,即不一定只有一个θ。

这也很好理解,当我们在多维空间,如三维坐标系中进行拟合时,这时候直线的一般方程就变成了:

θ1X+θ2Y+θ3Z = 0,θ随着拟合空间维数的增加而增加,所以为了方便起见就用向量θ = [θ1,θ2,θ3]来表示。

相应的,θ用向量表示了,整个拟合方程也会转化成向量的格式,即θ^T*W = 0 (θ^T表示θ的转置,W也是向量,表示[X,Y,Z]))

 

其实推到这代价函数基本上解释清楚了,后面的问题就是如何求解J(θ)函数最小值的问题了,在只有一个θ参数时J(θ)函数图像还是在二维平面上的凹函数,存在最小值。

当θ变为2个时,J(θ)的图像就变成了三维空间上了,我们要找的是整个模型的最小点。

至于如何找到这些最小值,方法就很多了,常用的如梯度下降法等。

推荐阅读