00-01Regression case study以宝可梦为例


1.以预测宝可梦进化后的cp值为例

如下图所示,input一个宝可梦,output它进化后的cp值。按上节的三个步骤来进行。



STEP1:MODEL建立模型
这里建立一个Linear model:

y = b + w * x
这里b和w有无穷个取值,故有无限个y

STEP2:Goodness of function 判断function的优劣
可以定义一个loss function来判断所选function的优劣,下图即为一个loss function,其中b:bias;w:weight。

STEP3:Best function

扫描二维码关注公众号,回复: 475438 查看本文章

如何找出最好的function呢?w和b都是无限的,总不能一个一个试吧,这里介绍了通用的方法:gradient descent


所谓gradient descent,如下图所示,就是计算L对w的微分,如果微分值是负的,则应增大w的值,如果微分值是正的,则应该减小w的值。那么问题来了,w的值该如何增大(减小)呢?这就涉及到了一个自定义的η,称为learning rate。


然后w0就更新为w1,再更新为w2,在很多次的参数更新之后,最终走到了一个最低点。即

当有多个参数时,一样的方法:


但是会不会出现这样的情况,w和b变化的路径不同,达到不同的最低点呢 ,就像下图左半部分一样,其实这里不用担心,因为在Linear regression中,全都是右半部分的情况,放心计算就好。

通过上面的计算方法,我们得到一个最佳的y(w,b),但是error依然很大,那么能不能做的更好呢,把函数变得更复杂提高试试看。就有了下面一系列的图。




结果发现,更复杂的function在training data上的error更小,可是在testing data上却不太理想,在四次五次方的function时,error更是大的离谱,这种情况就叫overfitting,所以说function不是越复杂越好,我们要选择合适的function。还有一种减小error的方法,就是收集更多数据。

还有可能在之前的model中,有一些隐藏的因素没考虑到,这些隐藏因素是什么呢?宝可梦的种类?hp、weight、height等等?

由上图可知,模型的准确度受宝可梦种类的影响明显,所以,根据不同的宝可梦种类,建立不同的model如下


但这是一个linear model吗,别担心,下面就将其合成为一个linear model。


发现这次的,model在training data和testing data上表现都比较好,


接下来继续考虑其他的隐藏因素


结果出现了overfitting。这是为什么呢,让我们返回第二步,重新定义loss function(这里用regularization方法)



可以看到,λ越大,w越小,model越平滑,testing data的error表现越好。所以我们更青睐平滑的model。

猜你喜欢

转载自blog.csdn.net/loongqian/article/details/80272391