“线性回归模型”原理小结

0.引言

本人最近一直在学习Aurélien Géron所写的《Hands-On Machine Learning with Scikit-Learn & TensorFlow》一书,觉得这本书非常适合机器学习的入门,该书并没有很深地介绍算法的各种细节(繁多的数学公式,容易造成只见树木,不见森林的情况),而是通过浅显易懂的文字描述、少量数学公式以及大量的图示对各种算法的基本原理、适用条件、库函数调用、性能评价指标等方面进行了说明,从而使读者对不同的机器学习算法有一个宏观、直观且完整的了解和认识,并在掌握算法优缺点的基础上能够灵活使用已有的库函数来解决实际问题。通过学习该书,应该能够建立起机器学习的基本知识框架,从而为后续具体算法的深入学习和研究打下基础。

学习这本书最初源于MIT的Gilbert Strang大牛(18.06 “Linear Algebra”这门课的可爱老教授)为他的新课18.065 “Matrix Methods In Data Analysis, Signal Processing, And Machine Learning”所写的新书《Linear Algebra and Learning from Data》,该书的序言推荐了这本书。该书的作者曾领导Google YouTube视频分类团队,因此作者在机器学习领域有着深厚的理论基础和丰富的工程经验。该书内容逻辑紧密,表述清晰,并在GitHub上有配套程序,在此推荐给大家。

本人将书中线性回归模型的相关内容进行了小结、补充和扩展,现分享给大家,欢迎指正。

1.线性回归模型的表示

线性回归(Linear Regression)是一种最简单的预测模型且该模型具有非常好的数学性质,该模型可以表示为:

y ^ = θ 0 + θ 1 x 1 + θ 2 x 2 + ⋯ + θ n x n = θ 0 x 0 + θ 1 x 1 + θ 2 x 2 + ⋯ + θ n x n ( 1 ) \hat{y} =\theta_0 + \theta_1x_1+\theta_2x_2+\dots+\theta_nx_n \\ \qquad \qquad =\theta_0x_0 + \theta_1x_1+\theta_2x_2+\dots+\theta_nx_n \quad \red{(1)} y^=θ0+θ1x1+θ2x2++θnxn=θ0x0+θ1x1+θ2x2++θnxn(1)

其中, n n n表示样本特征(feature)的数量, x i ( i = 1 , 2 , … , n ) x_i (i=1,2,\dots,n) xi(i=1,2,,n)表示样本第 i i i个特征且 x 0 ≡ 1 x_0 \equiv 1 x01 θ i ( i = 0 , 1 , 2 , … , n ) \theta_i(i=0,1,2,\dots,n) θi(i=0,1,2,,n)表示线性回归模型的系数, y ^ \hat{y} y^表示预测值。

为了表达简洁,使用向量形式重新表示公式(1)得到

y ^ = h θ ( x ) = θ T x ( 2 ) \hat{y}=h_{\bm{\theta}}(\textbf{x})=\bm{\theta}^T\textbf{x} \quad \red{(2)} y^=hθ(x)=θTx(2)

其中, θ = [ θ 0 , θ 1 , θ 2 , … , θ n ] T \bm{\theta}=\left[\theta_0,\theta_1,\theta_2,\dots,\theta_n\right]^T θ=[θ0,θ1,θ2,,θn]T表示模型的参数向量(parameter vector), x = [ x 0 , x 1 , x 2 , … , x n ] T \textbf{x}=\left[x_0,x_1,x_2,\dots,x_n\right]^T x=[x0,x1,x2,,xn]T表示样本的特征向量(feature vector), h θ h_{\bm{\theta}} hθ表示假设函数(hypothesis function)或预测函数,且该函数使用模型的参数向量 θ \bm{\theta} θ作为参数。

2.线性回归模型的训练

对于预测模型,最常使用的性能评价指标是均方根误差(Root Mean Square Error, RMSE)。在实际中,为了方便计算,使用均方误差(Mean Square Error, MSE)而不是RMSE(带根号不方便计算)来训练模型。因为,使MSE达到最小值和使RMSE达到最小值所对应的的参数向量 θ \bm{\theta} θ是同一个,我们也将MSE定义为线性回归模型的代价函数(cost function)。因此,线性回归模型的训练就是要根据训练样本集(training set)确定模型的参数向量 θ \bm{\theta} θ从而使代价函数取最小值。线性回归模型的代价函数(即MSE)可以表示为

J ( θ ) = MSE ( θ ) = 1 m ∑ i = 1 m ( θ T x ( i ) − y ( i ) ) 2 ( 3 ) J\left( \bm{\theta} \right)=\text{MSE}\left( \bm{\theta} \right)=\frac{1}{m}\sum_{i=1}^{m}\left( \bm{\theta}^T\textbf{x}^{(i)} - y^{(i)} \right)^2 \quad \red{(3)} J(θ)=MSE(θ)=m1i=1m(θTx(i)y(i))2(3)

其中, m m m表示训练样本集中样本的个数, x ( i ) = [ x 0 ( i ) , x 1 ( i ) , x 2 ( i ) , … , x n ( i ) ] T \textbf{x}^{(i)}=\left[x_0^{(i)},x_1^{(i)},x_2^{(i)},\dots,x_n^{(i)}\right]^T x(i)=[x0(i),x1(i),x2(i),,xn(i)]T表示第 i i i个样本的特征向量, y ( i ) y^{(i)} y(i)表示第 i i i个样本的标签值(label)。在很多情况下,训练模型所使用的的代价函数和评价模型性能的指标函数是不同的,其原因在于性能评价指标函数在计算便利性、可导性上有欠缺,或者需要在训练中对参数加以额外的限制(即正则化(Regularization))。

如何求解模型的参数向量 θ \bm{\theta} θ使公式(3)的代价函数 J ( θ ) J\left( \bm{\theta} \right) J(θ)在给定的训练样本集上达到最小值?这里介绍两种基本方法:一种是基于闭式解(Close-Form Solution)或解析解(Analytical Solution)的方法,另一种是基于梯度下降(Gradient Descent, GD)的方法。

2.1 基于闭式解/解析解的方法

对于线性回归模型,通过最小化代价函数来求解模型的参数向量 θ \bm{\theta} θ这个数学问题是有闭式解或解析解的(其他模型不一定有这样好的数学性质),即可以通过数学公式求解。

将训练样本集中每个样本的特征向量和标签值都带入公式(1)所示的线性模型中,得到

y ( 1 ) = θ 0 x 0 ( 1 ) + θ 1 x 1 ( 1 ) + θ 2 x 2 ( 1 ) + ⋯ + θ n x n ( 1 ) y ( 2 ) = θ 0 x 0 ( 2 ) + θ 1 x 1 ( 2 ) + θ 2 x 2 ( 2 ) + ⋯ + θ n x n ( 2 ) ⋮ y ( m ) = θ 0 x 0 ( m ) + θ 1 x 1 ( m ) + θ 2 x 2 ( m ) + ⋯ + θ n x n ( m ) y^{(1)}=\theta_0x_0^{(1)} + \theta_1x_1^{(1)}+\theta_2x_2^{(1)}+\dots+\theta_nx_n^{(1)} \\ y^{(2)}=\theta_0x_0^{(2)} + \theta_1x_1^{(2)}+\theta_2x_2^{(2)}+\dots+\theta_nx_n^{(2)} \\ \vdots \\ y^{(m)}=\theta_0x_0^{(m)} + \theta_1x_1^{(m)}+\theta_2x_2^{(m)}+\dots+\theta_nx_n^{(m)} y(1)=θ0x0(1)+θ1x1(1)+θ2x2(1)++θnxn(1)y(2)=θ0x0(2)+θ1x1(2)+θ2x2(2)++θnxn(2)y(m)=θ0x0(m)+θ1x1(m)+θ2x2(m)++θnxn(m)

该方程组共有 m m m个方程,需要求解 n + 1 n+1 n+1个未知数,即 θ = [ θ 0 , θ 1 , θ 2 , … , θ n ] T \bm{\theta}=\left[\theta_0,\theta_1,\theta_2,\dots,\theta_n\right]^T θ=[θ0,θ1,θ2,,θn]T。一般情况下,训练样本集中样本的数量要远大于每个样本特征的数量,即 m ≫ n m \gg n mn。因此,该方程组中方程的个数远远多于未知数的个数,该方程组为超定(overdetermined)方程组。

将该超定方程组写成矩阵的形式:

X θ = y ( 4 ) \textbf{X}\bm{\theta}=\bm{y} \quad \red{(4)} Xθ=y(4)

其中, X \textbf{X} X表示以所有训练样本的特征向量为行向量所组成的矩阵,其形式为

X = [ x ( 1 ) T x ( 2 ) T ⋮ x ( m ) T ] = [ x 0 ( 1 ) x 1 ( 1 ) x 2 ( 1 ) … x n ( 1 ) x 0 ( 2 ) x 1 ( 2 ) x 2 ( 2 ) … x n ( 2 ) ⋮ ⋮ ⋮ … ⋮ x 0 ( m ) x 1 ( m ) x 2 ( m ) … x n ( m ) ] , \textbf{X}= \left[ \begin{matrix} {\textbf{x}^{(1)}}^T \\ {\textbf{x}^{(2)}}^T \\ \vdots\\ {\textbf{x}^{(m)}}^T \end{matrix} \right] =\left[ \begin{matrix} x_0^{(1)} & x_1^{(1)} & x_2^{(1)} & \dots & x_n^{(1)} \\ x_0^{(2)} & x_1^{(2)} & x_2^{(2)} & \dots & x_n^{(2)} \\ \vdots & \vdots & \vdots & \dots & \vdots \\ x_0^{(m)} & x_1^{(m)} & x_2^{(m)} & \dots & x_n^{(m)} \end{matrix} \right], X=x(1)Tx(2)Tx(m)T=x0(1)x0(2)x0(m)x1(1)x1(2)x1(m)x2(1)x2(2)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值