李宏毅老师机器学习第二部分:回归问题

  • Let's go!
  • 一、回归的定义
  • 二、回归模型建立步骤
  • 三、一元线性模型与多元线性模型
  • 3.1 一元线性模型
  • 3.2 多元线性模型
  • 四、模型评估
  • 4.1 损失函数
  • 4.2 梯度下降
  • 4.2.1 只有一个参数w
  • 4.2.2 有两个参数w和b
  • 4.2.3 等高线图
  • 五、过拟合问题
  • 六、优化
  • 6.1 模型合并
  • 6.2 加入正则化项


Let’s go!

在开始回归问题分析之前首先让我们回顾一下第一部分我们学到的机器学习的知识介绍,如果你不记得的话可以点击链接回顾一下:
李宏毅老师机器学习第一部分:知识介绍 如果你准备好了我们就开始学习第二部分“回归”

一、回归的定义

Regression 就是找到一个函数 function ,通过输入特征 x,输出一个数值 Scalar。
例如我们身边常见的一些预测的例子:
1.房价预测
输入:有关房价的一些指标比如房屋面积,所处地段等。
输出:房价的可能值。
2.股市预测(Stock market forecast)
输入:过去10年股票的变动、新闻咨询、公司并购咨询等。
输出:预测股市明天的平均值。
3.自动驾驶(Self-driving Car)
输入:无人车上的各个sensor的数据,例如路况、测出的车距等。
输出:方向盘的角度。

二、回归模型建立步骤

模型的建立参照第一节内容中的三个简化步骤我们可以把回归模型的步骤做如下定义:
1)找到许多的function set(model)
2)选定一个function进行测试
3)选出最佳的function

三、一元线性模型与多元线性模型

3.1 一元线性模型

所谓一元线性模型就是指的单个特征
对于宝可梦进化值CP的例子我们可以做如下假设:
以一个特征 x_cp为例,线性模型假设 y = b + w·x_cp,w和b 可以猜测很多不同的取值。
f1: y = 10.0 + 9.0·x_cp}
f2: y = 9.8 + 9.2·x_cp}
f3: y = - 0.8 - 1.2·x_cp

3.2 多元线性模型

与上面的一元线性模型相对的,我们可以定义出多元线性模型(多个特征

回归问题 网格搜索 评分方法 回归问题模型_线性模型

四、模型评估

模型评估主要包括两部分内容,分别是损失函数梯度下降

4.1 损失函数

有了这些真实的数据,那我们怎么衡量模型的好坏呢?从数学的角度来讲,我们使用距离。求【进化后的CP值】与【模型预测的CP值】差,来判定模型的好坏。也就是使用损失函数(Loss function) 来衡量模型的好坏,统计10组原始数据 ( y^n−f(x_cp)n) ^2的和,和越小说明预测值与真实值的偏差越小,模型也越好。如下图所示:

回归问题 网格搜索 评分方法 回归问题模型_回归_02


回归问题 网格搜索 评分方法 回归问题模型_回归_03

4.2 梯度下降

当我们已知了损失函数之后我们现在需要去寻找最佳的函数function。

4.2.1 只有一个参数w

我们先从只有一个变量w的时候入手考虑。步骤如下图所示:

回归问题 网格搜索 评分方法 回归问题模型_人工智能_04


首先在这里引入一个概念学习率 (移动的步长),也就是图中的η。

步骤1:随机选取一个 w0。

步骤2:计算微分,也就是当前的斜率,根据斜率来判定移动的方向。小于0向右移动(增加w),大于0向左移动(减少w)。

步骤3:根据学习率移动。

重复步骤2和步骤3,直到找到最低点。

注意:我们可以观察到移动方向总是与斜率方向相反。

4.2.2 有两个参数w和b

讨论完一个变量w的情况,现在我们讨论当变量为w和b的时候:

其实实质就是求偏微分的问题。如下图所示:

回归问题 网格搜索 评分方法 回归问题模型_线性模型_05


如果用更简洁的公式来表述两个参数就是:

回归问题 网格搜索 评分方法 回归问题模型_回归问题 网格搜索 评分方法_06

4.2.3 等高线图

1)每一条线围成的圈就是等高线,代表损失函数的值,颜色约深的区域代表的损失函数越小。

2)红色的箭头代表等高线的法线方向。

回归问题 网格搜索 评分方法 回归问题模型_回归_07

五、过拟合问题

在训练集上面表现更为优秀的模型,为什么在测试集上效果反而变差了?这就是模型在训练集上过拟合的问题。
例如以下是我们对训练集不断增加次方(一元N次线性模型)后训练集的损失情况:

1)一元一次

此时训练误差:31.9

测试误差:35.0

回归问题 网格搜索 评分方法 回归问题模型_回归_08


2)一元二次

此时训练误差:15.4

测试误差:18.4

训练误差与测试误差均下降

回归问题 网格搜索 评分方法 回归问题模型_回归_09


3)一元三次

此时训练误差:15.3

测试误差:18.1

训练误差与测试误差均下降

回归问题 网格搜索 评分方法 回归问题模型_回归问题 网格搜索 评分方法_10


4)一元四次

此时训练误差:14.9

测试误差:28.8

训练误差下降但是测试误差反而增加

回归问题 网格搜索 评分方法 回归问题模型_回归问题 网格搜索 评分方法_11


5)一元五次

此时训练误差:12.8

测试误差:232.1

训练误差下降但是测试误差增加的非常离谱

回归问题 网格搜索 评分方法 回归问题模型_回归问题 网格搜索 评分方法_12


到这里我们就可以直观的看到训练集大于三次方之后就已经出现了过拟合的现象。

如图所示,每一个模型结果都是一个集合,5次模型包含4次模型包含3次模型,即5次模型包⊇4次模型⊇3次模型、所以在4次模型里面找到的最佳模型,肯定不会比5次模型里面找到更差。

回归问题 网格搜索 评分方法 回归问题模型_人工智能_13


当我们将错误率图形可视化之后如下图所示:

回归问题 网格搜索 评分方法 回归问题模型_线性模型_14

六、优化

6.1 模型合并

将 4个线性模型合并到一个线性模型中。

原来的四个线性模型如下图所示:

回归问题 网格搜索 评分方法 回归问题模型_人工智能_15


合并之后:

回归问题 网格搜索 评分方法 回归问题模型_人工智能_16


计算出合并之后的训练集与测试集的平均误差:

回归问题 网格搜索 评分方法 回归问题模型_机器学习_17


结果说明效果变好了。

6.2 加入正则化项

加入正则化项可以有效的解决过拟合的问题。

回归问题 网格搜索 评分方法 回归问题模型_机器学习_18


加入正则化项之后的平均误差如下图所示,我们可以选择出较为平滑但是不要太过于平滑作为我们的线性模型(观察表格发现这样选取之后训练集与测试集的(平均误差也很合理),然后选择相应的λ值添加正则化项。

回归问题 网格搜索 评分方法 回归问题模型_回归问题 网格搜索 评分方法_19


注意

1.w 越小,表示function较平滑的,function输出值与输入值相差不大。

2.在很多应用场景中,并不是w越小模型越平滑越好,但是经验值告诉我们w越小大部分情况下都是好的。

3.b的值接近于0,对曲线平滑是没有影响。