机器学习入门 --- 线性回归算法(公式推导)

线性回归问题概述

在本文中,将根据这个银行贷款的数据例子,进行回归问题的公式推导

工资 年龄 额度
4000 25 20000
8000 30 70000
5000 28 35000
7500 33 50000
12000 40 85000

此数据的特征变量有两个,分别是工资、标签是银行给的贷款额度,也就是我们想要得到的目标 — 预测银行会贷款给我多少钱

在这个回归问题中:特征:工资、年龄;标签:额度

这里我们有一个需要考虑的问题:工资和年龄都会影响最终银行贷款的结果,但是这两项因素对额度的影响是不均等的,那么它们各自有多大影响呢?
因此我们需要对特征加入权重:
Y = θ 1 x 1 + θ 2 x 2 Y = \theta_1x_1+\theta_2x_2 Y=θ1x1+θ2x2
对于一条线来讲,是没有办法照顾到所有的数据点的,所以我们最后的目标就是寻找能够满足尽可能多的数据点、最合适的 θ 1 \theta_1 θ1 θ 2 \theta_2 θ2 的值

误差项定义

数学公式:
假设 θ 1 \theta_1 θ1 是年龄的参数, θ 2 \theta_2 θ2是工资的参数
拟合的平面(\theta_0是偏置项):
h 0 ( x ) = θ 0 + θ 1 x 1 + θ 2 x 2 h_0(x) = \theta_0 + \theta_1 x_1 + \theta_2 x_2 h0(x)=θ0+θ1x1+θ2x2
θ 1 \theta_1 θ1 θ 2 \theta_2 θ2是权重项, θ 0 \theta_0 θ0是偏置项。 θ 1 \theta_1 θ1 θ 2 \theta_2 θ2是模型训练的核心影响因素, θ 0 \theta_0 θ0起到微调拟合结果的作用,它的改变可使得拟合平面会上下浮动,使模型更精准。

对于上述方程, θ 0 \theta_0 θ0单独存在无法进行矩阵计算,需要在原始数据中加入辅助量 x 0 = 1 x_0=1 x0=1进行补位,整理为可矩阵计算的形式 ,最后将公式进行整合:

x 0 x_0 x0 工资 年龄 额度
1 4000 25 20000
1 8000 30 70000

h 0 ( x ) = θ 0 x 0 + θ 1 x 1 + θ 2 x 2 = ∑ i = 0 n θ i x i = θ T x h_0(x)= \theta_0 x_0 + \theta_1 x_1 + \theta_2 x_2 =\sum_{i=0}^{n} \theta_i x_i =\theta^Tx h0(x)=θ0x0+θ1x1+θ2x2=i=0nθixi=θTx
上述方程中 x x x 是已知量, θ \theta θ 是未知量,现在我们要做的就是对 θ i \theta_i θi 进行求解

误差

真实值和预测值之间肯定是会存在差异的(用 ε \varepsilon ε 来表示该误差)
对于每个样本 ( y y y为真实值、 θ T x ( i ) \theta^Tx^{(i)} θTx(i)为预测值):
y ( i ) = θ T x ( i ) + ε ( i ) y^{(i)}= \theta^Tx^{(i)}+\varepsilon^{(i)} y(i)=θTx(i)+ε(i)
对于机器学习来讲,就是给机器一堆数据和一个目标,朝着目标去学习,找到最符合目标的参数。在此公式中,我们的目标就是使该误差 ε ( i ) \varepsilon^{(i)} ε(i) 越来越小,即损失函数的结果越来越小。

独立同分布的意义

误差 ε ( i ) \varepsilon^{(i)} ε(i) 是独立并且具有相同的分布,并且服从均值为0方差为 θ 2 \theta^2 θ2 的高斯分布

根据本文中的例子来看:
独立:张三、李四一起来贷款,但是他们两个没关系
同分布:他们两个都是来我们假定的这家银行
高斯分布:银行可能会多给,也可能会少给,但是绝大多数情况下这个浮动不会太大,极小情况下浮动会比较大,符合正常情况

似然函数的作用

预测值与误差:
y ( i ) = θ T x ( i ) + ε ( i ) (1) y^{(i)}= \theta^Tx^{(i)}+\varepsilon^{(i)} \tag{1} y(i)=θTx(i)+ε(i)(1)
由于误差服从高斯分布:
p ( ε ( i ) ) = 1 2 π σ e x p ( − ( ε ( i ) ) 2 2 σ 2 ) (2) p(\varepsilon^{(i)}) = \frac{1}{\sqrt{2\pi}\sigma} exp(-\frac{(\varepsilon^{(i)})^2}{2\sigma^2}) \tag{2} p(ε(i))=2π σ1exp(2σ2(ε(i))2)(2)
我们的目标是要找到 θ \theta θ ,将 ( 1 ) (1) (1) 式代入 ( 2 ) (2) (2) 式得:
p ( y ( i ) ∣ x ( i ) ; θ ) = 1 2 π σ e x p ( − ( y ( i ) − θ T x ( i ) ) 2 2 σ 2 ) p(y^{(i)}|x^{(i)};\theta) = \frac{1}{\sqrt{2\pi}\sigma} exp(-\frac{(y^{(i)}-\theta^Tx^{(i)})^2}{2\sigma^2}) p(y(i)x(i);θ)=2π σ1exp(2σ2(y(i)θTx(i))2)
似然函数:
L ( θ ) = ∏ i = 1 m p ( y ( i ) ∣ x ( i ) ; θ ) = ∏ i = 1 m 1 2 π σ e x p ( − ( y ( i ) − θ T x ( i ) ) 2 2 σ 2 ) L(\theta) = \prod_{i=1}^{m}p(y^{(i)}|x^{(i)};\theta) = \prod_{i=1}^{m}\frac{1}{\sqrt{2\pi}\sigma} exp(-\frac{(y^{(i)}-\theta^Tx^{(i)})^2}{2\sigma^2}) L(θ)=i=1mp(y(i)x(i);θ)=i=1m2π σ1exp(2σ2(y(i)θTx(i))2)
解释:什么样的参数跟我们的数据组合后恰好是真实值

对数似然:
l o g L ( θ ) = l o g ∏ i = 1 m 1 2 π σ e x p ( − ( y ( i ) − θ T x ( i ) ) 2 2 σ 2 ) logL(\theta) = log\prod_{i=1}^{m}\frac{1}{\sqrt{2\pi}\sigma} exp(-\frac{(y^{(i)}-\theta^Tx^{(i)})^2}{2\sigma^2}) logL(θ)=logi=1m2π σ1exp(2σ2(y(i)θTx(i))2)
解释:乘法难解,用对数将累乘转化为累加,加法就容易了
因为我们想要得到的结果是极值点 θ \theta θ,而不是极值 L ( θ ) L(\theta) L(θ),因此对整个方程进行对数操作对我们的结果是没有影响的,两个方程是等价的

对于对数似然公式展开化简:
l o g L ( θ ) = l o g ∏ i = 1 m 1 2 π σ e x p ( − ( y ( i ) − θ T x ( i ) ) 2 2 σ 2 ) = ∑ i = 1 m l o g 1 2 π σ e x p ( − ( y ( i ) − θ T x ( i ) ) 2 2 σ 2 ) = ∑ i = 1 m l o g 1 2 π σ + ∑ i = 1 m l o g e x p ( − ( y ( i ) − θ T x ( i ) ) 2 2 σ 2 = m l o g 1 2 π σ − 1 σ 2 ⋅ 1 2 ∑ i = 1 m ( y ( i ) − θ T x ( i ) ) 2 \begin{aligned} logL(\theta) &= log\prod_{i=1}^{m}\frac{1}{\sqrt{2\pi}\sigma} exp(-\frac{(y^{(i)}-\theta^Tx^{(i)})^2}{2\sigma^2}) \\ &=\sum_{i=1}^{m}log\frac{1}{\sqrt{2\pi}\sigma} exp(-\frac{(y^{(i)}-\theta^Tx^{(i)})^2}{2\sigma^2}) \\ &=\sum_{i=1}^{m}log\frac{1}{\sqrt{2\pi}\sigma}+\sum_{i=1}^{m}logexp(-\frac{(y^{(i)}-\theta^Tx^{(i)})^2}{2\sigma^2} \\ &= mlog\frac{1}{\sqrt{2\pi}\sigma}-\frac{1}{\sigma^2}\cdot \frac{1}{2}\sum_{i=1}^{m}(y^{(i)}-\theta^Tx^{(i)})^2 \end{aligned} logL(θ)=logi=1m2π σ1exp(2σ2(y(i)θTx(i))2)=i=1mlog2π σ1exp(2σ2(y(i)θTx(i))2)=i=1mlog2π σ1+i=1mlogexp(2σ2(y(i)θTx(i))2=mlog2π σ1σ2121i=1m(y(i)θTx(i))2
目标:找到似然函数的极大值点(对数变化后也一样,对极大值点无影响)
在上述公式化简的结果式中, m l o g 1 2 π σ mlog\frac{1}{\sqrt{2\pi}\sigma} mlog2π σ1 是恒正常数项, 1 σ 2 ⋅ 1 2 ∑ i = 1 m ( y ( i ) − θ T x ( i ) ) 2 \frac{1}{\sigma^2}\cdot \frac{1}{2}\sum_{i=1}^{m}(y^{(i)}-\theta^Tx^{(i)})^2 σ2121i=1m(y(i)θTx(i))2 也是恒正的函数式,因此想要得到极大值,即 1 σ 2 ⋅ 1 2 ∑ i = 1 m ( y ( i ) − θ T x ( i ) ) 2 \frac{1}{\sigma^2}\cdot \frac{1}{2}\sum_{i=1}^{m}(y^{(i)}-\theta^Tx^{(i)})^2 σ2121i=1m(y(i)θTx(i))2取得极小值即可,因此设 J ( θ ) J(\theta) J(θ)
J ( θ ) = 1 2 ∑ i = 1 m ( y ( i ) − θ T x ( i ) ) 2 ( 最 小 二 乘 法 ) J(\theta) = \frac{1}{2}\sum_{i=1}^{m}(y^{(i)}-\theta^Tx^{(i)})^2 (最小二乘法) J(θ)=21i=1m(y(i)θTx(i))2
此时, J ( θ ) J(\theta) J(θ)便是我们的目标函数(损失函数),我们希望的结果是使其尽可能的小

参数求解

对于参数的求解,全部是基于矩阵运算
目标函数:
J ( θ ) = 1 2 ∑ i = 1 m ( y ( i ) − θ T x ( i ) ) 2 = 1 2 ∑ i = 1 m ( y ( i ) − h θ ( x ( i ) ) ) 2 = 1 2 ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 = 1 2 ( X θ − y ) T ( X θ − y ) \begin{aligned} J(\theta) &= \frac{1}{2}\sum_{i=1}^{m}(y^{(i)}-\theta^Tx^{(i)})^2 \\ &= \frac{1}{2}\sum_{i=1}^{m}(y^{(i)}-h_\theta(x^{(i)}))^2 \\ &= \frac{1}{2}\sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})^2 \\ &=\frac{1}{2}(X\theta-y)^T(X\theta-y) \end{aligned} J(θ)=21i=1m(y(i)θTx(i))2=21i=1m(y(i)hθ(x(i)))2=21i=1m(hθ(x(i))y(i))2=21(Xθy)T(Xθy)
当前我们想要知道的是 J ( θ ) J(\theta) J(θ) θ \theta θ 等于多少时能够达到极小值点,因此我们可以对 J ( θ ) J(\theta) J(θ) 求偏导 ∂ J ( θ ) ∂ θ \frac{\partial J(\theta)}{\partial \theta} θJ(θ),使 ∂ J ( θ ) ∂ θ = 0 \frac{\partial J(\theta)}{\partial \theta}=0 θJ(θ)=0
求偏导:
▽ θ J ( θ ) = ▽ θ [ 1 2 ( X θ − y ) T ( X θ − y ) ] = ▽ θ [ 1 2 ( X T θ T − y T ) ( X θ − y ) ] = ▽ θ [ 1 2 ( θ T X T X θ − θ T X T y − y T X θ + y T y ) ] = 1 2 ( 2 X T X θ − X T y − ( y T X ) T ) = X T X θ − X T y \begin{aligned} \triangledown _\theta J(\theta) &=\triangledown _\theta [\frac{1}{2}(X\theta -y)^T(X\theta -y)] \\ &=\triangledown _\theta [\frac{1}{2}(X^T\theta^T -y^T)(X\theta -y)] \\ &=\triangledown _\theta [\frac{1}{2}(\theta^TX^TX\theta-\theta^TX^Ty -y^TX\theta+y^Ty)] \\ &=\frac{1}{2}(2X^TX\theta-X^Ty-(y^TX)^T) \\ &=X^TX\theta-X^Ty \end{aligned} θJ(θ)=θ[21(Xθy)T(Xθy)]=θ[21(XTθTyT)(Xθy)]=θ[21(θTXTXθθTXTyyTXθ+yTy)]=21(2XTXθXTy(yTX)T)=XTXθXTy
令偏导结果为0:
X T X θ − X T y = 0 X T X θ = X T y θ = ( X T X ) − 1 X T y \begin{aligned} X^TX\theta-X^Ty &= 0 \\ X^TX\theta &=X^Ty \\ \theta &= (X^TX)^{-1}X^Ty \end{aligned} XTXθXTyXTXθθ=0=XTy=(XTX)1XTy
求得 θ \theta θ 即是我们的最终结果

但是在这里我们从数据的整理到最后推导出结果 θ \theta θ,仅仅是一步步推下来的,并不是一个机器学习的过程,在机器学习中,是需要渐进一个渐进的过程;另一个问题是最后的 θ = ( X T X ) − 1 X T y \theta = (X^TX)^{-1}X^Ty θ=(XTX)1XTy 中, ( X T X ) − 1 (X^TX)^{-1} (XTX)1矩阵不一定是可逆的,一旦矩阵是不可逆的,我们的 θ \theta θ 就无法求解了。其实,在所有的机器学习问题当中,除了线性回归中可以这样直接求解,其他问题是无法直接解出最终的真实答案,我们可以将能够直接求解的线性回归问题当成一种巧合来看待,而不是必要的求解方法。

你可能感兴趣的:(python,机器学习)