一、回归模型描述
回归(regression)是监督学习的一个重要问题。
回归用于预测输入变量(自变量)和输出变量(因变量)之间的关系,特别是当输入变量的值发生变化时,输出变量的值随之发生的变化。回归模型正是表示从输入变量到输出变量之间映射的函数。
回归问题的学习等价于函数拟合:选择一条函数曲线使其很好地拟合已知数据且很好地预测未知数据。
回归问题分为学习和预测两个过程:
回归问题按照输入变量的个数,分为一元回归和多元回归:按照输入变量和输出变量之间关系的类型即模型的类型,分为线性回归和非线性回归。
以二维数据为例,假设有一个房价数据如下表所示:
将上面的数据可视化后可以得到图3-1:
假设特征(横轴)和结果(纵轴〉满足线性关系,则线性回归的目标就是用一条线去拟合这些样本点。有了这条趋势线后,当新的样本数据进来时(即给定横轴值) ,我们就可以很快定位到它的结果值(即给定的横轴值在预测直线上对应的纵轴值) ,从而实现对样本点的预测,如图3-2 所示。
①模型建立
假设我们用x(l),X(2) ,...,X(N) 去代表影响房子价格的各个因素。例如,X(l)代表房间的面积,X(2) 代表房间的朝向…… ,X(N)代表地理位置,房子的价格为 h(x);显然,房子价格h(x)是一个由变量X(l) ,X(Z) , ..., X (N)共同决定的函数,而这些不同因素对一套房子价格的影响是不同的,所以我们可以给每项影响因素x(j)赋予一个对应的权重wj,由此我们可以得到因变量h(x)关于自变量 X(l) ,X(Z ), ..., X(N) 的函数表达式:
写成矩阵的形式,即:
得到该表达式后,以后每当要预测一个新的房子的价格时,我们只需拿到房子对应的那些特征即可。
利用上面得到的回归模型就可以很快预测出该套房子大概的售价应该为:
假设我们现在拥有一份数据,该数据包含了M套房子过去的交易情况,如下:
对于回归问题,我们采用的策略是使用平方误差损失来描述模型的好坏:
②策略确定:
当上面的损失函数L(w,b)取最小值时意味着所有样本的预测值与实际值之间的差距是最小的,这时候相当于我们模型的预测效果是最好的。
所以我们的策略就是最小化上面的损失函数L(w,b) ,即:
通过求解上面的最优化问题,我们可以得到其中的待定参数:
③算法求解:
对于上面的优化问题,可以使用最常用的梯度下降法求解,对损失函数求偏导数,公式为:
所以可以得到权重系数向量w和偏置常数b的更新式为:
其中,η 是学习率,即学习的步长。
这样,通过迭代可以使损失函数L(w,b)以较快的速度不断减小,直至满足要求。
④线性回归模型流程:
在线性回归中,如果我们想要快速预测新数据点的输出值,我们需要什么?(B)
A.训练数据集 B.回归线 C.损失函数 D.梯度下降
二、损失函数
针对数据集x和y,预测函数会根据输入特征x来计算输出值h(x)。其输入和输出的函数关系如下:
回归学习最常用的损失函数是平方损失函数,在此情况下,回归问题可以由著名的最小二乘法(least squares)求解。
损失函数是指一种将一个事件(在一个样本空间中的一个元素)映射到一个表 达与其事件相关的经济成本或机会成本的实数上的一种函数。更通俗地说,损失函数用来衡量参数选择的准确性。损失函数定义为:
这个公式计算的是线性回归分析的值与实际值的距离的平均值。
显然,损失函数得到的值越小,模型也就更好。
三、梯度下降
怎样最小化损失函数?损失函数的定义是一个凸函数,就可以使用凸优化的一些方法:
梯度下降就是逐步最小化损失函数的过程。如同下山的过程,找准下山方向(梯度),每次迈进一步,直至山底。如果有多个特征,对应多个参数,需要对每一个参数做一次迭代:
做完以后再求J函数。上段公式中的a就是学习率。它决定了下降的节奏快慢,就像一个人下山时候步伐的快慢。a过小会导致收敛很慢,a太大有可能会导致震荡。
如何选择学习率:目前也有很多关于学习率自适应算法的研究。工程上, 一般会调用一些开源包,包含有一些自适应方法。自己做的话会选择相对较小的,比如0.01。下图展示了梯度下降的过程。
梯度下降法中,学习率的作用是什么?(C)
A. 增加模型复杂度
B. 减少模型复杂度
C. 控制参数更新的速度
D. 确定模型的预测能力
四、从一元回归到多元回归
线性回归的目的是针对一个或多个特征与连续目标变量之间的关系建模。
一元线性回归
简单(单变量)线性回归的目的是针对单个特征(解释变量x)和连续响应值 (目标变量y)之间的关系建模。拥有一个解释变量的线性回归模型的方程定义如下:
这里权重w0代表y轴截距,w1为解释变量的加权系数。
目标是学习线性方程的权重,以描述解释变量和目标变量之间的关系,然后预测训练集里未见过的新解释变量的响应值。
根据前面定义,线性回归可以理解为通过采样点找到最佳拟合直线,如右图:
这条最佳拟合线也被称为回归线。
多元线性回归
单解释变量的线性回归分析,也称之为简单的线性回归。当然,也可以将线性回归模型推广到多个解释变量, 这个过程叫作多元线性回归。
上图显示了具有两个特征的多元线性回归模型的二维拟合超平面。
五、梯度下降的应用
理论上,预测函数有无穷多个,求解的目标就是找出一个最优的θ值。
对比一下单变量线性回归函数的参数迭代公式。实际上和多变量线性回归函数的参数迭代公式是一模一样的。
编写线性回归算法的一般步骤如下:
1)确定学习率:a太大可能会使成本函数无法收敛,a太小则计算太多, 机器学习算法效率就比较低。
2)确定参数起始点:
3)计算参数的下一组值:根据梯度下降参数迭代公式,分别同时算出新的θj值。然后用新的θ值得到新的预测函数hθ(x),再根据新的预测函数,代入成本函数就可以算出新的成本。
4)确认成本函数是否收敛:拿新的成本和旧的成本进行比较,看成本是不是变得越来越小。如果两次成本之间的差异小于误差范围,即说明已经非常靠近最小成本了,就可以近似地认为我们找到了最小成本。如果两次成本之间的差异在误差范围之外,重复步骤3继续计算下一组参数θ,直到找 到最优解。
在机器学习中,当我们从一元线性回归扩展到多元线性回归时,我们能够做什么?(C)
A. 只能使用一个特征来预测输出
B. 只能使用两个特征来预测输出
C. 使用多个特征来预测输出
D. 不能预测连续数值,只能进行分类
六、特征归一化和步长选择
6.1特征归一化
特征比例调整是预处理环节中很容易被遗忘的关键步骤。决策树和随机森林是两种少有的不必担心特征比例调整的机器学习算法。这两种算法不随特征比例的影响。然而,大多数其他的机器学习和优化算法,在相同特征比例的情况下表现优异,正如在实现梯度下降优化算法时所见到的那样。
可以用一个简单的例子说明特征比例的重要性。假设有两个特征,一个是在1到10范围内测量的,而另一个是在1到100000范围内测量的。回顾平方误差函数,很自然会发现算法主要是忙于优化误差较大的第二个特征的权重。
归一化和标准化两种常见方法可以将不同的特征统一到同一比例。这些术语不严格而且经常在不同领域使用,具体含义要根据场景来判断。归一化通常指的是把特征的比例调整到[0,1]区间,这是最小最大比例调整的一 种特殊情况。
为了使数据正常化,可以简单地对每个特征列应用最小最大比例调整,其中特征的新值可以计算如下:
标准化是另一种特征尺度调整方法来加快收敛,它可以使数据具有标准正态分布的特性,有助于梯度下降学习。标准化可以改变每个特征的平均值以使其居中为零,而且每个特征的标准偏差为1。例如,标准化第j个特征,可以简单地从每个训练样本减去平均值,然后除以标准偏差σj:
这里xj是包含所有n个训练样本的第j个特征值,而该标准化技术应用于数据集的每个特征j。
6.2步长选择
在梯度下降法的迭代中,除梯度值本身的影响外,每一次取的步长λ也很关键:步长值取得越大,收敛速度就越快,但是带来的可能后果就是容易越过函数的最优点,导致发散;步长值取得太小时,算法的收敛速度又会明显降低。因此,我们希望找到一种比较好的平衡方法。
另外,当目标函数不是凸函数时,使用梯度下降法求得的结果可能只是某个局部最优点,因此我们还需要一种机制,避免优化过程陷入局部最忧。
为解决上述两个问题,引入了随机梯度下降法。随机梯度下降法原理与批量梯度下降法原理相同,只不过做了如下两个小的改进:
将固定步长λ改为动态步长𝝀(𝑲),这样做可保证每次运代的步长都是最佳的。
引入随机样本抽取方式,即每次选代只是随机取了训练集中的一部分样本数据进行梯度计算:这样做虽然在某种程度上会稍微降低优化过程的收敛速度并导致最后得到的最优点可能只是全局最优点的一个近似,但却可以有效避免陷入局部最优的情况。(因为批量梯度下降法每次都使用全部数据, 一旦到了某个局部极小值点可能就停止更新了;而随机梯度下降法由于每次都是随机取部分数据,所以就算到了局部极小值点,在下一步也还是可以跳出的)。
七、线性回归的正则化
7.1线性回归的正则化
正则化是通过添加惩罚项解决过拟合问题的一种方法,正则线性回归最常用的方法包括所谓的岭回归(L2正则化)与选择算子(LASSO)(L1正则化)。
L2正则化是通过惩罚权重大的个体来降低模型复杂度的一种方法,其中,权重向量w的L2范数定义如下:
另一种降低模型复杂度的方法是L1正则化:
这里只是用权重绝对值之和替代了权重平方之和。与L2正则化相比,L1正则化通常会产生大部分特征权重为0的稀疏特征向量。如果高维度数据集的样本包含许多不相关的特征,稀疏性很有实用价值。
从这个意义上说,L1正则化可以理解为一种特征选择技术。
7.2L2正则化的几何解释
可以把正则化看作是在代价函数中加入惩罚项来促进较小的权重;换句话说,惩罚较大的权重。因此,通过正则化参数λ增大正则化的强度,我们将权重最小化使其趋向于零,降低了模型对训练数据的依赖性。
用圆形阴影来表示二次L2的正则项。权重系数不能超过正则化的预算——权重系数的组合不能落 在阴影区域外。另外,仍然希望最小化代价函数。在惩罚的约束下,尽可能确定L2圆形与无惩 罚代价函数轮廓的交叉点。λ正则化参数越大,惩罚成本的增速越快,导致L2圆形变窄。
例如,正则参数趋于无穷大,则权重系数将快速变为0,即L2圆形的中心。总之,目标是最小化无惩罚成本与惩罚项的总和,可以理解为增加偏置和偏好简单模型,以最小化模型在缺乏足够训练数据拟合情况下的方差。
7.3L1正则化的稀疏解决方案
L1正则化的逻辑与前面讨论的类似。然而,由于L1惩罚是绝对权重系数的总和(L2是二次项),因此可以用菱形区域来表示,如下图所示:
可以看到代价函数的轮廓与L1的菱形在w1=0处相交。由于L1正则化系统的轮廓是尖锐的,所以更 可能的是代价函数的椭圆与L1菱形边界的交点位于轴上,从而促进了稀疏性。
八、正规方程
线性回归问题中,我们通过梯度下降法来求得模型参数θ,我们同样可以通过正规方程来获得模型参数:
其中,X为输入样本矩阵,θ为参数向量,仅从该表达式形式上看,我们也脱离了学习率a的束缚。
梯度下降VS正规方程
梯度下降 | 正规方程 |
需要选择适当的学习率a。 | 不要学习率a。 |
需要进行多步迭代。 | 不需要进行迭代,在Matlab等平台上, 矩阵运算仅需一行代码就可完成。 |
对多特征适应性较好,能在特征数量很多时仍然工作良好。 | 算法复杂度为O(n3),所以如果特征维度太高(特别是超过10000维),那么不宜再考虑该方法。 |
适用于各种类型的模型;能应用到一些更加复杂的算法中,如逻辑回归 (LogicRegression)等。 | 矩阵需要可逆,对于一些更复杂的算法, 该方法无法工作。只适用于线性模型, 不适用于逻辑回归等其他模型。 |