1.什么是regression
Regression 就是找到一个函数 function,通过输入特征 x ,输出一个数值 Scalar 。
股市预测(Stock market forecast):
- 输入:过去10年股票的变动、新闻咨询、公司并购咨询等
- 输出:预测股市明天的平均值
自动驾驶(Self-driving Car):
- 输入:无人车上的各个sensor的数据,例如路况、测出的车距等
- 输出:方向盘的角度
商品推荐(Recommendation):
- 输入:商品A的特性,商品B的特性
- 输出:购买商品B的可能性
2.实现回归的步骤
栗子:我们要预测Pokemon精灵攻击力。
输入:进化前的CP值、物种(Bulbasaur)、血量(HP)、重量(Weight)、高度(Height)
输出:进化后的CP
2.1 model(确定一个模型)——线性模型
先从简单的单个特征(Xcp)开始(后面改进再考虑多个特征)
2.2 goodness of function(确定评价函数)——损失函数
确定好model以后,就开始训练数据:
以此类推,训练10个数据:
有了这些真实的数据,那我们怎么衡量模型的好坏呢?从数学的角度来讲,我们使用距离。求实际进化后的CP值与模型预测的CP值差,来判定模型的好坏。
也就是使用 损失函数(Loss function) 来衡量模型的好坏,和越小模型越好。如下图所示:
2.3 best function(找出最好的一个函数)——梯度下降法
找到一个best function(说白了是找最佳的参数),也就是使损失函数最小时候的参数
用梯度下降法,求最佳参数:
- 梯度:在单变量的函数中,梯度其实就是函数的微分,代表着函数在某个给定点的切线的斜率;在多变量函数中,梯度是一个向量,向量有方向,梯度的方向就指出了函数在给定点的上升最快的方向
- 梯度下降:“下山最快路径”的一种算法
先考虑简单的一个参数w:
首先在这里引入一个概念 学习率 :移动的步长,如下图中 η
- 步骤1:随机选取一个 w0 。
- 步骤2:计算微分,也就是当前的斜率,根据斜率来判定移动的方向
- 大于0向右移动(增加w)
- 小于0向左移动(减少w)
- 步骤3:根据学习率移动。
- 重复步骤2和步骤3,直到找到最低点。
再考虑两个参数(w、b)
颜色约深的区域代表的损失函数越小
总结一下梯度下降法:我们要解决使L(x)最小时参数的最佳值,梯度下降法是每次update参数值,直到损失函数最小。
但是梯度下降法会出现问题呢?
2.4 回归结果分析
经过上述三个步骤后,我们就得到了训练后的 “最佳参数w,b” ,那么它在测试集的performance怎么样呢?下面一起来看看吧
3.进一步,如何做得更好(优化step1欠拟合)
3.1 select another model(选择另一个模型)
model改用不同函数的performance:
如何选择model呢?
超过三次函数以上的model都出现了过拟合问题,因此要找到一个suitable model(这里是第三个)
3.2 consider the hidden factors(考虑其他隐藏因素)
再考虑另外一个因素(精灵的种类):
performance:
把更多的因素都考虑:
考虑更多的因素反而出现了过拟合的问题,说明有些因素跟本次实验的CP值预测没有关系!
过拟合这么讨厌,到底如何减少过拟合问题呢?往下看!
4.再进一步,防止过拟合
比如先考虑一个参数w,正则化就是在损失函数上加上一个与w(斜率)相关的值,那么要是loss function越小的话,w也会越小,w越小就使function更加平滑(function没那么大跳跃)
正则化虽然能够减少过拟合的现象,但是因为加在损失函数后面的值是平白无故加上去的,所以正则化过度的话会导致bias偏差增大:
问题:为什么不需要对b进行正则化?
解答:因为b只影响图像上下平移,而不影响图像的平滑程度
5.总结
宝可梦的原始CP(Combat Power,战斗力)和种类几乎决定了它进化后的CP值,但可能还有其他未知的影响因素。
梯度下降(Gradient Descent) 是一个用于优化算法以找到函数的最小值的方法,在接下来的课程中将讨论更多理论和技巧。
在测试数据上得到的平均误差为11.1,引出了对新数据的误差大小的疑问,即它可能会更大还是更小。
下一讲将探讨误差的来源,包括关于过拟合(overfitting)和正则化(regularization)的更多理论,以及验证(validation)的概念。