什么是代价函数
在机器学习中,我们往往希望从已获得的离散数据中拟合出一个尽可能准确的函数(或者说是曲线)
举个例子:已知获得了一个(x,y)数据集,并根据这个数据集在坐标中画出点
我们可以自己定义一个函数h(x)=θ_0+θ_1* x,分别来拟合这个数据.现在分别定义了三个函数,其表现形式分别是图中的这三条线,
那如何确定哪个函数拟合比较准确,有什么判定标准吗?这里我们常用的方法是用把每个y在垂直方向的偏差的平方求和,表示为:
其中我们规定:J 称作代价函数(cost function)
m=样本总数 ,
x = 输入的变量,
y = 数据集中输入为x时对应的输出,
显然,通过这个公式,我们可以计算出三个函数a,b,c各自所对应的J,只需要比对一下各自J值的大小,其中的最小值所对应的函数即为这三个函数中拟合最优的函数。
但是我们要知道,给定的数据有时候不是这样分布的,我们可能需要二次函数h(x)=θ_0+θ_1* x+θ_1*(x^2)或者更加复杂的函数来逼近这些数据来获得更优的拟合(即J值更小),关于这部分以后再讲。
Matlab直观展示代价函数
接着h(x)=θ_0+θ_1* x函数来讲,明显可以知道θ_0是函数在y轴上的截距,θ_1则是斜率,既然是参数,那θ_0,θ_1分别取值为多少的时候,能使J为其最小值。换种说法就是在斜率和截距为多少的时候,拟合出来的函数是最佳的。先固定截距,通过改变斜率的方式来给出一个直观的图像。
左侧的图像是数据集(x,y),右侧的数据是不断改变斜率所获得的J的图像,分析右侧图像我们可知:在函数h(x)在截距为0的条件下,斜率在170左右的时候的J最小。注意:这是在限定条件θ_0固定时的最佳斜率。
现在我们要同时改变θ_0和θ_1来获取最佳的θ_0和θ_1:
从这个图中我们可以大概看到J在两个参数同时变化的时候的值。
————————————————
版权声明:本文为CSDN博主「KERWIN-LIN」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/LIN_GERRY/article/details/108027002