李宏毅 机器学习笔记 Regression
Regression
Regression(回归)的思想可以解决生活中的很多难题。比如根据过去的股票价格和时下的新闻资讯(NLP),从而预测未来的股票价格。比如自动驾驶,根据路况、车况、天气等因素,预测车辆行进的方向(方向盘的方向)和速度(油门和刹车)。比如进行商品推荐,根据用户过去的购买、收藏、浏览、评论、记录,从而判断新商品用户购买的概率。一句题外话,在实际工业界中,量化交易(股价预测)、自动驾驶、个性化推荐可能并不是按照回归的思想来做的。
Example Application
任务是预测宝可梦进化后的战斗力。
下图中公式中上标表示的是第nth 个样本,下标表示的是不同的特征。示的是宝可梦进化前的CP值(这里cp14,表示的是这个妙蛙种子进化前的cp值为14)。表示的是宝可梦的品种。表示的是宝可梦的hp(hit point,生命值)。表示的是宝可梦的weight。表示的是宝可梦的height。
Step1:模型
模型指的是一组函数的集合(function set),其中函数的输入是宝可梦的特征x(各个参数),输出是宝可梦进化后的CP值(y)。
我们采用最简单的模型(线性模型),并且假设因变量只有一个,即宝可梦进化前的cp值,则表达式为 y = b + w 。其中w和b均有无穷多种选择,所以函数空间中函数的取值(二元组)也为无穷多个。但是某些取值显然是不合理的,例如图中的就是和进化前的成反比的。
对单变量模型进行泛化,生成多变量线性模型,表达式为y = b + 。其中表示的是每个特征的取值,表示的是每个特征对应的权重,b表示的是偏置(bias)。
Step2:函数的评估标准
由于函数空间中函数数量众多,如果没有一个评估标准,我们则无法选择到最优函数。
这里的模型评估标准的作用对象是训练数据。即在函数空间中选择某一个函数,然后使用评估标准函数对预测后的结果进行评估,从而得到函数的优劣。
在机器学习中,评估标准的专业术语称为损失函数(Loss Function)或者目标函数。在线性回归中,使用的是平方误差或者均方误差来作为损失函数。
其中表示的是真实值,后者表示的是预测值。公式是对每个样本的误差求平方和。
下图中使用等高线图表示出哪些函数区域的效果较好(误差较小),哪些函数区域的效果较差(误差较大)。
Step3:最优函数
从理论上来说,如果存在评估标准和函数空间,就可以使用穷举法选择出最优函数。但实际上来说,这是不可取的(宇宙毁灭之时也可能计算不完)。所以我们需要在有限时间内(而且不能太慢),求出最优函数。
我们把问题进行转化,把求最优函数问题转化为最优化问题。
求最优化问题有两种思路:一种是解析解,一种是使用梯度下降(迭代法)。课程只介绍了梯度下降法。
为什么能够使用梯度下降法?本质上是从微分的定义出发的。
如果导数为正、而且为正,则y就会增加。而我们要使y减小,所以使得
注意上述公式是在极其小的情况下才满足。在机器学习中,我们将称作为学习率,一般取0.01或者0.001。
我们把单个参数推广到多个参数中。其中指代的是梯度函数。
下图为梯度下降的直观图。
梯度下降存在的问题
1.局部最优化点。2.鞍点。
在这两种类型的点中,导数为0,则无法继续进行迭代,停留在当前点中。
线性回归中的梯度下降
由于线性回归中的损失函数为凸函数,所以不存在局部最优点。
线性回归的对应的偏导数,如下所示:
使用测试数据对模型进行评价
是否存在更好的函数,使得训练数据和测试数据的评估误差都变小呢?根据泰勒公式,任何形式的函数都可以近似表示为若干个多项式函数之和。而我们现在使用的是线性函数,尝试使用多项式函数降低数据误差。
由上述的结果可知,到四次函数的时候,训练和测试综合效果最好,而五次函数中虽然训练误差最小,但是测试误差很大,此时为过拟合。
在下图中,由于高幂次函数空间包括了低幂次函数空间。虽然幂次的上升,会使得训练数据的误差不断减小,但是可能也会使得测试数据的误差急剧增加。
单变量到多变量
之前的模型只考虑了宝可梦进化前的cp值。如果我们添加其他因变量,如宝可梦的种类。就可以使用开关函数。
可使用来实现宝可梦品种的选择。
加入宝可梦品种作为自变量以后,即使是线性模型,训练和测试误差都很小。
可以考虑把宝可梦的体重、身高、HP都加入到自变量中。
把宝可梦品种加入到自变量中,如果使用二次函数进行拟合,就会出现过拟合的现象。
正则化
正则化的公式如下所示,需要注意的是正则化项不包括偏置项。
正则化公式中的取值越大,会使得函数越平滑。这是由于的值越大,在尽量使损失函数变小的前提下,就会使得w越小,w越小就会使得函数越平滑。
本质上表示的是惩罚项,惩罚项过大可能就会影响学习的效果,因为惩罚项过大,就会导致参数空间变的比较小,所以最终结果一般,如下图所示: