线性回归算法
我的微信公众号: s406205391; 欢迎大家一起学习,一起进步!!!
线性回归是利用数理统计中回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法,运用十分广泛。
我们看下面一组数据,这组数据通过工资和年龄两个特征来预测银行贷款的额度。
那么,工资和年龄对银行贷款给我们的额度的影响会有多大呢?这也就是我们所需要求的参数。
工资 | 年龄 | 额度 |
---|---|---|
4000 | 25 | 20000 |
8000 | 30 | 70000 |
5000 | 28 | 35000 |
7500 | 33 | 5000 |
12000 | 40 | 85000 |
通俗的讲:我们通过图片来展示我们的数据,图中X1和X2就是我们的两个特征(年龄,工资),Y是银行最终会借给我们多少钱。我们现在就需要找到最合适的一条线(想象一个高维)来最好的拟合我们的数据点。这时,我们假设θ1是年龄的参数,θ2是工资的参数。我们便可得到一个拟合平面:
h θ ( x ) = θ 0 + θ 1 x 1 + θ 2 x 2 h_\theta(x)=\theta_0 + \theta_1 x_1 + \theta_2 x2 hθ(x)=θ0+θ1x1+θ2x2 (θ0是偏置项)
将上述公式用矩阵表达,即得:
h θ ( x ) = ∑ i = 0 n θ i x i = θ T x h_\theta(x)=\sum\limits_{i=0}\limits^{n}\theta_{i}x_{i}=\theta^{T}x hθ(x)=i=0∑nθixi=θTx
该式展开其实为: h θ ( x ) = θ 0 x 0 + θ 1 x 1 + θ 2 x 2 h_\theta(x)=\theta_{0}x_{0} + \theta_{1}x_{1} + \theta_{2}x_{2} hθ(x)=θ0x0+θ1x1+θ2x2,相较于上式,多引入一个特征x0,这是为了后期方便矩阵的计算。所以我们可以把特征x0统一赋值为1。
因为,真实值和预测值之间肯定是要存在误差的。我们引入ε来表示误差。所以对于每一个样本,即方程即为: y ( i ) = θ T x ( i ) + ϵ ( i ) y^{(i)}=\theta^{T}x^{(i)} + \epsilon^{(i)} y(i)=θTx(i)+ϵ(i)
误差满足高斯分布
误差具有如下特点:
-
误差是独立并且具有相同的分布,并且服从均值为0,方差为θ2的高斯分布。
-
独立:误差在样本之间是相互独立的。
-
同分布。
既然,误差是服从高斯分布的,那么我们就可以用高斯分布的方程来表示: y ( i ) = θ T x ( i ) + ϵ ( i ) y^{(i)}=\theta^{T}x^{(i)} + \epsilon^{(i)} y(i)=θTx(i)+ϵ(i)
求解目标函数
我们首先将高斯函数,带入我们的方程,即可得:
预测值与误差: y ( i ) = θ T x ( i ) + ϵ ( i ) y^{(i)}=\theta^{T}x^{(i)} + \epsilon^{(i)} y(i)=θTx(i)+ϵ(i) (1)
由于误差服从高斯分布: p ( ϵ ( i ) ) = 1 2 π δ e − ( ϵ ( i ) ) 2 2 σ 2 p(\epsilon^{(i)})=\frac{1}{\sqrt{2\pi\delta}}e^{-\frac{(\epsilon^{(i)})^2}{2\sigma^{2}}} p(ϵ(i))=2πδ1e−2σ2(ϵ(i))2 (2)
将(1)式带入(2)式可得: p ( y ( i ) ∣ x ( i ) ; θ ) = 1 2 π δ e − ( y ( i ) − θ T x ( i ) ) 2 2 σ 2 p(y^{(i)}|x^{(i)};\theta)=\frac{1}{\sqrt{2\pi\delta}}e^{-\frac{(y^{(i)}-\theta^{T}x^{(i)})^{2}}{2\sigma^{2}}} p(y(i)∣x(i);θ)=2πδ1e−2σ2(y(i)−θTx(i))2
上式我们可以用最大函数求解。
似然函数: L ( θ ) = ∏ i = 1 m p ( y ( i ) ∣ x ( i ) ; θ ) = ∏ i = 1 m 1 2 π δ e − ( y ( i ) − θ T x ( i ) ) 2 2 σ 2 L(\theta)=\prod\limits_{i=1}\limits^{m} p(y^{(i)}|x^{(i)};\theta)= \prod\limits_{i=1}\limits^{m}\frac{1}{\sqrt{2\pi\delta}}e^{-\frac{(y^{(i)}-\theta^{T}x^{(i)})^{2}}{2\sigma^{2}}} L(θ)=i=1∏mp(y(i)∣x(i);θ)=i=1∏m2πδ1e−2σ2(y(i)−θTx(i))2
为了方便求解,我们将上式取对数:
对数似然,并化简:
l o g L ( θ ) = l o g ∏ i = 1 m p ( y ( i ) ∣ x ( i ) ; θ ) = l o g ∏ i = 1 m 1 2 π δ e − ( y ( i ) − θ T x ( i ) ) 2 2 σ 2 logL(\theta)=log\prod\limits_{i=1}\limits^{m} p(y^{(i)}|x^{(i)};\theta)= log\prod\limits_{i=1}\limits^{m}\frac{1}{\sqrt{2\pi\delta}}e^{-\frac{(y^{(i)}-\theta^{T}x^{(i)})^{2}}{2\sigma^{2}}} logL(θ)=logi=1∏mp(y(i)∣x(i);θ)=logi=1∏m2πδ1e−2σ2(y(i)−θTx(i))2
= ∑ i = 1 m l o g 1 2 π δ e − ( y ( i ) − θ T x ( i ) ) 2 2 σ 2 =\sum\limits_{i=1}\limits^{m}log\frac{1}{\sqrt{2\pi\delta}} e^{-\frac{(y^{(i)}-\theta^{T}x^{(i)})^{2}}{2\sigma^{2}}} =i=1∑mlog2πδ1e−2σ2(y(i)−θTx(i))2
= m l o g 1 2 π δ − 1 δ 2 1 2 ∑ i = 1 m ( y ( i ) − θ T x i ) 2 =mlog\frac{1}{\sqrt{2\pi\delta}} - \frac{1}{\delta^2}\frac{1}{2} \sum\limits_{i=1}\limits^{m}(y^{(i)}-\theta^Tx^{i})^2 =mlog2πδ1−δ2121i=1∑m(y(i)−θTxi)2
目标:去除常数项之后,让目标函数越大越好
J ( θ ) = 1 2 ∑ i = 1 m ( y ( i ) − θ T x ( i ) ) 2 J(\theta)=\frac{1}{2}\sum\limits_{i=1}\limits^{m}(y^{(i)} - \theta^T x^{(i)})^2 J(θ)=21i=1∑m(y(i)−θTx(i))2; 即让该式越小越好,可以用最小二乘解
应用最小二乘法求解上式:
J ( θ ) = 1 2 ∑ i = 1 m ( y ( i ) − θ T x ( i ) ) 2 = 1 2 ( X θ − y ) T ( X θ − y ) J(\theta)=\frac{1}{2}\sum\limits_{i=1}\limits^{m}(y^{(i)} - \theta^T x^{(i)})^2=\frac{1}{2}(X\theta-y)^T(X\theta-y) J(θ)=21i=1∑m(y(i)−θTx(i))2=21(Xθ−y)T(Xθ−y)
对该式求偏导即得:
θ = ( x T X ) − 1 X T y \theta=(x^TX)^{-1}X^Ty θ=(xTX)−1XTy
常用的评估方法,得到最佳目标函数的参数
上述我们将目标函数直接求出了结果,但是在某些情况下,我们并不能直接求得结果,因为上述我们对X求其逆矩阵,但是逆矩阵并不是一定能求的。
那么,我们如何评估目标函数拟合的效果呢?我们一般会用到R2项。R2的取值越接近于1,我们认为模型拟合的越好。
最常用的评估项R2: 1 − ∑ i − 1 m ( y ^ i − y i ) 2 ∑ i = 1 m ( y i − y ) ‾ 2 1-\frac{\sum\limits_{i-1}\limits^{m}(\hat y_{i} - y_i)^2}{\sum\limits_{i=1}\limits^{m}(y_i-y\overline)^2} 1−i=1∑m(yi−y)2i−1∑m(y^i−yi)2