在本文中,将根据这个银行贷款的数据例子,进行回归问题的公式推导
工资 | 年龄 | 额度 |
---|---|---|
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=0∑nθ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=1∏mp(y(i)∣x(i);θ)=i=1∏m2πσ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=1∏m2πσ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=1∏m2πσ1exp(−2σ2(y(i)−θTx(i))2)=i=1∑mlog2πσ1exp(−2σ2(y(i)−θTx(i))2)=i=1∑mlog2πσ1+i=1∑mlogexp(−2σ2(y(i)−θTx(i))2=mlog2πσ1−σ21⋅21i=1∑m(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 σ21⋅21∑i=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 σ21⋅21∑i=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=1∑m(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=1∑m(y(i)−θTx(i))2=21i=1∑m(y(i)−hθ(x(i)))2=21i=1∑m(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θT−yT)(Xθ−y)]=▽θ[21(θTXTXθ−θTXTy−yTXθ+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 θ 就无法求解了。其实,在所有的机器学习问题当中,除了线性回归中可以这样直接求解,其他问题是无法直接解出最终的真实答案,我们可以将能够直接求解的线性回归问题当成一种巧合来看待,而不是必要的求解方法。