多元线性回归
引入
学习一元线性回归之后,我们便开始学习多元线性回归。
我们之前学习的一元线性回归具有单一的特征x,就拿房子的面积与其房子价格的关系来说,在一元线性回归中我们仅有theta0和theta1
假设函数:
$$
h_θ=θ_0+θ_1k
$$
但是在现实生活中,不可能仅仅依靠房子价格由房子的面积来决定,因为影响房价的因素肯定不仅仅是面积比如,有几个卧室,有几个卫生间,房龄多久了等等。
我们也许在生活中见到过房子面积大的比房子面积小的价格更低,说明还有其他因素在影响着价格。那么我们如何更好的来预测房子的价格呢,我们需要把更多的特征纳入假设函数中,这样才能使我们的预测结果更加准确。
分析
假设函数:
$$
(θ_0,θ_1,θ_2,θ_3,……θ_n)θ代表一系列需要学习的参数
$$
$$
(1,X^i_1,X^i_2,X^i_3,……,X^i_n )代表了特征的参数
$$
所以多元线性回归的假设函数可以写为:
$$
h_θ(x)=θ_0+θ_1X^i_1+θ_2X^i_2+θ_3X^i_3+……+θ_nX^i_n
$$
$$
若令θ_0X^i_0=1
$$
$$
则h_θ(x)=θ_0X^i_0+θ_1X^i_1+θ_2X^i_2+θ_3X^i_3+……+θ_nX^i_n
$$
一元线性回归损失函数
$$
J(θ_0,θ_1)=\frac{1}{2m}\sum ^n_i(y^i-y)^2
$$
求导后的公式为
$$
对\theta_0进行求导后的导函数:\frac{\partial}{\theta_0}=\frac{1}{m}\sum ^n_i(y^i-y)
$$
$$
对\theta_1进行求导后的导函数:\frac{\partial}{\theta_1}=\frac{1}{m}\sum ^n_i(y^i-y)x^i
$$
一元迭代函数
$$
对\theta_0进行迭代更新:\theta_0=\alpha\frac{\partial}{\theta_0}=\theta_0-\alpha\frac{1}{m}\sum ^n_i(y^i-y)
$$
$$
对\theta_1进行迭代更新:\theta_1=\alpha\frac{\partial}{\theta_1}=\theta_1-\alpha\frac{1}{m}\sum ^n_i(y^i-y)x^i
$$
多元线性回归
多元线性回归算法描述
(1).初始化权值
(2).对每一个训练样本:
计算权值和输入特征向量之间的值作为预测值
计算实际值与预测值之间的误差
定义一种误差的衡量标准,想办法让误差降到最低
用误差指导权值的更新
(3).设置算法停止的终止条件,当达到终止条件时,算法就不再继续运行
由于我们希望尽可能的减小误差,所以我们在这里采用的方法就是梯度下降法,那么首先要构造损失函数
多元损失函数
$$
J(θ_0,θ_1,\theta_2,\theta_3,…,\theta_n)=\frac{1}{2m}\sum ^n_i(y^i-y)^2
$$
对于多元的损失函数进行求导,其实是和一元的差不多的
代码实现
例子:X,Y为数据
$$
X=\begin{bmatrix}
1&2&5&4\
2&5&1&2\
\end{bmatrix}
$$
$$
Y=\begin{bmatrix}
19\
26\
19\
20\
\end{bmatrix}
$$
批梯度下降:
1 | import numpy as np |
运行的结果为:
1 | 第 1 个参数的值: [2.8636856] |
随机梯度下降:
1 | import numpy as np |
运行结果:
1 | 第 1 个参数的值: [2.8565211] |
波斯顿房价预测
代码:
1 | import numpy as np |
数据集下载地址:https://pan.baidu.com/s/1mfC1lqQoUKH3fflao_hxwA
提取码:15p5
参考https://blog.csdn.net/program_developer/article/details/78637711