1.以预测宝可梦进化后的cp值为例 如下图所示,input一个宝可梦,output它进化后的cp值。按上节的三个步骤来进行。 |
y = b + w * x
这里b和w有无穷个取值,故有无限个y
STEP2:Goodness of function 判断function的优劣 |
可以定义一个loss function来判断所选function的优劣,下图即为一个loss function,其中b:bias;w:weight。 |
STEP3:Best function 如何找出最好的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。