【机器学习】多元线性回归详解和特征压缩

文章介绍了多元线性回归的假设函数,特别是在处理多个特征如房屋价格预测时的应用。它详细阐述了代价函数和梯度下降法在优化模型参数中的作用。此外,还讨论了特征缩放的重要性,以加速梯度下降的收敛速度,并提及了多项式回归在非线性问题上的应用。
摘要由CSDN通过智能技术生成

注意⚠️阅读本文前,你应该需要掌握:机器学习线性回归模型、高等数学微积分部分内容、线性代数矩阵部分内容
前情提要:https://blog.csdn.net/weixin_45434953/article/details/130593910

一、多元线性回归的假设函数

首先我们考虑以下的例子:
有一个数据集,里面给出了房屋的价格、面积大小、楼层数、房龄和寝室数量,希望可以建立模型,根据面积大小、楼层数、房龄和寝室数量推测出房屋售价。

在这里插入图片描述

  • n用于表示特征量数量
  • x ( i ) x^{(i)} x(i)用于表示第i个样例
  • x j ( i ) x_j^{(i)} xj(i)用于表示第i个样例的第j个特征的值

那么第二个样例写成矩阵形式如下:
x ( 2 ) = [ 1416 2 2 40 ] x^{(2)}=\begin{bmatrix}1416 \\2 \\2 \\40\end{bmatrix} x(2)= 14162240
我们在前面的线性回归中,使用了 h θ = θ 0 + θ 1 x h_\theta = \theta_0+\theta_1x hθ=θ0+θ1x作为假设函数,但是在这里显然已无法满足有4个自变量的线性回归,那么当前样例的假设函数应该设置为 h θ = θ 0 + θ 1 x 1 + θ 2 x 2 + θ 3 x 3 + θ 4 x 4 h_\theta = \theta_0+\theta_1x_1+\theta_2x_2+\theta_3x_3+\theta_4x_4 hθ=θ0+θ1x1+θ2x2+θ3x3+θ4x4。当然,我们推广开来可得,如果 x 0 x_0 x0恒为1的话,对于拥有n个特征量的线性回归的假设函数应该为 h θ = θ 0 x 0 + θ 1 x 1 + θ 2 x 2 + θ 3 x 3 + . . . . + θ n x n h_\theta = \theta_0x_0+\theta_1x_1+\theta_2x_2+\theta_3x_3+....+\theta_nx_n hθ=θ0x0+θ1x1+θ2x2+θ3x3+....+θnxn,裆燃,如果你想用向量的形式表示,那么则如下所示
h θ = [ θ 0 θ 1 θ 2 . . . θ n ] [ x 0 x 1 x 2 . . . x n ] ( x 0 = 1 ) h_\theta=\begin{bmatrix} \theta_0 & \theta_1 & \theta_2 & ... & \theta_n\end{bmatrix}\begin{bmatrix}x_0\\x_1 \\x_2 \\... \\x_n\end{bmatrix}(x_0=1) hθ=[θ0θ1θ2...θn] x0x1x2...xn (x0=1)

二、多元梯度下降法

上面已经得出了假设函数,在含有n个特征的多元线性回归下我们可以将n个特征值看为一个有n个元素的向量,上面已经提到其假设函数为 h θ = θ 0 x 0 + θ 1 x 1 + θ 2 x 2 + θ 3 x 3 + . . . . + θ n x n ( x 0 = 1 ) h_\theta = \theta_0x_0+\theta_1x_1+\theta_2x_2+\theta_3x_3+....+\theta_nx_n(x_0=1) hθ=θ0x0+θ1x1+θ2x2+θ3x3+....+θnxn(x0=1),那么多元线性回归的代价函数是什么呢?根据之前学习单特征值的线性回归的经验推导,可知其代价函数为 J ( θ 0 , θ 1 . . . , θ n ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 (1) J(\theta_0,\theta_1...,\theta_n) = \frac{1}{2m}\sum_{i=1}^{m} (h_\theta(x^{(i)})-y^{(i)})^2\tag{1} J(θ0,θ1...,θn)=2m1i=1m(hθ(x(i))y(i))2(1)也就是会使用预测点和实际点的差值的平方的和作为代价函数
同时,他的梯度下降函数如下:
θ j : = θ j − α ∂ J ( θ 0 , θ 1 . . . , θ n ) ∂ θ j (2) \theta_j := \theta_j-\alpha\frac{\partial J(\theta_0,\theta_1...,\theta_n)}{\partial \theta_j } \tag{2} θj:=θjαθjJ(θ0,θ1...,θn)(2)
j = 0 , . . . . , n j=0,....,n j=0,....,n循环该函数
将公式(1)和公式(2)合并起来,并且进行求导,可以得到梯度下降函数如下:
θ j : = θ j − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) (3) \theta_j := \theta_j-\alpha\frac{1}{m}\sum_{i=1}^{m} (h_\theta(x^{(i)})-y^{(i)})x_j^{(i)}\tag{3} θj:=θjαm1i=1m(hθ(x(i))y(i))xj(i)(3)
这里 j = 0 , 1 , 2 , . . n j={0,1,2,..n} j=0,1,2,..n,并且 ( x 0 = 1 ) (x_0=1) (x0=1)

三、使用特征缩放改进梯度下降

这里我歪一下楼,先介绍一些梯度下降的技巧,其中一个技巧就是特征缩放,假设有一个拥有房屋面积和房间数两个特征量和一个房屋价值的结果变量的数据集,其中房屋面积 θ 1 \theta_1 θ1取值为0到2000,房间数 θ 2 \theta_2 θ2的取值为0到8。可以看出两个特征向量差别特别大。如果我们画出该数据集的代价函数 J ( θ ) J(\theta) J(θ),会发现它特别的狭长,这对梯度下降并不友好,下降的路径可能会较为曲折并且花费的时间也会比较多
代价函数图,红色为梯度下降路径
一个简单的解决办法就是,对特征值的取值进行缩放,比如 θ 1 : = θ 1 2000 , θ 2 = θ 2 8 \theta_1 := \frac{\theta_1}{2000},\theta_2=\frac{\theta_2}{8} θ1:=2000θ1,θ2=8θ2,这样一来, θ 1 \theta_1 θ1 θ 2 \theta_2 θ2取值范围都是0到1,这样得到的梯度下降函数收敛将会更加快速
在这里插入图片描述
在更普遍的情况中,我们的目标一般是将特征值约束在 ( − 1 , 1 ) (-1,1) (1,1)的区间中,因此特征缩放又被称为归一化。假设有一个特征向量 x 1 x_1 x1,其取值范围为 ( 0 , 2000 ) (0,2000) (0,2000),平均值 A v g ( x 1 ) = 1000 Avg(x_1)=1000 Avg(x1)=1000,那么一般采用以下式子进行归一化:
x 1 = x 1 − A v g ( x 1 ) 2000 x_1 = \frac{x_1-Avg(x_1)}{2000} x1=2000x1Avg(x1)
这又被称为均值归一化。

说到底,特征缩放是用于将特征向量的取值范围限制在一个相近的范围内,使得梯度下降更加顺滑,所需的次数更少。

四、多项式回归

假设有如下一个数据集合,其中特征为房屋大小,结果集为房屋价格
在这里插入图片描述
可以看到,这些点不太适合用线性回归,我们可以试着使用二元假设函数 h ( x ) = θ 0 + θ 1 x + θ 2 x 2 h(x)=\theta_0+\theta_1x+\theta_2x^2 h(x)=θ0+θ1x+θ2x2来拟合。
在这里插入图片描述
但是这种二次方假设函数会让房子面积达到一定地步后,价格反而下降了,所以使用 h ( x ) = θ 0 + θ 1 x + θ 2 x 2 + θ 3 x 3 h(x)=\theta_0+\theta_1x+\theta_2x^2+\theta_3x^3 h(x)=θ0+θ1x+θ2x2+θ3x3会更合理。如果x的取值为0到2000,那么x3将会是相当大的数字,因此归一化是十分必要的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值