机器学习入门系列02,Regression 回归:案例研究
Gitbook整理地址:https://yoferzhang.gitbooks.io/machinelearningstudy/content/20170326ML02Regression.html 为什么要先进行案例研究?没有比较好的数学基础,直接接触深度学习会非常抽象,所以这里我们先通过一个预测 Pokemon Go 的 Combat Power (CP) 值的案例,打开深度学习的大门。 Regression (回归)应用举例(预测Pokemon Go 进化后的战斗力)比如估计一只神奇宝贝进化后的 CP 值(战斗力)。 输入用了一些不同的
三个步骤上一篇提到了机器学习的三个步骤: Step1: Model这个model 应该长什么样子呢,先写一个简单的:我们可以认为进化后的CP值
可以有 这个函数集中可以有无限多的 function。所以我们用
我们将式1-1 称作 Linear model, Linear model 形式为:
Step2: 方程的好坏现在就需要搜集训练集,这里的数据集是 Supervised 的,所以需要 function 的输入和输出(数值),举例抓了一只杰尼龟,进化前的CP值为612,用
下面我们来看真正的数据集(来源 Source: https://www.openintro.org/stat/data/?data=pokemon) 来看10只神奇宝贝的真实数据,
有了训练集,为了评价 function 的好坏,我们需要定义一个新的函数,称为 Loss function (损失函数),定义如下: Loss function
input: a function,output: how bad it is Loss function是比较特别的函数,是函数的函数,因为它的输入是一个函数,而输出是表示输入的函数有多不好。 可以写成下面这种形式:
损失函数是由一组参数 w和b决定的,所以可以说损失函数是在衡量一组参数的好坏。 这里用比较常见的定义形式:
将实际的数值
这里不取各个偏差的代数和
为了更加直观,来对损失函数进行作图: 图上每个点都代表一个方程,比如红色的那个点代表
Step3:最好的方程定好了损失函数,可以衡量每一个方程的好坏,接下来需要从函数集中挑选一个最好的方程。将这个过程数学化:
由于这里举例的特殊性,对于式1-3,直接使用最小二乘法即可解出最优的 w 和 b,使得总偏差最小。
但这里会使用另外一种做法,Gradient Descent(最速下降法),最速下降法不光能解决式1-3 这一种问题;实际上只要
Gradient Descent(梯度下降法)简单来看一下梯度下降法的做法。 考虑只有一个参数
那么每次更改
由于这里斜率是负的,所以是
直到找到一个点,这个点的斜率为0。但是例子中的情况会比较疑惑,这样的方法很可能找到的只是局部极值,并不是全局极值,但这是由于我们例子的原因,针对回归问题来说,是不存在局部极值的,只有全局极值。所以这个方法还是可以使用。 下面来看看两个参数的问题。 两个参数的区别就是每次需要对两个参数求偏微分,然后同理更新参数的值。
将上述做法可视化: 同理梯度下降的缺陷如下图: 可能只是找到了局部极值,但是对于线性回归,可以保证所选取的损失函数式1-2是 convex(凸的,即只存在唯一极值)。上图右边就是损失函数的等高线图,可以看出是一圈一圈向内减小的。 结果怎么样呢?将求出的结果绘图如下 可以计算出训练集上的偏差绝对值之和为 31.9 但真正关心的并不是在训练集上的偏差,而是Generalization的情况,就是需要在新的数据集(测试集)上来计算偏差。如下图: 使用十个新的神奇宝贝的数据作为测试集计算出偏差绝对值之和为35. 接下来考虑是否能够做的更好,可能并不只是简单的直线,考虑其他model的情况: 比如重新设计一个model,多一个二次项,来求出参数,得到Average Error为15.4,在训练集上看起来更好了。在测试集上得出的Average Error是18.4,确实是更好的Model。 再考虑三次项: 得到的结果看起来和二次项时候的结果差别不大,稍微好一点点。也可以看到
再考虑四次项: 此时在训练集上可以做的更好,但是测试集的结果变差了。 再考虑五次项: 可以看到测试集的结果非常差。 Overfitting(过拟合,过度学习)将训练集上的Average Error变化进行作图: 可以看到训练集上的 Average Error 逐渐变小。 上面的那些model,高次项是包含低次项的function。理论上确实次幂越高越复杂的方程,可以让训练集的结果越低。但加上测试集的结果: 观察得出结果:虽然越复杂的model可以在训练集上得到更好的结果,但越复杂的model并不一定在测试集上有好的结果。这个结论叫做“Overfitting(过拟合)”。 如果此时要选model的话,最好的选择就是三次项式子的model。
如果数据更多会怎样?考虑60只神奇宝贝的数据 可以看出物种也是一个关键性的因素,只考虑进化前的CP值是太局限的,刚才的model就设计的不太好。 新的model如下 将这个model写成linear model的形式: 来看做出来的结果: 不同种类的神奇宝贝用的参数不同,用颜色区分。此时model在训练集上可以做的更好,在测试集上的结果也是比之前的18.1更好。 还有其他因素的影响吗?比如对身高,体重,生命值进行绘图: 重新设计model: 考虑上生命值(
这么复杂的model,理论上训练集上可以得到更好的结果,实际为1.9,确实是更低。但是测试集的结果就过拟合了。 Regularization(正则化)对于上面那么多参数结果并不理想的情况,这里进行正则化处理,将之前的损失函数进行修改:
式1-5 中多加了一项:
平滑的意思是当输入变化时,输出对输入的变化不敏感。比如式1-5 中输入增加了
上图是对
训练集上得到的结果是:当
所以最后这件事情就是找到最合适的
总结
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |