4.多元线性回归

4 多元线性回归

多特征

设有n个特征,$x^{(i)}$表示第i个样本的特征向量,形状为$n\times 1$。$x^{(i)}_j$表示第i个样本的第j个特征的值。

特征有多个时,我们可以假设$h_{\theta}(x)=\theta_0+\theta_1x_1+\theta_2x_2+…+\theta_nx_n$,可以让$x_0=1$,这样$h_\theta(x)=\theta^{T}x$

image-20241214161929934

梯度下降更新参数,左图为只有1个特征,右图为有多个特征时:

image-20241214162959309

如何让梯度下降收敛更快:(1)特征缩放Feature Scaling(2)学习率

特征缩放

当特征值的取值范围差距很大时,会相应的导致梯度差距很大,参数更新可能左右横跳,导致收敛速度变慢,如左图;

我们可以让变量除以极差(max-min)来进行特征缩放,让变量取值范围相近,缓解这一问题

image-20241214164557345

左右横跳是因为θ1的偏导相对θ2太大,相对的θ1下降步数太大,从山谷这头一下子迈到山谷那头,永远没头。

均值归一化(Mean Normalization):将数据的每个特征调整为均值为 0,范围标准化为固定区间(通常是 [-1, 1])

$x_{norm}=\frac{x-u}{x_{max}-x_{min}}$,其中$u$为均值

标准化(Standardization):调整为均值为 0,标准差为 1,适合于分布接近正态分布的数据

$x_{stand}=\frac{x-u}{\sigma}$, 其中$\sigma$为标准差

学习率

如何确保梯度下降正常工作?(1)绘制损失函数随迭代次数的曲线图。损失函数逐步下降说明正常工作;当损失函数较为平坦时,说明已经收敛(2)自动收敛测试,当某次迭代后,学习率下降很少$<\epsilon$说明已经收敛, 但$\epsilon$取值较难设定。常用方法一

image-20241216163630788

当损失函数曲线逐步上升或成屁股形时,说明学习率取值过大,应调小学习率

image-20241216164203898

当学习率充分小时,损失函数的值会逐步下降。但梯度下降算法会收敛的很慢。

总结:学习率太小会收敛很慢;学习率太大,损失会增加;可能不收敛;可能收敛很慢。

如何选择学习率:先确定学习率的最小最大值,再在区间内尝试找到可以快速收敛的学习率。可以每3倍3倍的尝试。

image-20241216164544635

特征和多项式回归

设计特征:我们可以不使用$h_{\theta}(x)=\theta_0+\theta_1\times x_1+\theta_2\times x_2$,其中$x_1$为房子长度,$x_2$为房子宽度。我们可以设计特征房子面积$x=x_1\times x_2$,令$h_{\theta}(x)=\theta_0+\theta_1\times x$

多项式回归:分析数据点的分布情况,我们可以使用某个特征的根号项、二次项、三次项来作为函数的类型来进行拟合。注意:在有多次项的时候,特征缩放显得更加重要。

image-20241216170757054

正规方程

求解参数$\theta$的方法:(1)梯度下降、正规方程

思想:令损失函数的偏导为0,解出$\theta$.

image-20241216191324398

方法:在数据中加入$x_0$特征这一列并初始化为1,将数据的每一项特征作为矩阵$X$的一列,所有数据的标签作为向量$y$。则$\theta=(X^TX)^{-1}X^Ty$.

image-20241216191436816

梯度下降vs正规方程:(1)梯度下降需要选择学习率,并且需要迭代多次;而正规方程不需学习率,不需迭代。(2)梯度下降当n很大时仍有效,而正规方程时间复杂度较高。

计算逆矩阵的复杂度为$O(n^3)$,当$n\le1e4$时使用正规方程,反之使用梯度下降。而且梯度下降在以后复杂方法中也可以求解,正规方程可能不可。

image-20241216191836703

当(1)含有多余特征时,其中某些特征存在线性相关关系(2)特征太多时,样本数<=特征数。会出现矩阵$X^TX$不可逆的情况。尝试(1)删除多余的特征(2)删除某些特征或正则化

image-20241216200344136

矢量化

$h_\theta(x)=\sum_{j=0}^{n}\theta_jx_j$对应未矢量化的代码(for),左半部分。

$h_\theta(x)=\theta^Tx$对应矢量化的代码,右半部分。运行效率更快。

image-20241219165803645

在梯度下降更新参数$\theta$时,我们可以使用矢量化完成参数同步更新缩短代码更高效

我们可以将参数更新的公式记为$\theta:=\theta-\alpha\delta$.这里$\theta\in\mathbb{R}^{n+1},\alpha\in\mathbb{R},\delta\in\mathbb{R}^{n+1}.$ where $\delta=\frac{1}{m}\sum^{m}{i=1}{(h{\theta}(x^{(i)})-y^{(i)})(x^{i})}$.

下面说明为什么$\delta$是n+1维的向量。

求和号中的$(h_{\theta}(x^{(i)})-y^{(i)})\in\mathbb{R}$表示用第i个样本的预测值-实际值,是一个数。$(x^{i})\in\mathbb{R}^{n+1}$表示第i个样本的特征向量,是一个向量。得证。

将求和号展开,即$\sum^{m}{i=1}{(h{\theta}(x^{(i)})-y^{(i)})(x^{i})}=(h_{\theta}(x^{(1)})-y^{(1)})x^{(1)}+(h_{\theta}(x^{(2)})-y^{(2)})x^{(2)}+…$,其中$(h_{\theta}(x^{(1)})-y^{(1)}),(h_{\theta}(x^{(2)})-y^{(2)})$是数,$x^{(1)},x^{(2)}$是向量。

其中将$x^{(i)}$展开为向量,只关注$x^{(i)}_0$的项,相乘相加即为$\delta_0$。

image-20241219165707439

4.多元线性回归
http://example.com/2025/02/16/4 多元线性回归/
作者
Dongxuan Liu
发布于
2025年2月16日
许可协议