IT相关机器学习机器学习与数据挖掘

单变量的线性回归模型--代价函数(Cost Function)

2017-11-09  本文已影响32人  乌冬国


前言

之前已经把我们的这个模型介绍的很多了,还记得我们是要干什么吗。就是要拟合出一条直线符合大多数的数据点,这就是最为经典的线性回归模型。

输出房价

为了方便说明,我们假设一组房价的数据如下:

模拟的房价数据

可以看到我们这个模型只有一个变量,就是房子的面积,而成交价则对应着函数的输出y。我们最后需要完成一个函数对于新的房子面积,能输出该房子的成交价,我们定义我们的输出函数h(姑且这么叫...)

h(x)=θx;

我们的任务就是找到一个合适的θ值,假如我现在的θ是1.8,那么对于输入100就会给出180,对于150就会给出270。但是现在的这个函数还存在一个问题,就是这个函数是一条过原点的直线,它还不够“通用”,萎了使它尽可能的拟合更多数据,可以修改一下:

h(x)=θ0+θ1x;(这里数字是下标)

这样如果最后直线过原点,只要θ0=0就可以了,所以它的适用性更强一点。这就是我们的输出函数h了,对于每个x它都能给出y(对于每个面积的房子都能预测对应的房价)。但是不要忘了,现在θ是多少我们可还不知道。

差距有多大

想要找到合适的θ,就需要我们评判一下当前的这个输出函数h和实际给出的数据集有多大差距。这就需要我们的代价函数出场了(重点函数QAQ):

代价函数

这里的m表示总共几组数据,我们的模拟数据m=3。而这里的i显而易见就是第几组数据,xi,yi分别代表着第i组数据的x,y。对于我们的模拟数据,x1=100,y1=200,x2=150,y2=250,x3=80,y3=150。

这个函数是如何工作的,其实非常容易理解,我们先把它前面的求和去掉,只看第一组数据,现在函数就是这样子的:

J=(h(x1)-y1)²

第一组数据x1=100,y1=200。通常我们初始化θ为0,所以现在θ0和θ1都为0。那很明显无论输入的x是多少,我们的函数h(x1)其实都是0的,那对于第一组数据,J的值就是(0-200)²=40000。

对于每一组数据都如此计算然后加起来最后除以2m就是我们的代价函数的输出了,对应我们的模拟数据,最后输出应该为20833.3。

从上面不难看出,对每项的计算其实就是在算我们目前的输出函数h输出的预测值和实际的值之间的差距,如果我们的模型已经成熟了,那么这个代价函数理论上的输出值应该为0,因为每项的h(x)-y都为0,求和后也为0,除2m还是为0。

实际上不存在这么完美的事情,但是只要这个代价函数已经很接近0了,那么我们的目标也就达到了,可以看到,代价函数对我们目前仅仅只是初始化的函数h非常不满,输出的值很大,说明离拟合成功还有非常大的差距(这么大的原因还因为模拟的数据比较大,实际上对于比较大的数据通常运用特征缩放让它变小,先不管它)。

接下来干什么

现在我们知道了输出函数h以及代价函数J,也知道了如何评估当前的h的好坏,但是光知道好坏没有用啊,怎么让它变好呢。下一次就会说道梯度下降算法来让我们的h函数越来越好,也就是渐渐的找到合适的θ值(毕竟函数h是由θ决定的)。

当h渐渐符合我们的预期后,我们的模型就已经完成了。我们离预测房价攀上人生巅峰越来越近了2333

这些都是基于我最近自己学习整理的,希望加强自己的理解,也方便以后回顾。希望与大家分享交流,也希望大佬指正(T-T).

上一篇 下一篇

猜你喜欢

热点阅读