简单的线性回归公式为:
y
=
a
x
+
b
y=ax+b
y=ax+b在这个公式中,y是目标变量,即未来要预测的值,x是影响目标变量y的因素,而a和b则是我们要求解的模型的参数。
在现实生活中,往往结果“y”的因素不止一个,这时“x”就会从一个变成N个,这就由简单线性回归变成了多元线性回归,而它的公式也变成了:
y
=
a
1
x
1
+
a
2
x
2
+
a
3
x
3
+
.
.
.
+
a
n
x
n
+
b
y = a_1x_1+a_2x_2+a_3x_3+...+a_nx_n+b
y=a1x1+a2x2+a3x3+...+anxn+b
通常,在机器学习中,我们把真实值(样本的真实结果)写做y,把预测值(通过算法推算出来的结果)写作y_pred,把自变量(影响结果的因素),即样本的特征值写作x,把与x相乘的a理解为特征的重要程度,也叫权重,英文:weights,所以通常用w代替a,表达权重值。而b称为截距(bias),至于为什么要加这个b,是因为在算法的推导上,加了这个b可以让概率密度函数的均值等于0,这个在之后的推导上会讲到。所以,我们的公式就变为了:
y
_
p
r
e
d
=
w
1
x
1
+
w
2
x
2
+
.
.
.
+
w
n
x
n
+
b
y\_pred=w_1x_1+w_2x_2+...+w_nx_n+b
y_pred=w1x1+w2x2+...+wnxn+b
为了方便计算,我们引入线性代数的概念。由于一个样本有多个特征值,我们将一个样本的多个特征值排成一行,那么多个样本就有很多行的特征值,这样就构成了一个多行多列的矩阵,所以有m个样本这个矩阵就有m行,每个样本有n个特征那么就有n列 ,我们把这个m行n列的特征值矩阵记作大写的X。然后在多元线性回归中,每一个不同样本对应的w都是相同的(我们要求的模型就是去拟合这些样本的真实结果,让预测出来的结果尽可能与原始样本得到的结果相似,即预测的结果和原始的样本的真实结果在同一个分布上),所以w是一行n列的,截距项b只有一个,可以记作w0,与其他的w参数一并写成W。然后在原始有结果的样本中,我们通过W参数和X特征值预测出来的结果y_pred和真实的结果y有一个差距,这个差距我们称为误差,记作ε。即样本的真实值y等于W参数与X样本矩阵相乘得到的预测值y_pred加上误差值ε。所以我们就有了新的公式:
y
=
X
W
+
ε
或
者
y
=
W
T
X
+
ε
(
矩
阵
相
乘
交
换
位
置
需
要
转
置
)
y=XW+ε或者y=W^TX+ε(矩阵相乘交换位置需要转置)
y=XW+ε或者y=WTX+ε(矩阵相乘交换位置需要转置)
正太分布的概率密度函数公式:
f
(
x
∣
μ
,
σ
2
)
=
1
2
π
σ
2
e
−
(
x
−
μ
)
2
2
σ
2
f(x|μ,σ^2)=\frac{1}{\sqrt{2πσ^2}}e^-\frac{(x-μ)^2}{2σ^2}
f(x∣μ,σ2)=2πσ21e−2σ2(x−μ)2
将单个误差ε带入公式求的x,再通过截距项来本质上平移整体分布的位置,使得均值μ=0,那么公式就变为了:
f
(
ε
i
∣
μ
,
σ
2
)
=
1
2
π
σ
2
e
−
ε
i
2
2
σ
2
f(ε_i|μ,σ^2)=\frac{1}{\sqrt{2πσ^2}}e^-\frac{ε_i^2}{2σ^2}
f(εi∣μ,σ2)=2πσ21e−2σ2εi2
上式通过最大似然估计表达了单个误差的为0的最大可能的概率,那么最大概率的总似然就为:
L
θ
(
ε
1
,
.
.
.
,
ε
m
)
=
f
(
ε
1
,
.
.
.
,
ε
m
∣
μ
,
σ
2
)
=
f
(
ε
1
∣
μ
,
σ
2
)
∗
.
.
.
∗
f
(
ε
m
∣
μ
,
σ
2
)
L_θ(ε_1,...,ε_m)=f(ε_1,...,ε_m|μ,σ^2)=f(ε_1|μ,σ^2)*...*f(ε_m|μ,σ^2)
Lθ(ε1,...,εm)=f(ε1,...,εm∣μ,σ2)=f(ε1∣μ,σ2)∗...∗f(εm∣μ,σ2)
又因为这里讲的是线性回归算法,所以误差函数可以写成如下:
ε
i
=
∣
y
i
−
y
_
p
r
e
d
∣
=
∣
y
i
−
W
T
x
i
∣
=
∣
y
i
−
θ
T
x
i
∣
ε_i=|y_i-y\_pred|=|y_i-W^Tx_i|=|y_i-θ^Tx_i|
εi=∣yi−y_pred∣=∣yi−WTxi∣=∣yi−θTxi∣
再讲已知样本的数据X和y带入公式,就得到了如下最大似然估计函数的公式:
L
θ
(
ε
1
,
.
.
.
,
ε
m
)
=
∏
i
=
1
m
1
2
π
σ
2
e
−
(
y
i
−
θ
T
x
i
)
2
2
σ
2
L_θ(ε_1,...,ε_m)=\prod_{i=1}^{m}\frac{1}{\sqrt{2πσ^2}}e^-\frac{(y_i-θ^Tx_i)^2}{2σ^2}
Lθ(ε1,...,εm)=i=1∏m2πσ21e−2σ2(yi−θTxi)2
为了求得最优解,我们把总似然最大的那一时刻的参数θ(这里的θ表示前面讲的所有W参数的集合,也就是模型的参数)当成是最优解。接着引入对数函数有单调性的特性,将最大化似然函数转化为最大化对数似然函数,公式如下:
a
r
g
max
θ
L
θ
(
ε
1
,
.
.
.
,
ε
m
)
=
a
r
g
max
θ
l
o
g
e
(
∏
i
=
1
m
1
2
π
σ
2
e
−
(
y
i
−
θ
T
x
i
)
2
2
σ
2
)
arg\max_{θ}L_θ(ε_1,...,ε_m)=arg\max_{θ}log_e(\prod_{i=1}^{m}\frac{1}{\sqrt{2πσ^2}}e^-\frac{(y_i-θ^Tx_i)^2}{2σ^2})
argθmaxLθ(ε1,...,εm)=argθmaxloge(i=1∏m2πσ21e−2σ2(yi−θTxi)2)
Q: what? A: 梯度下降是一种经典常用的优化算法,主要是指导计算机在迭代过程中如何去调整θ,公式是:
W
j
t
+
1
=
W
j
t
−
η
∗
g
r
a
d
i
e
n
t
j
W_j^{t+1}=W_j^t-η*gradient_j
Wjt+1=Wjt−η∗gradientj其中gradient就是梯度,即损失函数的导函数,这需要分别对损失函数MSE中的每一个变量求导,即偏导,跳过推导过程后,我们就得到了如下公式:
δ
δ
θ
j
=
(
h
θ
(
x
)
−
y
)
x
j
\frac{δ}{δθ_j}=(h_θ(x)-y)x_j
δθjδ=(hθ(x)−y)xj总结就是:
θ
j
t
+
1
=
θ
j
t
−
η
∗
g
j
=
θ
j
t
−
η
∗
(
h
θ
(
x
)
−
y
)
x
j
θ_j^{t+1}=θ_j^t-η*g_j=θ_j^t-η*(h_θ(x)-y)x_j
θjt+1=θjt−η∗gj=θjt−η∗(hθ(x)−y)xj
Q: what? A: 归一化的目的是将数据的各个维度特征的数量级统一,来做到无量纲化。最大值最小值归一化可以把数值归一到0-1之间,公式是:
x
i
,
j
∗
=
x
i
,
j
−
x
j
m
i
n
x
j
m
a
x
−
x
j
m
i
n
x_{i,j}^*=\frac{x_{i,j}-x_j^{min}}{x_j^{max}-x_j^{min}}
xi,j∗=xjmax−xjminxi,j−xjmin标准归一化通常包含了均值归一化和方差归一化。经过处理的数据符合标准正态分布,即均值为0,标准差为1,其转化函数为:
X
n
e
w
=
X
i
−
X
m
e
a
n
S
t
a
n
d
a
r
d
D
e
v
i
a
t
i
o
n
X_{new}=\frac{X_i-X{mean}}{StandardDeviation}
Xnew=StandardDeviationXi−Xmean
Q: what? A:为了防止过拟合,在损失函数的公式上加上的惩罚项,常用的有L1正则项和L2正则项,公式为:
L
1
=
∑
i
=
0
m
∣
w
i
∣
L_1=\sum_{i=0}^m|w_i|
L1=i=0∑m∣wi∣
L
2
=
∑
i
=
0
m
w
i
2
L_2=\sum_{i=0}^mw_i^2
L2=i=0∑mwi2在多元线性回归中,当损失函数加上L1正则时,我们称之为Lasso回归,而加上L2正则时,就诞生了Ridge领回归。