Alex_McAvoy

想要成为渔夫的猎手

最小二乘法

Reference

【引入】

假设使用五把尺子,分别测量一个线段的长度,测量的结果如下:

尺子颜色 长度
$10.2$
$10.3$
$9.8$
$9.9$
绿 $9.8$

使用不同的尺子测量,由于材质、精度等因素,会有误差出现,这种情况下,日常一般简单的取平均值作为线段的长度,即:

下面,换一种思路来思考这个问题

首先,将测量得到的值绘制在笛卡尔坐标系中,分别记作 $y_i$,同时将要猜测的线段长度的真实值用平行于横轴的虚线来表示,记作 $y$

将每个点 $y_i$ 向猜测值 $y$ 作垂线,每个垂线的长度就是 $|y-y_i|$,可以理解为测量值与真实值的误差

由于误差 $|y-y_i|$ 是长度,需要取绝对值,为后续计算方便,直接使用平方来代替误差,即:

那么,总的误差的平方即为残差平方和(Residual Sum of Squares,RSS)

关于 RSS 的详细介绍,见:回归问题的评价指标(二)

另一方面,由于猜测值 $y$ 是猜测的,其是不断变换的,那么,$RSS$ 也就不断在变换

勒让德基于误差围绕真值上下波动,提出了最小二乘法(Least Sqaure Method),即让 $RSS$ 最小的 $y$ 就是真实值 $y^*$

【概述】

最小二乘法(Least Sqaure Method)是回归分析中的标准方法,该方法用于近似超定系统(Overdetermined System)答案,即一组包含未知数的方程组中,如果方程的数量大于未知数的数量,则系统就是一个超定系统,超定系统是无解的,只能求近似解,是一种解析解法

如下图,二维屏幕中有许多点,假设想用一条直线来拟合数据,即期望找到一条直线能最好地穿过这些数据点

在图中,一个点即可构造一个方程,而显然有直线的斜率和截距两个未知数,因此这就是一个超定系统,是无法找到一条完美的直线,使得点均在直线上,因此,我们只能期望找到一条最好的适配直线(Best Fitting Line)来拟合这些数据

在机器学习中,目前应用的最广泛的普通最小二乘法(Ordinary Least Squares,OLS),常通过 OLS 来得到一个使目标函数最小化时的拟合函数的模型,一般形式为:

其中,观测值就是给定的多组样本,理论值就是假设的拟合函数,目标函数即损失函数

任务就是得到使目标函数最小化时的拟合函数

【普通最小二乘法】

假设形式

对于给定的容量为 $n$ 的样本集 $D=\{(\mathbf{x_1},y_1),(\mathbf{x_2},y_2),…,(\mathbf{x_n},y_n)\}$,第 $i$ 组样本中的输入 $\mathbf{x_i}$ 具有 $m$ 个特征值,即:$\mathbf{x_i}=(x_i^{(1)},x_i^{(2)},…,x_i^{(m)})^T\in \mathbb{R}^m$,输出为 $y_i$

用假设函数 $f(\mathbf{x_i};\boldsymbol{\theta})$ 来表示对第 $i$ 组数据的预测结果:

其中,特征参数 $\boldsymbol{\theta}$ 为 $(m+1)\times 1$ 的列向量,即:

现在,希望求出相应的 $\{\theta^{(i)}\}^{m+1}_{i=0}$ 来使得 $f(\mathbf{x_i};\boldsymbol{\theta})$ 能够尽量地拟合样本集 $D$

为了表述方便,对假设函数进行简化,定义一个额外的第 $0$ 个特征量,这个特征量对所有样本的取值全部为 $1$,这使得特征量从过去的 $m$ 个变为 $m+1$ 个,即设:$x_i^{(0)}=1$

那么假设函数就可以写为:

将数据集 $D$ 写为 $(m+1)\times n$ 的矩阵,即:

同时,将样本中的 $y_i$ 也写为矩阵形式,即输出变量 $Y$ 为 $n\times 1$ 的列向量:

选用残差平方和 RSS 作为损失函数,则有:

最优化过程

要令目标函数最小,显然要令 $\frac{\partial}{\partial\boldsymbol{\theta}}J(\boldsymbol{\theta})=0$

对于 $\frac{\partial}{\partial\boldsymbol{\theta}}J(\boldsymbol{\theta})$,有:

关于详细证明,见:推导过程

之后,令 $\frac{\partial}{\partial\boldsymbol{\theta}}J(\boldsymbol{\theta})=0$,则有:

其中,$XX^T$ 为满秩矩阵,$(XX^T)^{-1}$ 为对应的逆矩阵

因此,只要根据样本给出的输入 $X$ 与输出 $Y$,若 $(XX^T)^{-1}$ 存在,即可计算出 $\boldsymbol{\theta}$ 的最优解:

推导过程

首先给出需要用到的矩阵求导公式:

对于 $n\times 1$ 的列向量 $\mathbf{x}$,与 $n\times 1$ 的列向量 $\mathbf{y}$,分母 $\mathbf{x}^T\mathbf{y}=\mathbf{y}^T\mathbf{x}$ 为标量,分子 $\mathbf{x}$ 为向量,求导为分母布局下的标量/向量的形式时,有:

对于 $n\times 1$ 的列向量 $\mathbf{x}$,与 $n\times n$ 的矩阵 $A$,分母 $\mathbf{x}^TA\mathbf{x}$ 为标量,分子 $\mathbf{x}$ 为向量,求导为分母布局下的标量/向量的形式时,有:

对于下列公式,进行推导:

式中,输入 $X$ 为 $(m+1)\times n$ 的矩阵,输出 $Y$ 为 $n\times 1$ 的列向量,特征参数 $\boldsymbol{\theta}$ 为 $(m+1)\times 1$ 的列向量

对于上式的第三项:

由于 $Y^TX^T\boldsymbol{\theta}$ 是一个标量,故有:

则:

因此,可得:

对于上式的第一项:

由于 $\boldsymbol{\theta}$ 为 $(m+1)\times 1$ 的列向量,$XX^T$ 为 $(m+1)\times (m+1)$ 的矩阵,故 $\theta^TXX^T\boldsymbol{\theta}$ 为标量,求导为分母布局下的标量/向量的形式,故有:

对于第二项:

$\boldsymbol{\theta}$ 为 $(m+1)\times 1$ 的列向量,$X^TY$ 为 $(m+1)\times 1$ 的矩阵,故 $\boldsymbol{\theta}^TXY$ 为标量,求导为分母布局下的标量/向量的形式,故有:

对于第三项:

显然有:

综上,可得:

点击返回

【局限性与适用场景】

最小二乘法与梯度下降法、拟牛顿法这样的迭代法相比,似乎方便很多,但其仍有局限性

首先,最小二乘法需要计算 $XX^T$ 的逆矩阵 $(XX^T)^{-1}$,有可能这个逆矩阵不存在,这样就无法使用最小二乘法了,此时以梯度下降法为代表的迭代法仍可以使用。当然,可以通过对样本数据进行整理,去掉冗余特征,让 $XX^T$ 的行列式 $|XX^T|\neq 0$,然后继续采用最小二乘法

其次,当样本特征 $m$ 非常大时,$XX^T$ 是一个 $(m+1)\times(m+1)$ 的特征矩阵,对其求逆是一个十分耗时的工作,甚至不可行,此时以梯度下降法为代表的迭代法仍可以使用。一般来说,如果没有分布式大数据计算资源,超过 $10000$ 个特征就不建议使用最小二乘法了,如果一定要采用,可以使用 PCA 等降维的方法,降低特征维度后再使用最小二乘法

最后,如果拟合函数不是线性的,那么此时也无法使用最小二乘法,此时以梯度下降法为代表的迭代法仍可以使用。如果一定要采用最小二乘法,一般是利用线性微分方程来表示这个非线性的拟合函数,然后拟合线性微分方程的系数,再计算出对应的非线性函数的参数

下面给出梯度下降法与最小二乘法的对比:

梯度下降法 最小二乘法
学习率 需要选择 不需要选择
计算方式 多次迭代 解析解法,一次运算得出
算法复杂度 $O(km^2)$ $O(m^3)$
适用情形 无论当特征数量 $m$ 多大均可 需计算矩阵的逆,特征数量 $m$ 较大时运算代价大
一般 $n<10000$ 时选用
适用算法 适用非线性、线性模型 只能用于线性模型
感谢您对我的支持,让我继续努力分享有用的技术与知识点!