系列文章目录
第四章 Python 机器学习入门之代价函数
目录
前言
前面我们学习了什么是线性回归,为了构建线性回归模型,最重要的一步就是构建代价函数,
代价函数会告诉我们模型做的有多好,这样我们就可以试着 让它做的更好。
代价函数是机器学习中最普遍和最重要的概念之一,它用于线性回归和训练世界上许多先进的Al模型
一、什么是代价函数?
什么是代价函数?cost function
还是以之前卖房子的例子,如果我们有一个包含输入特性(features)的训练集 X 和 输出目标(targets) Y ,
这个训练集的模型是一个线性函数,f w, b (x) = w*x + b, 这个是x 的函数,
在机器学习中,w和b被称为模型的参数 parameters,
模型的参数是我们可以在训练中 调整的变量,通过改变这些变量来改进模型,
有时,w 和b 也会被称为系数 coefficients 或权重 weights 。
二、 w 和 b 有什么作用?
what do w,b do?
这个就取决于我们赋予w 和b 的值了,赋予不同的值,我们会得到不同的关于x 的函数 function 。
当w = 0, b = 1.5 时,y的预测值始终是一个常数1.5
当w = 0.5, b = 0 时,函数是一个过原点的,斜率为0.5 的直线
当w = 0.5, b = 1 时,函数是一个过(0,1)点的,斜率为0.5 的直线
三、对代价函数的理解
当我们有一个数据集时,如下图,
我们要做的就是给 w 和 b 赋值,使得函数f 得到的直线与数据吻合的很好
当绘出的线从视觉上符合数据时,我们可以把它想象成由f 定义的直线,大致通过或接近某个地方,函数f 为y 做了一个预测性的值
问题是,我们如何去找到w 和 b , 在许多的训练例子中,我们预测y ,使得预测的值接近真实的值,也就是输出目标y,
让我们先来看看如何测量训练数据的对齐程度,我们要构造代价函数,代价函数取预测的y 值,通过取预测的y 值与真实y 值之差,与真实y 值相比较,
预测的y 值与真实y 值之差,这种差异称为误差,我们在测量下一个预测离目标有多远
一般情况,我们会计算这个误差的平方,对于不同的训练例子,我们都要计算这个项,所以当测量误差时,要计算所有的误差
如果我们想测量整个训练集的误差,我们需要计算这些平方误差的总和。
m 是训练例数,m 越大,我们计算出来的代价函数就越大,因为它总结了更多的例子,
所以如果我们要建立一个不会自动变大的代价函数,也就是不会随例子变多而值变大,我们将计算平均平方误差,而不是总平方误差,最后将总平方误差除以m即可。
但是,机器学习的人使用的代价函数实际上是m 的两倍,所以最后我们会将总平方误差除以2m,这样做可以为我们以后的一些计算更简洁一些。
不管除不除2,代价函数都有效,所以图中的表达式就是代价函数,用j 代表代价函数,
代价函数也被称为平方误差代价函数,它之所以这样叫,因为在机器学习中,我们需要取这些误差项的平方,不同的人会针对不同的应用使用不同的代价函数。
平方误差代价函数是线性回归中最常用的函数,对于所有的回归问题,它对许多应用都有很好的效果,
预测y 等于模型f 在 输入x 后的输出,
最后我们要找出w 和b 的值使得代价函数很小