多元线性回归
文章目录
- 前言
- 1. 多元线性回归算法
- 1.1 定义和特征向量化
- 1.2 多元线性回归的梯度下降
- 1.3 梯度下降的替代方案:正规方程法
- 2. 学习曲线
- 3. 特征缩放
- 4. 特征工程
前言
本章主要围绕多元线性回归,介绍了向量化,学习率、特征缩放、特征工程等基础知识。
1. 多元线性回归算法
1.1 定义和特征向量化
多元线性回归:具有多个输入特征(即x 1 , x 2 , x 3 . . . . . . x_1, x_2, x_3......x1,x2,x3......)的线性回归。
如预测房价的项目中,有多个特征可以影响房价:
其中多元线性回归模型用f w , b ( x ) = w 1 x 1 + w 2 x 2 + . . . . . . . + w n x n + b f_{w,b}(x) =w_1x_1+w_2x_2+.......+w_nx_n+bfw,b(x)=w1x1+w2x2+.......+wnxn+b表示。
涉及参数和因变量向量化,可简化表达。
向量化有两个主要作用:1.简化表达;2.运算效率更高。
如果没有向量化,相当于每一次都是执行f + w i x i f+w_ix_if+wixi
我们用numpy库来实现向量化:np.dot(w, x)+b。在这个过程中,相当于两组数据,同时出m个,然后同时,每一对w ww和x xx互相相乘,再相加。速率大大提升。
1.2 多元线性回归的梯度下降
多元线性回归的梯度下降,也可用向量简化,左侧是原始表达,右侧是向量表达式:
下图则是单元特征和多元特征的梯度下降对比图:
1.3 梯度下降的替代方案:正规方程法
针对线性回归而言,python存在专门的库可以直接采用数学计算来求解合适的w , b w,bw,b,不需要迭代,即梯度下降。
但是正规方程法不适用于其他的模型,而且当特征很多的时候运行时间会非常慢。
2. 学习曲线
在运行梯度下降的时候,如何判断它是否在收敛?也就是说,它是否可以接近损失函数的全局最小值?
我们采取**学习曲线(Learning curve)**来衡量。
如下图所示,横轴为迭代次数,纵轴为损失函数值,当随着迭代次数增加,损失函数逐渐变小,说明梯度下降工作正常。
如果在下一次迭代中,损失函数下降幅度小于0.001,我们就认为收敛。
学习率α \alphaα如果过大,可能迭代次数增加,损失函数会上涨。反之,如果足够小,在每次迭代中,损失函数会下降。
所以,我们在进行运算的时候,可以多试几组α \alphaα。
3. 特征缩放
特征缩放(Featur Scaling)指的是,让不同特征处于相近的数值范围,从而使得梯度下降更快、更稳定。
因为不同特征的自变量量纲可能不一样,比如:
- x 1 x_1x1取值:300-1000
- x 2 x_2x2取值:0-5
那么对应w i w_iwi的大小取值也会很不一样。
如图所示,梯度下降希望每个特征的参数买的步子差不多大,梯度会更快收敛:
为了使得不同特征量纲相同,我们采用特征缩放(归一化),特征缩放有各种不同的方法,但本质都是把不同特征的取值放到同一量纲中。
4. 特征工程
特征工程(Feature engineering)是使用你的直觉,通过转换或者构造原始特征,创造出可以预测目标变量的新特征。
比如预测房价,有两个原始特征:1.房子长度;2.房子宽度。可以根据1x2构造面积这一新的特征来预测房价。