机器学习之线性回归原理分析

问题背景

假设银行根据你的工资水平和年龄来确定给你贷款的额度。目标:在已知工资和年龄的情况下,预测银行会贷款给你多少钱。并且已知如下数据。

工资年龄额度
40002520000
80003070000
50002835000
75003350000
120004085000

问题分析

本问题的额度只受工资水平和年龄的影响,这里存在两个自变量工资 x 1 x_1 x1 和年龄 x 2 x_2 x2 ,一个因变量额度 y ( x ) y(x) y(x) 。我们容易想到最简单的数学模型,用一个平面 y ( x ) = θ 0 + θ 1 x 1 + θ 2 x 2 y(x)=\theta_0 + \theta_1x_1 + \theta_2x_2 y(x)=θ0+θ1x1+θ2x2 来拟合这些数据点,算出参数 θ i \theta_i θi ,这样我们就能够在给定条件 x = ( x 1 , x 2 ) x=(x_1,x_2) x=(x1,x2) 下算出额度 y(x) 了。

模型假设

上述模型等价于 y ( x ) = ∑ i = 0 2 θ i x i y(x) = \sum_{i=0}^2\theta_ix_i y(x)=i=02θixi ,其中 x 0 = 1 , i = 0 , 1 , 2 x_0=1,i=0,1,2 x0=1,i=0,1,2 。这里只考虑了两个自变量,我们考虑可通用的情况,即考虑 n 个自变量的情况,即考虑 y ( x ) = ∑ i = 0 n θ i x i = θ T x y(x) = \sum_{i=0}^n\theta_ix_i=\theta^Tx y(x)=i=0nθixi=θTx ,其中 x 0 = 1 , i = 0 , 1 , 2 , ⋯   , n , θ x_0=1,i=0,1,2,\cdots,n,\theta x0=1,i=0,1,2,,n,θ 未知 。故特征维数为 n n n ,令 m m m 为样本个数。注意: θ \theta θ x x x 都是 n + 1 n+1 n+1 维列向量, y y y m m m 维列向量。

由于真实值 y ( j ) y^{(j)} y(j) ( 其中 j = 1 , 2 , ⋯   , m j=1,2,\cdots,m j=1,2,,m ) 和预测值 θ T x ( j ) \theta^Tx^{(j)} θTx(j) 之间存在误差,为了增加模型的准确性,我们给每个样本增加一个误差 ϵ ( j ) \epsilon^{(j)} ϵ(j) ,即 y ( j ) = θ T x ( j ) + ϵ ( j ) y^{(j)}=\theta^Tx^{(j)}+\epsilon^{(j)} y(j)=θTx(j)+ϵ(j) 。并且每个样本的误差 ϵ ( j ) \epsilon^{(j)} ϵ(j) 是独立同分布的,并服从均值为 0 0 0 ,方差为 σ 2 \sigma^2 σ2 的正态分布。

模型建立

由于误差服从高斯分布,故 p ( ϵ ( j ) ) = 1 2 π σ e x p ( − ( ϵ ( j ) ) 2 2 σ 2 ) p(\epsilon^{(j)})=\frac{1}{\sqrt{2\pi}\sigma}exp(-\frac{(\epsilon^{(j)})^2}{2\sigma^2}) p(ϵ(j))=2π σ1exp(2σ2(ϵ(j))2),又 y ( j ) = θ T x ( j ) + ϵ ( j ) y^{(j)}=\theta^Tx^{(j)}+\epsilon^{(j)} y(j)=θTx(j)+ϵ(j),故 p ( y ( j ) ∣ x ( j ) ; θ ) = 1 2 π σ e x p ( − ( y ( j ) − θ T x ( j ) ) 2 2 σ 2 ) p(y^{(j)}|x^{(j)};\theta)=\frac{1}{\sqrt{2\pi}\sigma}exp(-\frac{(y^{(j)}-\theta^Tx^{(j)})^2}{2\sigma^2}) p(y(j)x(j);θ)=2π σ1exp(2σ2(y(j)θTx(j))2) ,表示第 j j j 个样本 x ( j ) x^{(j)} x(j)在参数 θ \theta θ 下为真实值的概率。

而我们的目标是要求所有样本在参数 θ \theta θ 下为真实值的概率最大,等价于求似然函数: L ( θ ) = ∏ i = 1 m p ( y ( j ) ∣ x ( j ) ; θ ) = ∏ i = 1 m 1 2 π σ e x p ( − ( y ( j ) − θ T x ( j ) ) 2 2 σ 2 ) L(\theta)=\prod_{i=1}^mp(y^{(j)}|x^{(j)};\theta)=\prod_{i=1}^m\frac{1}{\sqrt{2\pi}\sigma}exp(-\frac{(y^{(j)}-\theta^Tx^{(j)})^2}{2\sigma^2}) L(θ)=i=1mp(y(j)x(j);θ)=i=1m2π σ1exp(2σ2(y(j)θTx(j))2) 的最大值。

模型求解

L ( θ ) L(\theta) L(θ) 取对数,则
l n ( L ( θ ) ) = l n ( ∏ i = 1 m 1 2 π σ e x p ( − ( y ( j ) − θ T x ( j ) ) 2 2 σ 2 ) ) . ln(L(\theta))=ln(\prod_{i=1}^m\frac{1}{\sqrt{2\pi}\sigma}exp(-\frac{(y^{(j)}-\theta^Tx^{(j)})^2}{2\sigma^2})). ln(L(θ))=ln(i=1m2π σ1exp(2σ2(y(j)θTx(j))2)).
等式右边拆开得:
l n ( L ( θ ) ) = m l n ( 1 2 π σ ) − 1 σ 2 1 2 ∑ i = 1 m ( y ( j ) − θ T x ( j ) ) 2 . ln(L(\theta))=mln(\frac{1}{\sqrt{2\pi}\sigma}) - \frac{1}{\sigma^2}\frac{1}{2}\sum_{i=1}^m(y^{(j)}-\theta^Tx^{(j)})^2. ln(L(θ))=mln(2π σ1)σ2121i=1m(y(j)θTx(j))2.

由于等式右边 m l n ( 1 2 π σ ) mln(\frac{1}{\sqrt{2\pi}\sigma}) mln(2π σ1)为常数,要使得似然函数 L ( θ ) L(\theta) L(θ) 最大,故问题转化为极小化 J ( θ ) = 1 2 ∑ i = 1 m ( y ( j ) − θ T x ( j ) ) 2 J(\theta)=\frac{1}{2}\sum_{i=1}^m(y^{(j)}-\theta^Tx^{(j)})^2 J(θ)=21i=1m(y(j)θTx(j))2 ,而 J ( θ ) J(\theta) J(θ) 就是我们熟悉的最小二乘法。

下面是求解过程:
m i n : J ( θ ) = 1 2 ∑ i = 1 m ( y ( j ) − θ T x ( j ) ) 2 . min:J(\theta)=\frac{1}{2}\sum_{i=1}^m(y^{(j)}-\theta^Tx^{(j)})^2. min:J(θ)=21i=1m(y(j)θTx(j))2.

X = ( x 1 , x 2 , x 3 , ⋯   , x m ) T X=(x^1,x^2,x^3,\cdots,x^m)^T X=(x1,x2,x3,,xm)T,其中 x j = ( 1 , x 1 j , x 2 j , x 3 j , ⋯   , x n j ) T , ( j = 1 , 2 , 3 , ⋯   , m ) x^j=(1,x_1^j,x_2^j,x_3^j,\cdots,x_n^j)^T,(j=1,2,3,\cdots,m) xj=(1,x1j,x2j,x3j,,xnj)T,(j=1,2,3,,m) ,则 X X X m m m n + 1 n+1 n+1 列矩阵。

J ( θ ) J(\theta) J(θ) θ \theta θ 求偏导:
Δ θ J ( θ ) \Delta_\theta J(\theta) ΔθJ(θ)
= Δ θ ( 1 2 ∑ i = 1 m ( y ( j ) − θ T x ( j ) ) 2 ) =\Delta_\theta(\frac{1}{2}\sum_{i=1}^m(y^{(j)}-\theta^Tx^{(j)})^2) =Δθ(21i=1m(y(j)θTx(j))2)
= Δ θ ( 1 2 ( X θ − y ) T ( X θ − y ) ) =\Delta_\theta(\frac{1}{2}(X\theta-y)^T(X\theta-y)) =Δθ(21(Xθy)T(Xθy))
= Δ θ ( 1 2 ( θ T X T − y T ) ( X θ − y ) ) =\Delta_\theta(\frac{1}{2}(\theta^TX^T-y^T)(X\theta-y)) =Δθ(21(θTXTyT)(Xθy))
= Δ θ ( 1 2 ( θ T X T X θ − θ T X T y − y T X θ + y T y ) ) =\Delta_\theta(\frac{1}{2}(\theta^TX^TX\theta-\theta^TX^Ty-y^TX\theta+y^Ty)) =Δθ(21(θTXTXθθTXTyyTXθ+yTy))
= 1 2 ( 2 X T X θ − X T y − ( y T X ) T ) =\frac{1}{2}(2X^TX\theta-X^Ty-(y^TX)^T) =21(2XTXθXTy(yTX)T)
= X T X θ − X T y . =X^TX\theta-X^Ty. =XTXθXTy.
令偏导等于 0 0 0 ,则
θ = ( X T X ) − 1 X T y . \theta=(X^TX)^{-1}X^Ty. θ=(XTX)1XTy.

模型应用

根据问题背景可知, n = 2 , m = 5 , y = ( 20000 , 70000 , 35000 , 50000 , 85000 ) T , n=2,m=5,y=(20000,70000,35000,50000,85000)^T, n=2,m=5,y=(20000,70000,35000,50000,85000)T,
X = [ 1 4000 25 1 8000 30 1 5000 28 1 7500 33 1 12000 40 ] X = \left[ \begin{matrix} 1 & 4000 & 25 \\ 1 & 8000 & 30 \\ 1 & 5000 & 28 \\ 1 & 7500 & 33 \\ 1 & 12000 & 40 \\ \end{matrix} \right] X=111114000800050007500120002530283340

MATLAB求解代码:

clc,clear;
X = [1 , 4000 , 25;
1 , 8000 , 30;
1 , 5000 , 28;
1 , 7500 , 33;
1 , 12000 , 40];
y = [20000;70000;35000;50000;85000];
theta = inv(X'*X)*X'*y

根据上述模型结论可解得 θ = ( 62005 , 15 , − 3760 ) T . \theta=(62005,15,-3760)^T. θ=(62005,15,3760)T.

故可得该问题线性回归模型为: y ( x ) = 62005 + 15 x 1 − 3760 x 2 y(x)=62005 + 15x_1 -3760x_2 y(x)=62005+15x13760x2

工资年龄额度额度预测值
4000252000028005
8000307000069205
5000283500031725
7500335000050425
12000408500091605

模型评估

从表中可以看到,有些值预测的误差还是比较小的,像额度70000时,预测为69205。该模型只是用线性方法取回归,而大多数模型是非线性的。所以我们为了增加模型的准确性,就需要去研究非线性模型。

模型还存在一个问题,模型的结论为: θ = ( X T X ) − 1 X T y \theta=(X^TX)^{-1}X^Ty θ=(XTX)1XTy ,需要求 X T X X^TX XTX 的逆 ( X T X ) − 1 (X^TX)^{-1} (XTX)1 ,而实际问题中大多数 X T X X^TX XTX 是不可逆的,这就导致可以解出多个 θ \theta θ

模型的目标是 m i n : J ( θ ) = 1 2 ∑ i = 1 m ( y ( j ) − θ T x ( j ) ) 2 min:J(\theta)=\frac{1}{2}\sum_{i=1}^m(y^{(j)}-\theta^Tx^{(j)})^2 min:J(θ)=21i=1m(y(j)θTx(j))2

由于 m m m 是常数,故目标等价于 m i n : J ( θ ) = 1 2 m ∑ i = 1 m ( θ T x ( j ) − y ( j ) ) 2 min:J(\theta)=\frac{1}{2m}\sum_{i=1}^m(\theta^Tx^{(j)}-y^{(j)})^2 min:J(θ)=2m1i=1m(θTx(j)y(j))2 。这时我们还可以利用 梯度下降法 θ \theta θ 进行迭代求解,就不需要求解逆矩阵了。考虑其中的一种 批量梯度下降法

J ( θ ) J(\theta) J(θ) θ i \theta_i θi 求偏导:
δ J ( θ ) δ θ i = − 1 m ∑ j = 1 m ( y ( j ) − θ T x ( j ) ) x i j , \frac{\delta J(\theta)}{\delta \theta_i}=-\frac{1}{m}\sum_{j=1}^m(y^{(j)}-\theta^Tx^{(j)})x_i^j, δθiδJ(θ)=m1j=1m(y(j)θTx(j))xij,
θ \theta θ 的更新公式( α \alpha α为收敛速度,一般取值为0到1之间):
θ i ′ = θ i − α ∗ δ J ( θ ) δ θ i . \theta_{i}^{'}=\theta_i-\alpha*\frac{\delta J(\theta)}{\delta \theta_i}. θi=θiαδθiδJ(θ).

(批量梯度下降法详细代码步骤见下一篇文章,发出后第一时间更新。谢谢支持,希望对您有用,有问题可评论回复!)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值