线性回归模型的最小二乘表达
数据集:
D
=
{
(
x
1
,
y
1
)
,
.
.
.
,
(
x
N
,
y
N
)
}
,
x
i
∈
R
p
,
y
i
∈
R
,
i
=
1
,
2
,
.
.
.
,
N
,
X
=
(
x
1
,
x
2
,
.
.
.
,
x
N
)
T
,
Y
=
(
y
1
,
y
2
,
.
.
.
,
y
N
)
T
D = \{(x_1,y_1),...,(x_N,y_N) \},x_i \in R^p,y_i \in R,i = 1,2,...,N, X = (x_1,x_2,...,x_N)^T,Y=(y_1,y_2,...,y_N)^T
D={(x1,y1),...,(xN,yN)},xi∈Rp,yi∈R,i=1,2,...,N,X=(x1,x2,...,xN)T,Y=(y1,y2,...,yN)T
假设X和Y之间存在线性关系,模型的具体形式为
y
^
=
f
(
w
)
=
w
T
x
\hat{y}=f(w) =w^Tx
y^=f(w)=wTx
最小二乘估计:
我们需要衡量真实值𝑦𝑖与线性回归模型的预测值
w
T
x
i
w^Tx_i
wTxi之间的差距,在这里我们使用二范数的平方和L(w)来描述这种差距,即:
L
(
w
)
=
∑
i
=
1
N
∣
∣
w
T
x
i
−
y
i
∣
∣
2
2
=
∑
i
=
1
N
(
w
T
x
i
−
y
i
)
2
=
(
w
T
X
T
−
Y
T
)
(
w
T
X
T
−
Y
T
)
T
=
w
T
X
T
X
w
−
2
w
T
X
T
Y
+
Y
Y
T
L(w) = \sum\limits_{i=1}^{N}||w^Tx_i-y_i||_2^2=\sum\limits_{i=1}^{N}(w^Tx_i-y_i)^2 = (w^TX^T-Y^T)(w^TX^T-Y^T)^T = w^TX^TXw - 2w^TX^TY+YY^T
L(w)=i=1∑N∣∣wTxi−yi∣∣22=i=1∑N(wTxi−yi)2=(wTXT−YT)(wTXT−YT)T=wTXTXw−2wTXTY+YYT
因此,我们需要找到使得L(w)最小时对应的参数w,即:
w
^
=
a
r
g
m
i
n
L
(
w
)
\hat{w} = argmin\;L(w)
w^=argminL(w)
为了达到求解最小化L(w)问题,我们应用高等数学的知识,使用求导来解决这个问题:
∂
L
(
w
)
∂
w
=
2
X
T
X
w
−
2
X
T
Y
=
0
,
\frac{\partial L(w)}{\partial w} = 2X^TXw-2X^TY = 0,
∂w∂L(w)=2XTXw−2XTY=0,因此
w
^
=
(
X
T
X
)
−
1
X
T
Y
\hat{w} = (X^TX)^{-1}X^TY
w^=(XTX)−1XTY
几何解释:
在线性代数中,我们知道两个向量a和b相互垂直可以得出: < a , b > = a . b = a T b = 0 <a,b> = a.b = a^Tb = 0 <a,b>=a.b=aTb=0,而平面X的法向量为Y-Xw,与平面X互相垂直,因此: 𝑋 𝑇 ( 𝑌 − 𝑋 𝑤 ) = 0 𝑋^𝑇(𝑌−𝑋𝑤)=0 XT(Y−Xw)=0,即: w = ( X T X ) − 1 X T Y w = (X^TX)^{-1}X^TY w=(XTX)−1XTY
极大似然估计与最小二乘估计的联系与区别
区别:
对于最小二乘法,当从模型总体随机抽取n组样本观测值后,最合理的参数估计量应该使得模型能最好地拟合样本数据,也就是估计值和观测值之差的平方和最小。
而对于最大似然法,当从模型总体随机抽取n组样本观测值后,最合理的参数估计量应该使得从模型中抽取该n组样本观测值的概率最大。显然,这是从不同原理出发的两种参数估计方法。
联系:
线性回归的最小二乘估计<==>噪声
ϵ
∽
N
(
0
,
σ
2
)
\epsilon\backsim N(0,\sigma^2)
ϵ∽N(0,σ2)的极大似然估计
决策树模型与线性模型的联系与区别
区别:
线性模型的模型形式与树模型的模型形式有着本质的区别,具体而言,线性回归对模型形式做了如下假定:
f
(
x
)
=
w
0
+
∑
j
=
1
p
w
j
x
(
j
)
f(x) = w_0 + \sum\limits_{j=1}^{p}w_jx^{(j)}
f(x)=w0+j=1∑pwjx(j),,而回归树则是
f
(
x
)
=
∑
m
=
1
J
c
^
m
I
(
x
∈
R
m
)
f(x) = \sum\limits_{m=1}^{J}\hat{c}_mI(x \in R_m)
f(x)=m=1∑Jc^mI(x∈Rm)。
联系:
可用于解决回归问题。
Python编写线性回归模型
假设家庭每月消费支出与每月可支配收入之间的关系为:
S
p
e
n
d
i
n
g
=
β
0
+
β
1
∗
I
n
c
o
m
e
+
μ
Spending =\beta_0 + \beta_1*Income+μ
Spending=β0+β1∗Income+μ
样本回归模型可表示为:
y
i
=
β
0
+
β
1
∗
x
i
y_i =\beta_0 + \beta_1*x_i
yi=β0+β1∗xi
OLS估计的思想是通过最小化残差来对回归系数进行估计,即:
import numpy as np
def linear_OLS(x_arr,y_arr):
x_avg= x_arr.mean()
y_avg = y_arr.mean()
s_xy = (x-x_avg)*(y-y_avg).T
s_x = (x-x_avg)*(x-x_avg).T
beta_1 = s_xy.sum()/s_x.sum()
beta_0 = y_avg-beta_1*x_avg
return beta_1,beta_0
x = np.array([800,1100,1400,1700,2000,2300,2600,2900,3200,3500])
y = np.array([638,935,1155,1254,1408,1650,1925,2068,2266,2530])
beta_1,beta_0 = linear_OLS(x,y)
print('beta_1:',beta_1,'beta_0:',beta_0)
参考:https://www.pythonf.cn/read/74475