线性回归
个人观点:我这里所说的线性回归不完全等同于数学上严格的线性回归,这里的线性回归更偏向于利用学习的手段进行回归。
1. 数据预处理
这个数据的预处理不仅仅用在线性回归模型上,也是其他机器学习乃至深度学习中常用的方法,其最重要的步骤是对数据进行normalization。
设输入的原始数据是
X
0
X_0
X0,经处理后的数据为
X
X
X,则数据预处理的过程可以看作
X
=
X
0
−
μ
σ
X = \frac{X_0 - \mu}{\sigma}
X=σX0−μ
2. 误差项
我们可以认为真实值
Y
Y
Y是预测模型
L
i
n
e
a
r
θ
Linear_\theta
Linearθ对预处理数据
X
X
X的预测结果
L
i
n
e
a
r
θ
(
X
)
Linear_\theta(X)
Linearθ(X)与误差
ϵ
\epsilon
ϵ的和,即
Y
=
L
i
n
e
a
r
θ
(
X
)
+
ϵ
Y = Linear_\theta(X) + \epsilon
Y=Linearθ(X)+ϵ
而
L
i
n
e
a
r
θ
(
X
)
=
∑
θ
i
X
i
+
b
Linear_\theta(X) = \sum\theta_iX_i + b
Linearθ(X)=∑θiXi+b
一般情况下我们认为误差
ϵ
\epsilon
ϵ在数据间是独立同分布的,并且应该服从正态分布
N
(
0
,
σ
2
)
N(0,\sigma^2)
N(0,σ2)。所以正常情况下,为了避免因为数据本身的顺序对结果产生影响,使得数据之间保持独立性,往往在训练过程中要对数据进行随机打乱操作。
很容易的能够写出:
P ( ϵ ( i ) ) = 1 2 π σ e x p ( − ϵ ( i ) 2 2 σ 2 ) P(\epsilon^{(i)}) = \frac{1}{\sqrt{2\pi}\sigma} exp(\frac{-\epsilon^{(i)2}}{2\sigma^2}) P(ϵ(i))=2π σ1exp(2σ2−ϵ(i)2)
我们为了求解参数 θ \theta θ,所以将上面公式变形为
P ( y ∣ x ; θ ) = 1 2 π σ e x p ( − ( y − L i n e a r θ ( X ) ) 2 2 σ 2 ) P(y|x;\theta) = \frac{1}{\sqrt{2\pi}\sigma} exp(\frac{-(y - Linear_\theta(X))^{2}}{2\sigma^2}) P(y∣x;θ)=2π σ1exp(2σ2−(y−Linearθ(X))2)
由于这是一个基于学习的方法,所以需要每个数据尽可能适配这个模型,对于这里的每条数据,由于数据间是独立同分布的,那么这个模型的似然函数可以写成
L ( θ ) = Π ( P ( y ( i ) ∣ x ( i ) ; θ ) ) L(\theta) = \Pi (P(y^{(i)}|x^{(i)};\theta)) L(θ)=Π(P(y(i)∣x(i);θ))
由于概率是小于1的数,并且样本数目过多,采用累乘的形式的目标函数会趋近于零,可能导致梯度消失,但是理论上来讲,似然函数和对数似然函数的单调性一样,所以这个地方我们可以采用对数似然函数作为目标函数
l n L ( θ ) = n 2 π σ − 1 2 σ 2 ∑ ( y ( i ) − L i n e a r θ ( x ( i ) ) ) 2 ln L(\theta) = \frac{n}{\sqrt{2\pi}\sigma} - \frac{1}{2\sigma^2}\sum {(y^{(i)} - Linear_\theta(x^{(i)})})^2 lnL(θ)=2π σn−2σ21∑(y(i)−Linearθ(x(i)))2
在线性回归任务中,我们希望似然函数越大越好,也就是对数似然函数越大越好,也就是使 J ( θ ) = ∑ ( y ( i ) − L i n e a r θ ( x ( i ) ) ) 2 J(\theta)=\sum {(y^{(i)} - Linear_\theta(x^{(i)})})^2 J(θ)=∑(y(i)−Linearθ(x(i)))2越小越好,因此我们可以使用 J ( θ ) J(\theta) J(θ)作为目标函数进行优化。
利用学习的方法可以避免使用数学严格意义上的线性回归方法( θ = ( X T X ) − 1 X T Y \theta =(X^TX)^{-1}X^TY θ=(XTX)−1XTY)的矩阵不可逆的问题,当然也可以采用正则化的方式来避免不可逆的问题