李宏毅 机器学习笔记 Regression

Regression

Regression(回归)的思想可以解决生活中的很多难题。比如根据过去的股票价格和时下的新闻资讯(NLP),从而预测未来的股票价格。比如自动驾驶,根据路况、车况、天气等因素,预测车辆行进的方向(方向盘的方向)和速度(油门和刹车)。比如进行商品推荐,根据用户过去的购买、收藏、浏览、评论、记录,从而判断新商品用户购买的概率。一句题外话,在实际工业界中,量化交易(股价预测)、自动驾驶、个性化推荐可能并不是按照回归的思想来做的。
李宏毅 机器学习笔记 Regression

Example Application

任务是预测宝可梦进化后的战斗力。
下图中公式中上标表示的是第nth 个样本,下标表示的是不同的特征。xcpx_{cp}示的是宝可梦进化前的CP值(这里cp14,表示的是这个妙蛙种子进化前的cp值为14)。xsx_s表示的是宝可梦的品种。xhpx_{hp}表示的是宝可梦的hp(hit point,生命值)。xwx_{w}表示的是宝可梦的weight。xhx_{h}表示的是宝可梦的height。
李宏毅 机器学习笔记 Regression

Step1:模型

模型指的是一组函数的集合(function set),其中函数的输入是宝可梦的特征x(各个参数),输出是宝可梦进化后的CP值(y)。

我们采用最简单的模型(线性模型),并且假设因变量只有一个,即宝可梦进化前的cp值,则表达式为 y = b + w \cdot xcpx_{cp}。其中w和b均有无穷多种选择,所以函数空间中函数的取值(二元组)也为无穷多个。但是某些取值显然是不合理的,例如图中的f3f_3就是和进化前的xcpx_{cp}成反比的。

对单变量模型进行泛化,生成多变量线性模型,表达式为y = b + \sumwixiw_ix_i。其中xix_i表示的是每个特征的取值,wiw_i表示的是每个特征对应的权重,b表示的是偏置(bias)。

李宏毅 机器学习笔记 Regression

Step2:函数的评估标准

由于函数空间中函数数量众多,如果没有一个评估标准,我们则无法选择到最优函数。
这里的模型评估标准的作用对象是训练数据。即在函数空间中选择某一个函数,然后使用评估标准函数对预测后的结果进行评估,从而得到函数的优劣。

李宏毅 机器学习笔记 Regression
李宏毅 机器学习笔记 Regression
在机器学习中,评估标准的专业术语称为损失函数(Loss Function)或者目标函数。在线性回归中,使用的是平方误差或者均方误差来作为损失函数。
L(f)=L(w,b)=n=110(y^n(b+wxcpn))2 L(f) = L(w, b) = \sum_{n=1}^{10} (\hat {y}^{n} - (b +w\cdot x_{cp}^n ))^2
其中y^\hat {y}表示的是真实值,后者表示的是预测值。公式是对每个样本的误差求平方和。

李宏毅 机器学习笔记 Regression
下图中使用等高线图表示出哪些函数区域的效果较好(误差较小),哪些函数区域的效果较差(误差较大)。
李宏毅 机器学习笔记 Regression

Step3:最优函数

从理论上来说,如果存在评估标准和函数空间,就可以使用穷举法选择出最优函数。但实际上来说,这是不可取的(宇宙毁灭之时也可能计算不完)。所以我们需要在有限时间内(而且不能太慢),求出最优函数。

我们把问题进行转化,把求最优函数问题转化为最优化问题。
李宏毅 机器学习笔记 Regression
求最优化问题有两种思路:一种是解析解,一种是使用梯度下降(迭代法)。课程只介绍了梯度下降法。

为什么能够使用梯度下降法?本质上是从微分的定义出发的。
Δy=f(x0)Δx\Delta y = f^{'}(x_0)\cdot \Delta x
Δy=f(x+x0)f(x)\Delta y = f(x + x_{0}) - f(x)
如果导数为正、而且Δx\Delta x为正,则y就会增加。而我们要使y减小,所以使得y=yf(x0)Δxy = y - f^{'}(x_0) \cdot \Delta x
注意上述公式是在Δx\Delta x极其小的情况下才满足。在机器学习中,我们将Δx\Delta x称作为学习率,一般取0.01或者0.001。

李宏毅 机器学习笔记 Regression
李宏毅 机器学习笔记 Regression
我们把单个参数推广到多个参数中。其中L\nabla L指代的是梯度函数。
李宏毅 机器学习笔记 Regression
下图为梯度下降的直观图。
李宏毅 机器学习笔记 Regression

梯度下降存在的问题

1.局部最优化点。2.鞍点。
在这两种类型的点中,导数为0,则无法继续进行迭代,停留在当前点中。
李宏毅 机器学习笔记 Regression

线性回归中的梯度下降

由于线性回归中的损失函数为凸函数,所以不存在局部最优点。
李宏毅 机器学习笔记 Regression
线性回归的对应的偏导数,如下所示:
L(w,b)=n=110(y^n(b+wxcpn))2L(w,b) = \sum_{n=1}^{10}(\hat y^n - (b + w \cdot x_{cp}^n))^2
Lw=n=110(y^n(b+wxcpn))(xcpn)\frac{\partial L}{\partial w}= \sum_{n=1}^{10}(\hat y^n - (b + w \cdot x_{cp}^n))(-x_{cp}^n)
Lb=n=110(y^n(b+wxcpn))(1)\frac{\partial L}{\partial b}= \sum_{n=1}^{10}(\hat y^n - (b + w \cdot x_{cp}^n))(-1)
李宏毅 机器学习笔记 Regression
使用测试数据对模型进行评价
李宏毅 机器学习笔记 Regression
是否存在更好的函数,使得训练数据和测试数据的评估误差都变小呢?根据泰勒公式,任何形式的函数都可以近似表示为若干个多项式函数之和。而我们现在使用的是线性函数,尝试使用多项式函数降低数据误差。

二次函数
李宏毅 机器学习笔记 Regression
三次函数
李宏毅 机器学习笔记 Regression
四次函数
李宏毅 机器学习笔记 Regression
李宏毅 机器学习笔记 Regression
五次函数李宏毅 机器学习笔记 Regression
由上述的结果可知,到四次函数的时候,训练和测试综合效果最好,而五次函数中虽然训练误差最小,但是测试误差很大,此时为过拟合。

在下图中,由于高幂次函数空间包括了低幂次函数空间。虽然幂次的上升,会使得训练数据的误差不断减小,但是可能也会使得测试数据的误差急剧增加。
李宏毅 机器学习笔记 Regression
李宏毅 机器学习笔记 Regression

单变量到多变量

之前的模型只考虑了宝可梦进化前的cp值。如果我们添加其他因变量,如宝可梦的种类。就可以使用开关函数。
李宏毅 机器学习笔记 Regression
李宏毅 机器学习笔记 Regression
可使用δ\delta函数来实现宝可梦品种的选择。
李宏毅 机器学习笔记 Regression
加入宝可梦品种作为自变量以后,即使是线性模型,训练和测试误差都很小。
李宏毅 机器学习笔记 Regression
可以考虑把宝可梦的体重、身高、HP都加入到自变量中。
李宏毅 机器学习笔记 Regression

把宝可梦品种加入到自变量中,如果使用二次函数进行拟合,就会出现过拟合的现象。
李宏毅 机器学习笔记 Regression

正则化

正则化的公式如下所示,需要注意的是正则化项不包括偏置项。
李宏毅 机器学习笔记 Regression
正则化公式中的λ\lambda取值越大,会使得函数越平滑。这是由于λ\lambda的值越大,在尽量使损失函数变小的前提下,就会使得w越小,w越小就会使得函数越平滑。

λ\lambda本质上表示的是惩罚项,惩罚项过大可能就会影响学习的效果,因为惩罚项过大,就会导致参数空间变的比较小,所以最终结果一般,如下图所示:
李宏毅 机器学习笔记 Regression