1.回归的定义
Regression 就是找到一个函数 function,通过输入特征 x,输出一个数值 Scalar。
2.应用举例
股市预测(Stock market forecast)
- 输入:过去10年股票的变动、新闻咨询、公司并购咨询等
- 输出:预测股市明天的平均值
自动驾驶(Self-driving Car)
- 输入:无人车上的各个sensor的数据,例如路况、测出的车距等
- 输出:方向盘的角度
商品推荐(Recommendation)
- 输入:商品A的特性,商品B的特性
- 输出:购买商品B的可能性
Pokemon精灵攻击力预测(Combat Power of a pokemon):
- 输入:进化前的CP值、物种(Bulbasaur)、血量(HP)、重量(Weight)、高度(Height)
- 输出:进化后的CP值
3.构建模型的步骤
- Step 1: 模型假设
一元线性模型(单个特征)
例如:线性模型假设 $y = b + w·x$
多元线性模型(多个特征)
例如:线性模型 Linear model :
- $x_{i}$ :就是各种特征(fetrures)
- $w_i$:各个特征的权重
- $b$:偏移量
- Step 2: 模型评估 Goodness of Function
训练数据:
将10组原始数据在二维图中展示,图中的每一个点 $(x_{cp}^n,\hat{y}^n)$ 对应着 进化前的CP值 和 进化后的CP值。
如何判断众多模型的好坏
有了这些真实的数据,那我们怎么衡量模型的好坏呢?从数学的角度来讲,我们使用距离。求【进化后的CP值】与【模型预测的CP值】差,来判定模型的好坏。也就是使用损失函数(Loss function) 来衡量模型的好坏,统计10组原始数据 $\left ( \hat{y}^n - f(x_{cp}^n) \right )^2$ 的和越小模型越好。
最终定义 损失函数 Loss function:$L(w,b)= \sum_{n=1}^{10}\left ( \hat{y}^n - (b + w·x_{cp}) \right )^2$
我们将 $w$, $b$ 在二维坐标图中展示,如图所示:
- 图中每一个点代表着一个模型对应的 $w$ 和 $b$
颜色越深代表模型更优
Step 3: 最佳模型 Best Function
如何筛选最优的模型(参数w,b)
已知损失函数是 $L(w,b)= \sum_{n=1}^{10}\left ( \hat{y}^n - (b + w·x_{cp}) \right )^2$ ,需要找到一个令结果最小的 $f^*$,在实际的场景中,我们遇到的参数肯定不止 $w$, $b$。
先从最简单的只有一个参数$w$入手,定义$w^* = arg \underset{x}{\operatorname{\min}} L(w)$
首先在这里引入一个概念 学习率 :移动的步长,如下图中 $\eta$
- 步骤1:随机选取一个 $w^0$
- 步骤2:计算微分,也就是当前的斜率,根据斜率来判定移动的方向
- 大于0向右移动(增加$w$)
- 小于0向左移动(减少$w$)
- 步骤3:根据学习率移动
- 重复步骤2和步骤3,直到找到最低点
步骤1中,我们随机选取一个 $w^0$,如图8所示,我们有可能会找到当前的最小值,并不是全局的最小值,这里我们保留这个疑问,后面解决。
解释完单个模型参数$w$,引入2个模型参数 $w$ 和 $b$ , 其实过程是类似的,需要做的是偏微分。
整理成一个更简洁的公式:
梯度下降推演最优模型的过程
如果把 w 和 b在图形中展示:
- 每一条线围成的圈就是等高线,代表损失函数的值,颜色约深的区域代表的损失函数越小
- 红色的箭头代表等高线的法线方向
如何验证训练好的模型的好坏?
使用训练集和测试集的平均误差等来验证模型的好坏.
4. 过拟合问题
在模型上,我们还可以进一部优化,选择更复杂的模型,但是复杂的模型容易引起过拟合问题。在训练集上面表现更为优秀的模型,在测试集上效果反而变差了。(详细参考西瓜书第二章)
借用知乎上某用户对过拟合的一段解释:1
2
3
4
5
6
7
8
9
10
11
12
13
14过拟合发生的本质原因,是由于监督学习问题的不适应:在高中数学中我们知道,从n个(线性无关)方程可以解n个变量,解n+1个变量就会解不出。在监督学习中,往往数据(对应了方程)远远少于模型空间(对应了变量)。
因此过拟合现象的发生,可以分解成以下三点:
1. 有限的训练数据不能完全反映出一个模型的好坏,然而我们却不得不在这有限的数据上挑选模型,因此我们完全有可能挑选到在训练数据上表现很好而在测试数据上表现很差的模型,因为我们完全无法知道模型在测试数据上的表现。
2. 如果模型空间很大,也就是有很多很多模型可以给我们挑选,那么挑到对的模型的机会就会很小。
3. 与此同时,如果我们要在训练数据上表现良好,最为直接的方法就是要在足够大的模型空间中挑选模型,否则如果模型空间很小,就不存在能够拟以合数据很好的模型。
由以上3点可见,要拟合训练数据,就要足够大的模型空间;用了足够大的模型空间,挑选到测试性能好的模型的概率就会下降。因此,就会出现训练数据拟合越好,测试性能越差的过拟合现象。
过拟合现象有多种解释,
+ 经典的是bias-variance decomposition,
+ PAC-learning泛化界解释,这种解释是最透彻,最fundamental的;
+ Bayes先验解释,这种解释把正则变成先验。
另外值得一提的是,不少人会用”模型复杂度“替代上面我讲的“模型空间”。这其实是一回事,但“模型复杂度”往往容易给人一个误解,认为是一个模型本身长得复杂。例如5次多项式就要比2次多项式复杂,这是错的。因此我更愿意用“模型空间”,强调“复杂度”是候选模型的“数量”,而不是本事的“长相”。
为什么正则化能够避免过拟合?:因为正则化就是控制模型空间的一种办法。
参考西瓜书的:“正则化削减了(容易过拟合的那部分)假设空间,从而降低过拟合风险”
5. Regularization
在损失函数中加入正则项,称之为正则化(Regularize)。
目的: 防止模型过拟合
原理: 在损失函数上加上某些规则(限制),缩小解空间,从而减少求出过拟合解的可能性

- w 越小,表示 function较平滑的, function输出值与输入值相差不大
- 在很多应用场景中,并不是 w 越小模型越平滑越好,但是经验值告诉我们 w 越小大部分情况下都是好的。
- b 的值接近于0 ,对曲线平滑是没有影响
正则化有多种方式,包括L0(向量中非零元素个数),L1(向量中元素绝对值之和),L2(向量的模)。
但是L0范数的求解是个NP完全问题。
而L1也能实现稀疏并且比L0有更好的优化求解特性而被广泛应用。
L2范数指各元素平方和后开根的值,可令 $w$ 每个元素接近于0,虽然不如L1更彻底地降低模型复杂度,但是由于处处可微降低了计算难度