Simple Linear Regression (简单的线性回归)
相关变量
example:
在过去的一个月里,猪肉的价格从8元一斤一路涨到了20元一斤。市面上的肉夹馍也逐渐从10元一个涨到了15元一个。在第二个月的第一天,我们发现猪肉的价格涨到了22元。那么肉夹馍的价格会涨到多少呢
variable(变量):
1、preddict target(预测对象) :y (what we want to predict)
2、feature(特征): x 已知的参数
所以训练数据集为:
{
(
x
i
,
y
i
)
}
i
=
1
n
\{(x_i,y_i)\}^n_{i=1}
{(xi,yi)}i=1n
假设我们对过去的30天进行了统计则 n=30,则 xi ,yi 分别为第 i 天的猪肉价格和肉夹馍价格。
parameters(参数):
3、slope(斜率): β1
4、intercept(截距): β0
在上面的例子中,我们的预测对象y,就是肉夹馍的价格。而我们的已知特征x就是猪肉的价格。
那么关于y和x之间的关系,我们可以选择最简单的线性方程
y
=
a
x
+
b
y=ax+b
y=ax+b
其中我们使
β
0
=
b
,
β
1
=
a
β{_0}=b, β{_1}=a
β0=b,β1=a
便得到了关于肉夹馍价格x和猪肉价格y的线性预测模型:
y
ˆ
=
β
0
+
β
1
x
\^y=β{_0}+β{_1}x
yˆ=β0+β1x
在这个模型中,β0和β1这两个参数选的越好,模型的预测结果就越准确。
Least-Squares Fit:
在这里,我们使用least-squares(LS) fit去得到这两个参数。
首先计算 Residual sum of squares(RSS):
R
S
S
(
β
0
,
β
1
)
=
∑
i
=
1
n
(
y
i
−
y
ˆ
i
)
2
RSS(β{_0},β{_1})=\sum_{\ i=1}^n{(y_i- \^y_i)^2}
RSS(β0,β1)= i=1∑n(yi−yˆi)2
为了进行下一步的计算,先声明一些需要计算的参数:
名称 | 公式 |
---|---|
样本均值(Sample mean) | x ˉ = 1 n ∑ i = 1 n x i y ˉ = 1 n ∑ i = 1 n y i \bar x=\frac1n\sum_{\ i=1}^n{x_i}\\ \bar y=\frac1n\sum_{\ i=1}^n{y_i} xˉ=n1 i=1∑nxiyˉ=n1 i=1∑nyi |
样本方差(Sample variance) | S x 2 = 1 n ∑ i = 1 n ( x i − x ˉ ) 2 S y 2 = 1 n ∑ i = 1 n ( y i − y ˉ ) 2 S^2_x =\frac1n\sum_{\ i=1}^n{(x_i- \bar x)^2}\\S^2_y =\frac1n\sum_{\ i=1}^n{(y_i- \bar y)^2} Sx2=n1 i=1∑n(xi−xˉ)2Sy2=n1 i=1∑n(yi−yˉ)2 |
样本标准差(Standard deviation) | S x = 1 n ∑ i = 1 n ( x i − x ˉ ) 2 S y = 1 n ∑ i = 1 n ( y i − y ˉ ) 2 S_x = \sqrt {\frac1n\sum_{\ i=1}^n{(x_i- \bar x)^2}}\\S_y = \sqrt {\frac1n\sum_{\ i=1}^n{(y_i- \bar y)^2}} Sx=n1 i=1∑n(xi−xˉ)2Sy=n1 i=1∑n(yi−yˉ)2 |
样本协方差(Sample covariance) | S x y = 1 n ∑ i = 1 n ( x i − x ˉ ) ( y i − y ˉ ) S_{xy} = \frac1n\sum_{\ i=1}^n{(x_i- \bar x)(y_i- \bar y)} Sxy=n1 i=1∑n(xi−xˉ)(yi−yˉ) |
样本相关系数(Sample correlation coefficient) | ρ x y = S x y S x S y = 1 n ∑ i = 1 n ( x i − x ˉ ) ( y i − y ˉ ) 1 n ∑ i = 1 n ( x i − x ˉ ) ⋅ 1 n ∑ i = 1 n ( y i − y ˉ ) \rho_{xy}=\frac{S_{xy}}{S_xS_y} = \frac{\frac1n\sum_{\ i=1}^n{(x_i- \bar x)(y_i- \bar y)}}{\frac1n\sum_{\ i=1}^n{(x_i- \bar x)}·\frac1n\sum_{\ i=1}^n{(y_i- \bar y)}} ρxy=SxSySxy=n1∑ i=1n(xi−xˉ)⋅n1∑ i=1n(yi−yˉ)n1∑ i=1n(xi−xˉ)(yi−yˉ) |
现在我们开始计算β0和β1,因为RSS计算的是真实值和预测值之间的差的平方,所以理论上,RSS越小则模型越准。而RSS是一个关于β0和β1的二元二次方程,并且二次参数的系数为正数,所以理论上,偏导为0的点就是最小值点,那么开始暴力求导吧!
0
=
∂
R
S
S
(
β
0
,
β
1
)
∂
β
0
=
d
d
β
0
∑
i
=
1
n
(
y
i
−
β
0
−
β
1
x
i
)
2
=
−
2
∑
i
=
1
n
(
y
i
−
β
0
−
β
1
x
i
)
(1)
0=\frac{\partial RSS(β{_0},β{_1})}{\partial β{_0}} =\frac{d}{d β{_0}}\sum_{\ i=1}^n{(y_i-β{_0}-β{_1}x_i)^2}\\=-2\sum_{\ i=1}^n{(y_i-β{_0}-β{_1}x_i)} \tag{1}
0=∂β0∂RSS(β0,β1)=dβ0d i=1∑n(yi−β0−β1xi)2=−2 i=1∑n(yi−β0−β1xi)(1)
0
=
∂
R
S
S
(
β
0
,
β
1
)
∂
β
1
=
d
d
β
1
∑
i
=
1
n
(
y
i
−
β
0
−
β
1
x
i
)
2
=
−
2
∑
i
=
1
n
(
y
i
−
β
0
−
β
1
x
i
)
x
i
(2)
0=\frac{\partial RSS(β{_0},β{_1})}{\partial β{_1}} =\frac{d}{d β{_1}}\sum_{\ i=1}^n{(y_i-β{_0}-β{_1}x_i)^2}\\=-2\sum_{\ i=1}^n{(y_i-β{_0}-β{_1}x_i)x_i}\tag {2}
0=∂β1∂RSS(β0,β1)=dβ1d i=1∑n(yi−β0−β1xi)2=−2 i=1∑n(yi−β0−β1xi)xi(2)
结合上表公式可从(1)
⟹
0
=
y
ˉ
−
β
0
−
β
1
x
ˉ
⟹
β
0
=
y
ˉ
−
β
1
x
ˉ
(3)
\Longrightarrow0=\bar y-β{_0}-β{_1}\bar x\\ \Longrightarrowβ{_0}=\bar y-β{_1}\bar x \tag{3}
⟹0=yˉ−β0−β1xˉ⟹β0=yˉ−β1xˉ(3)
推导(2)可得
0
=
1
n
∑
i
=
1
n
x
i
y
i
−
x
ˉ
β
0
−
y
i
−
β
1
1
n
∑
i
=
1
n
x
i
2
(4)
0=\frac1n\sum_{\ i=1}^n{x_iy_i- \bar xβ{_0}-y_i-β{_1} \frac1n\sum_{\ i=1}^nx^2_i}\tag{4}
0=n1 i=1∑nxiyi−xˉβ0−yi−β1n1 i=1∑nxi2(4)
将(3)代入(4)中
0
=
1
n
∑
i
=
1
n
x
i
y
i
−
x
ˉ
y
ˉ
−
β
1
(
1
n
∑
i
=
1
n
x
i
2
−
x
ˉ
2
)
⟹
β
1
=
S
x
y
S
x
2
(5)
0=\frac1n\sum_{\ i=1}^nx_iy_i- \bar x \bar y-β{_1}( \frac1n\sum_{\ i=1}^nx^2_i-\bar x^2)\\ \Longrightarrow β{_1} =\frac{S_{xy}}{S_x^2}\tag{5}
0=n1 i=1∑nxiyi−xˉyˉ−β1(n1 i=1∑nxi2−xˉ2)⟹β1=Sx2Sxy(5)
通过(3),(5)我们就可以得到β0,β1的最佳值。
其中
S
x
y
=
1
n
∑
i
=
1
n
x
i
y
i
−
x
ˉ
y
ˉ
S
x
2
=
1
n
∑
i
=
1
n
x
i
2
−
x
ˉ
2
S_{xy}= \frac1n\sum_{\ i=1}^n{x_iy_i- \bar x \bar y}\\ S_x^2=\frac1n\sum_{\ i=1}^nx^2_i-\bar x^2
Sxy=n1 i=1∑nxiyi−xˉyˉSx2=n1 i=1∑nxi2−xˉ2
模型评估(Model evaluation)
将得到的β0,β1代入RSS方程可得
R
S
S
(
β
0
,
β
1
)
=
n
(
1
−
ρ
x
y
2
)
S
y
2
RSS(β{_0},β{_1})=n(1-\rho_{xy}^2)S_y^2
RSS(β0,β1)=n(1−ρxy2)Sy2
通常我们计算R2来评估模型的好坏
R
2
=
1
−
R
S
S
/
n
S
y
2
=
ρ
x
y
2
R^2=1-\frac{RSS/n}{S_y^2} =\rho_{xy}^2
R2=1−Sy2RSS/n=ρxy2
如果
R2=1,则这个模型很好,
R2=0,则表示这个模型的准确率和随机模型差不多
R2<0,则该模型还不如扔色子来的准
至此一个简单的线性回归模型,从训练的评估的全过程就结束啦!