机器学习和线性模型 最小二乘法在机器学习线性模型中通过最小化残差平方和拟合数据,支持最小二乘线
( y = β 0 + β 1 x ) (y = \beta_0 + \beta_1 x) ( y = β 0 + β 1 x ) 、多项式回归
( y = β 0 + β 1 x + β 2 x 2 ) (y = \beta_0 + \beta_1 x + \beta_2 x^2) ( y = β 0 + β 1 x + β 2 x 2 ) 和多元回归(如趋势曲面
y = β 0 + β 1 u + β 2 v + ⋯ ) ~y = \beta_0 + \beta_1 u + \beta_2v + \cdots ) y = β 0 + β 1 u + β 2 v + ⋯ ) 。 通过确定参数
β ~\beta~ β ,进行回归预测。
1. 机器学习的基本概念 在机器学习中,
线性模型 ( linear models ) ~(\textbf{linear models})~ ( linear models ) 是一种用于根据输入变量(自变量)预测输出变量(因变量)的基本方法。它通过建立输入与输出之间的线性关系来进行预测,一种常见的方式是通过最小二乘法
拟合 ( fitting ) ~(\textbf{fitting})~ ( fitting ) 直线或某些可线性化的曲线(如多项式曲线)。例如,下图就是根据国家统计局发布的 2013-2024 年中国居民人均收入和支出数据 ,并使用最小二乘法拟合出来的两条直线。
机器学习 ( machine learning ) ~(\textbf{machine learning})~ ( machine learning ) 的本质就是通过
训练数据 学习并
构建模型 ,进而根据模型
进行预测 。不过,机器学习并不限于线性模型。当数据趋势无法用直线拟合时,可能需要使用更复杂的曲线,如指数回归或对数回归;此外,机器学习还包含能够处理复杂非线性关系的模型,如决策树、支持向量机和神经网络。尽管机器学习包含许多复杂模型,线性模型因其计算简单、易于解释,在许多任务中仍然广泛使用。
2. 最小二乘法与回归直线 在使用最小二乘法建模时,我们需要先通过观察已有数据来选择适合的模型。在前面的示例中,当我们把年份对应的收入或支出数据绘制到图表上后,观察到这些数据点接近一条直线。 接下来的任务就是找到一条最接近真实数据点 的直线 y = β 0 + β 1 x ~y=\beta_0 + \beta_1 x~ y = β 0 + β 1 x 作为线性模型,这条直线也被称为 y ~\mathbf{y}~ y 对 x ~\mathbf{x}~ x 的回归直线 ( line of regression of (\textbf{line of regression of } ( line of regression of y on x ) \textbf{y on x}) y on x ) ,直线方程的系数 β 1 , β 2 ~\boldsymbol{\beta_1},~\boldsymbol{\beta_2}~ β 1 , β 2 被称为回归系数 ( regression coefficients ) (\textbf{regression coefficients}) ( regression coefficients ) 。
在回归分析中,实际值
y i ~y_i~ y i 和预测值
y i ^ ~\hat{y_i}~ y i ^ 之间的差值称为
残差 ( residual , ϵ i = y i − y i ^ ) (\textbf{residual},~\epsilon_i = y_i - \hat{y_i}) ( residual , ϵ i = y i − y i ^ ) ,描述回归直线最接近实际值的方法通常是使得
残差平方之和最小 。 由于实际数据并不完全在一条直线上,那么用实际值构建出的方程组一定是不相容的:
{ β 0 + β 1 x 1 = y 1 β 0 + β 1 x 2 = y 2 ⋮ ⋮ β 0 + β 1 x n = y n \begin{cases} \beta_0 + \beta_{1}x_1 = y_1 \\[0.5ex] \beta_0 + \beta_{1}x_2 = y_2 \\[0.5ex] \quad ~ ~ \vdots \quad \quad ~ ~ \, ~ \vdots \\[0.5ex] \beta_0 + \beta_{1}x_n = y_n \end{cases} ⎩ ⎨ ⎧ β 0 + β 1 x 1 = y 1 β 0 + β 1 x 2 = y 2 ⋮ ⋮ β 0 + β 1 x n = y n 方程组可以写成下面的矩阵形式:
X β = y , 其中 X = [ 1 x 1 1 x 2 ⋮ ⋮ 1 x n ] , β = [ β 0 β 1 ] , y = [ y 1 y 2 ⋮ y n ] (1) \mathbf{X} \boldsymbol{\beta} = \mathbf{y}, \quad \text{其中} \quad \mathbf{X} = \begin{bmatrix} 1 & x_1 \\ 1 & x_2 \\ \vdots & \vdots \\ 1 & x_n \end{bmatrix}, \quad \boldsymbol{\beta} = \begin{bmatrix} \beta_0 \\ \beta_1 \end{bmatrix}, \quad \mathbf{y} = \begin{bmatrix} y_1 \\ y_2 \\ \vdots \\ y_n \end{bmatrix} \quad \tag{1} X β = y , 其中 X = 1 1 ⋮ 1 x 1 x 2 ⋮ x n , β = [ β 0 β 1 ] , y = y 1 y 2 ⋮ y n ( 1 ) ( 1 ) (1)~ ( 1 ) 式是工程上的常见写法,
X ~\mathbf{X}~ X 被称作
设计矩阵 ( design matrix ) (\textbf{design matrix}) ( design matrix ) ,
β \boldsymbol{\beta} β 为
参数向量 ( parameter vector ) (\textbf{parameter vector}) ( parameter vector ) ,
y ~\mathbf{y}~ y 为
观测向量 ( observation vector ) (\textbf{observation vector}) ( observation vector ) 。我们要找到参数向量
β ~\boldsymbol{\beta}~ β 使得
残差向量 ( residual vector , ϵ = y − X β ) ~(\textbf{residual vector},~\boldsymbol{\epsilon} = \mathbf{y} - \mathbf{X}\boldsymbol{\beta})~ ( residual vector , ϵ = y − X β ) 的残差平方和最小化,这就是一个典型的最小二乘问题。 最小二乘解满足下面的法方程:
X T X β = X T y \mathbf{X}^T\mathbf{X}\boldsymbol{\beta} = \mathbf{X}^T\mathbf{y} X T X β = X T y 3. 最小二乘法求解拟合直线 为了更直观地理解最小二乘法的应用,我们通过具体示例来演示如何找到最佳拟合直线,使其最小化误差平方和。给定数据( 2 , 1 ) , (2,1), ( 2 , 1 ) , ( 5 , 2 ) , (5,2), ( 5 , 2 ) , ( 7 , 3 ) , (7,3), ( 7 , 3 ) , ( 8 , 3 ) (8,3) ( 8 , 3 ) , 下面使用最小二乘法计算最佳拟合直线的方程y = β 0 + β 1 x y = \beta_0 + \beta_1 x y = β 0 + β 1 x 。
构造设计矩阵和观测向量 :
设计矩阵
X ~\mathbf{X}~ X 的第一列为
1 ~1~ 1 (对应截距
β ~\beta~ β ),第二列为自变量
x ~x~ x 。观测向量
y ~\mathbf{y}~ y 存放因变量。
X = [ 1 2 1 5 1 7 1 8 ] , y = [ 1 2 3 3 ] \mathbf{X} = \begin{bmatrix} 1 & 2 \\ 1 & 5 \\ 1 & 7 \\ 1 & 8 \end{bmatrix}, \quad \mathbf{y} = \begin{bmatrix} 1 \\ 2 \\ 3 \\ 3 \end{bmatrix} X = 1 1 1 1 2 5 7 8 , y = 1 2 3 3 求解法方程 X T X β = X T y \mathbf{X}^T\mathbf{X}\boldsymbol{\beta} = \mathbf{X}^T\mathbf{y} X T X β = X T y :
计算
X T X ~\mathbf{X}^T\mathbf{X}~ X T X 和
X T y ~\mathbf{X}^T\mathbf{y}~ X T y :
X T X = [ 1 1 1 1 2 5 7 8 ] [ 1 2 1 5 1 7 1 8 ] = [ 4 22 22 142 ] X T y = [ 1 1 1 1 2 5 7 8 ] [ 1 2 3 3 ] = [ 9 57 ] \begin{align*}\mathbf{X}^T \mathbf{X} &= \begin{bmatrix} 1 & 1 & 1 & 1 \\ 2 & 5 & 7 & 8 \end{bmatrix} \begin{bmatrix} 1 & 2 \\ 1 & 5 \\ 1 & 7 \\ 1 & 8 \end{bmatrix} = \begin{bmatrix} 4 & 22 \\ 22 & 142 \end{bmatrix} \\[6ex] \mathbf{X}^T \mathbf{y} &= \begin{bmatrix} 1 & 1 & 1 & 1 \\ 2 & 5 & 7 & 8 \end{bmatrix} \begin{bmatrix} 1 \\ 2 \\ 3 \\ 3 \end{bmatrix} = \begin{bmatrix} 9 \\ 57 \end{bmatrix} \end{align*} X T X X T y = [ 1 2 1 5 1 7 1 8 ] 1 1 1 1 2 5 7 8 = [ 4 22 22 142 ] = [ 1 2 1 5 1 7 1 8 ] 1 2 3 3 = [ 9 57 ] 构造方程组:
[ 4 22 22 142 ] [ β 0 β 1 ] = [ 9 57 ] \begin{bmatrix} 4 & 22 \\ 22 & 142 \end{bmatrix} \begin{bmatrix} \beta_0 \\ \beta_1 \end{bmatrix} = \begin{bmatrix} 9 \\ 57 \end{bmatrix} [ 4 22 22 142 ] [ β 0 β 1 ] = [ 9 57 ] 求解参数向量 β ~\boldsymbol{\beta}~ β :
计算
X T X ~\mathbf{X}^T\mathbf{X}~ X T X 的逆矩阵并求解:
[ β 0 β 1 ] = [ 4 22 22 142 ] − 1 [ 9 57 ] = [ 2 / 7 5 / 14 ] \begin{bmatrix} \beta_0 \\ \beta_1 \end{bmatrix} = \begin{bmatrix} 4 & 22 \\ 22 & 142 \end{bmatrix}^{-1} \begin{bmatrix} 9 \\ 57 \end{bmatrix} = \begin{bmatrix}2/7 \\ 5/14\end{bmatrix} [ β 0 β 1 ] = [ 4 22 22 142 ] − 1 [ 9 57 ] = [ 2/7 5/14 ] 最终的最小二乘回归方程 :
y = 2 7 + 5 14 x y = \frac{2}{7} + \frac{5}{14} x y = 7 2 + 14 5 x 在最小二乘法的计算中,我们通常会对设计矩阵
X ~\mathbf{X}~ X 做一些预处理,例如:对
X ~\mathbf{X}~ X 的列进行正交化处理,或者采用
Q R ~\mathbf{Q}\mathbf{R}~ QR 分解先将
X ~\mathbf{X}~ X 分解为正交矩阵
Q ~\mathbf{Q}~ Q 和上三角矩阵
R ~\mathbf{R}~ R 。在做完预处理后,可以用
上节 讨论过的对应方法进行后面的计算。最终得到的回归直线方程为:
y = 2 7 + 5 14 x y = \frac{2}{7} + \frac{5}{14}x y = 7 2 + 14 5 x 将该直线绘制在坐标系中如下所示:
根据直线方程,我们可以预测当输入自变量量分别为 x 1 = 4 , x 2 = 6 ~x_1 = 4,~x_2=6~ x 1 = 4 , x 2 = 6 时,对应的因变量 y 1 = 12 / 7 , y 2 = 17 / 7 ~y_1 = 12/7,~y_2 = 17/7 y 1 = 12/7 , y 2 = 17/7 。
4. 一般线性模型 在许多应用中,数据点的趋势可能不是简单的直线关系,而是需要更一般的线性模型来描述。一般线性模型的标准形式为:
y = X β + ϵ \mathbf{y} = \mathbf{X} \boldsymbol{\beta} + \boldsymbol{\epsilon} y = X β + ϵ 我们前面介绍的是最简单的线性模型,它只有一个自变量,模型形式为:
y = β 0 + β 1 x + ϵ y = \beta_0 + \beta_1x + \epsilon y = β 0 + β 1 x + ϵ 一般的线性模型并不局限于处理一个自变量,它也可以处理多个自变量:
y = β 0 f 0 ( x ) + β 1 f 1 ( x ) + ⋯ + β p f p ( x ) (2) y = \beta_0 f_0(x) + \beta_1 f_1(x) + \cdots + \beta_p f_p(x)\tag{2} y = β 0 f 0 ( x ) + β 1 f 1 ( x ) + ⋯ + β p f p ( x ) ( 2 ) 尽管这个模型可能不是线性的(因为可能包含
x 2 , x 3 ~x^2,~x^3~ x 2 , x 3 等非线性项),但它在参数
β 0 , β 1 , ⋯ , β p ~\beta_0,\beta_1,\cdots,\beta_p~ β 0 , β 1 , ⋯ , β p 上仍然是线性的,因此仍可以使用最小二乘法进行求解。下面分别讨论一般线性模型的其它两种拓展情况:
多项式回归 ( polynomial regression ) ~(\textbf{polynomial regression})~ ( polynomial regression ) 和
多元线性回归 ( multiple linear regression ) ~(\textbf{multiple linear regression})~ ( multiple linear regression ) 。虽然它们的函数形式看起来是非线性的,但它们依然可以通过线性模型的形式来处理。
4.1 多项式回归 在农业研究中,作物的产量常常与多种因素密切相关,其中温度是一个非常重要的因素。不同的温度条件对作物的生长产生不同的影响。下图展示了某农作物的产量随温度变化的关系,显示了温度对产量的非线性 影响。这种关系通常用二次多项式 ( Quadratic Polynomial Regression ) (\textbf{Quadratic Polynomial Regression}) ( Quadratic Polynomial Regression ) 回归来建模,以捕捉温度与产量之间的非线性特征。
从数学角度来看,这个二次模型依然是线性模型,因为它在参数
β 0 , β 1 , β 2 ~\beta_0,\beta_1,\beta_2~ β 0 , β 1 , β 2 上是线性的。对所有
n ~n~ n 个数据点,可以写成如下方程组:
{ y 1 = β 0 + β 1 x 1 + β 2 x 1 2 + ϵ 1 y 2 = β 0 + β 1 x 2 + β 2 x 2 2 + ϵ 2 ⋮ y n = β 0 + β 1 x n + β 2 x n 2 + ϵ n \begin{cases} \begin{aligned} y_1 &= \beta_0 + \beta_1 x_1 + \beta_2 x_1^2 + \epsilon_1 \\[1ex] y_2 &= \beta_0 + \beta_1 x_2 + \beta_2 x_2^2 + \epsilon_2 \\[1ex] &\vdots \\[1ex] y_n &= \beta_0 + \beta_1 x_n + \beta_2 x_n^2 + \epsilon_n \end{aligned} \end{cases} ⎩ ⎨ ⎧ y 1 y 2 y n = β 0 + β 1 x 1 + β 2 x 1 2 + ϵ 1 = β 0 + β 1 x 2 + β 2 x 2 2 + ϵ 2 ⋮ = β 0 + β 1 x n + β 2 x n 2 + ϵ n 使用矩阵表示:
[ y 1 y 2 ⋮ y n ] = [ 1 x 1 x 1 2 1 x 2 x 2 2 ⋮ ⋮ ⋮ 1 x n x n 2 ] [ β 0 β 1 β 2 ] + [ ϵ 1 ϵ 2 ⋮ ϵ n ] \begin{bmatrix} y_1 \\ y_2 \\ \vdots \\ y_n \end{bmatrix} = \begin{bmatrix} 1 & x_1 & x_1^2 \\ 1 & x_2 & x_2^2 \\ \vdots & \vdots & \vdots \\ 1 & x_n & x_n^2 \end{bmatrix} \begin{bmatrix} \beta_0 \\ \beta_1 \\ \beta_2 \end{bmatrix} + \begin{bmatrix} \epsilon_1 \\ \epsilon_2 \\ \vdots \\ \epsilon_n \end{bmatrix} y 1 y 2 ⋮ y n = 1 1 ⋮ 1 x 1 x 2 ⋮ x n x 1 2 x 2 2 ⋮ x n 2 β 0 β 1 β 2 + ϵ 1 ϵ 2 ⋮ ϵ n 在上述温度与每亩作物产量关系图中,共包含
13 ~13~ 13 个观测数据点。为了求解
β = [ β 0 β 1 β 2 ] T ~\beta = \begin{bmatrix}\beta_0& \beta_1& \beta_2\end{bmatrix}^T~ β = [ β 0 β 1 β 2 ] T ,使用最小二乘法,通过法方程:
X T X β = X T y ~\mathbf{X}^T \mathbf{X} \mathbf{\beta} = \mathbf{X}^T \mathbf{y}~ X T X β = X T y 来计算(参考
最小二乘法求解 )。不过,手工计算非常繁琐且不太实际,我们借助数值计算软件或代码计算,得出以下结果:
y = − 4.78 x 2 + 201.89 x − 867.88 y = -4.78 x^2 + 201.89x -867.88 y = − 4.78 x 2 + 201.89 x − 867.88 与二次多项式回归类似,
三次多项式回归 ( Cubic Polynomial Regression ) (\textbf{Cubic Polynomial Regression}) ( Cubic Polynomial Regression ) 通过引入
x 3 ~x^3~ x 3 项来进一步提高模型的灵活性,其模型为:
y = β 0 + β 1 x + β 2 x 2 + β 3 x 3 + ϵ y = \beta_0 + \beta_1 x + \beta_2 x^2 + \beta_3 x^3 + \epsilon y = β 0 + β 1 x + β 2 x 2 + β 3 x 3 + ϵ 其矩阵形式为:
[ y 1 y 2 ⋮ y n ] = [ 1 x 1 x 1 2 x 1 3 1 x 2 x 2 2 x 2 3 ⋮ ⋮ ⋮ ⋮ 1 x n x n 2 x n 3 ] [ β 0 β 1 β 2 β 3 ] + [ ϵ 1 ϵ 2 ⋮ ϵ n ] \begin{bmatrix} y_1 \\ y_2 \\ \vdots \\ y_n \end{bmatrix} = \begin{bmatrix} 1 & x_1 & x_1^2 & x_1^3 \\ 1 & x_2 & x_2^2 & x_2^3 \\ \vdots & \vdots & \vdots & \vdots \\ 1 & x_n & x_n^2 & x_n^3 \end{bmatrix} \begin{bmatrix} \beta_0 \\ \beta_1 \\ \beta_2 \\ \beta_3 \end{bmatrix} + \begin{bmatrix} \epsilon_1 \\ \epsilon_2 \\ \vdots \\ \epsilon_n \end{bmatrix} y 1 y 2 ⋮ y n = 1 1 ⋮ 1 x 1 x 2 ⋮ x n x 1 2 x 2 2 ⋮ x n 2 x 1 3 x 2 3 ⋮ x n 3 β 0 β 1 β 2 β 3 + ϵ 1 ϵ 2 ⋮ ϵ n 三次多项式曲线形式如下:
4.2 多元回归 多元回归 ( Multiple Regression ) ~(\textbf{Multiple Regression})~ ( Multiple Regression ) 可以基于多个自变量的输入来预测因变量的值。在最简单的情况下,我们假设有两个自变量
u ~u~ u 和
v ~v~ v ,以及一个因变量
y ~y~ y ,它们之间的关系可以通过一个简单的线性方程来描述:
y = β 0 + β 1 u + β 2 v y = \beta_0 + \beta_1 u + \beta_2 v y = β 0 + β 1 u + β 2 v 这个方程的拟合结果是一个平面:
对于更复杂的多元线性模型,还会加入二次项和交互项,以更好地拟合数据中的非线性关系:
y = β 0 + β 1 u + β 2 v + β 3 u 2 + β 4 u v + β 5 v 2 y = \beta_0 + \beta_1 u + \beta_2 v + \beta_3 u^2 + \beta_4 uv + \beta_5 v^2 y = β 0 + β 1 u + β 2 v + β 3 u 2 + β 4 uv + β 5 v 2 这个方程的拟合结果是一个曲面:
即使在模型中有多项式项或交互项,若所有参数的未知数(即
β 0 , β 1 , ⋯ , β k \beta_0,\beta_1,\cdots,\beta_k β 0 , β 1 , ⋯ , β k )是线性的,模型仍然是线性的。例如上面的方程仍然可以通过线性回归来解决。 一般来说,线性模型的形式为:
y = β 0 f 0 ( u , v ) + β 1 f 1 ( u , v ) + ⋯ + β k f k ( u , v ) y = \beta_0 f_0(u,v) + \beta_1 f_1(u,v) + \cdots + \beta_k f_k(u,v) y = β 0 f 0 ( u , v ) + β 1 f 1 ( u , v ) + ⋯ + β k f k ( u , v ) 其中
f 0 , f 1 , ⋯ , f k ~f_0,f_1,\cdots,f_k~ f 0 , f 1 , ⋯ , f k 是已知的函数,
β 0 , β 1 , ⋯ , β k \beta_0,\beta_1,\cdots,\beta_k~ β 0 , β 1 , ⋯ , β k 是需要通过数据来估计的参数。其矩阵形式为:
[ y 1 y 2 ⋮ y n ] = [ 1 u 1 v 1 1 u 2 v 2 ⋮ ⋮ ⋮ 1 u n v n ] [ β 0 β 1 β 2 ] + [ ϵ 1 ϵ 2 ⋮ ϵ n ] \begin{bmatrix} y_1 \\ y_2 \\ \vdots \\ y_n \end{bmatrix} = \begin{bmatrix} 1 & u_1 & v_1 \\ 1 & u_2 & v_2 \\ \vdots & \vdots & \vdots \\ 1 & u_n & v_n \end{bmatrix} \begin{bmatrix} \beta_0 \\ \beta_1 \\ \beta_2 \end{bmatrix} + \begin{bmatrix} \epsilon_1 \\ \epsilon_2 \\ \vdots \\ \epsilon_n \end{bmatrix} y 1 y 2 ⋮ y n = 1 1 ⋮ 1 u 1 u 2 ⋮ u n v 1 v 2 ⋮ v n β 0 β 1 β 2 + ϵ 1 ϵ 2 ⋮ ϵ n 使用最小二乘法求解回归系数时,依然可以通过法方程
X T X β = X T y ~\mathbf{X}^T\mathbf{X}\boldsymbol{\beta} = \mathbf{X}^T\mathbf{y}~ X T X β = X T y 来获得最优解。