多元线性回归

文章目录

  • 前言
  • 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 wwx 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构造面积这一新的特征来预测房价。