【机器学习】线性回归(基于学习的方式)所用到的公式

线性回归

个人观点:我这里所说的线性回归不完全等同于数学上严格的线性回归,这里的线性回归更偏向于利用学习的手段进行回归。

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)=∑θi​Xi​+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π ​σ1​exp(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π ​σ1​exp(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)的矩阵不可逆的问题,当然也可以采用正则化的方式来避免不可逆的问题

上一篇:MCS:连续随机变量——Gamma分布


下一篇:第三讲 Numpy理解各种梯度下降等优化算法