Skip to content

sklearn 的线性回归没有超参数

Sklearn Linear Regression Has No Hyperparameters

我们用到的几乎所有的机器学习模型都有一些超参数,比如:

  • 学习率
  • 正则化
  • 层大小(针对神经网络)等等。

但如下图所示,为什么在 sklearn 的 Linear Regression 实现中,我们却看不到任何超参数呢?

ds p218 1

它总该有学习率这个超参数吧?要理解它没有超参数的原因,我们首先得了解,线性回归可以用两种不同的方式来建模数据:

  1. 梯度下降(许多其他机器学习算法用它来做优化):
  • 它是一种随机算法,即包含一定的随机性。
  • 它通过优化找到一个近似解。
  • 它有超参数。 2. 普通最小二乘法(OLS):
  • 它是一种确定性算法。因此,多次运行都会收敛到相同的权重。
  • 它总是能找到最优解。
  • 它没有超参数。

于是,sklearn 的 Linear Regression 类实现的并不是常见的梯度下降方法,而是 OLS 方法。

ds p219 1

这就是它没有超参数的原因。

ds p219 2

在 OLS 中,思路是找到一组参数 Θ,使得:

  • X:输入数据,维度为 (n,m)。
  • Θ:参数,维度为 (m,1)。
  • y:输出数据,维度为 (n,1)。
  • n:样本数。
  • m:特征数。

ds p220 1

确定参数 Θ 矩阵的一种方法,是在等式两边同时乘以 X 的逆矩阵,如下所示:

但因为 X 可能不是方阵,它的逆矩阵未必有定义。

ds p220 2

为了解决这个问题,我们先在等式两边同时乘以 X 的转置,如下所示:

ds p220 3

这样就让 X 与其转置的乘积成为方阵。

ds p220 4

得到的矩阵是方阵,因此可以求逆(前提是它非奇异)。接着,我们对这个乘积整体求逆,得到下式:

ds p220 5

显然,上述定义具有以下特点:

  • 没有超参数。
  • 没有随机性。因此,它总会返回相同的解,而且这个解也是最优的。这正是 sklearn 的 Linear Regression 类所实现的。总结一下,它使用的是 OLS 方法,而不是梯度下降。正因如此,它没有超参数。当然要注意,使用 OLS 与梯度下降之间,在运行时间和便利性上存在显著的权衡。这一点从我们之前章节讨论过的时间复杂度表中也能看出来。
  • 如上图所示,OLS 的运行时间与特征数 (m) 呈立方关系。因此,当特征很多时,使用 LinearRegression() 类可能不是个好主意。此时应改用 sklearn 中的 SGDRegressor() 类。

ds p221 1

当然,LinearRegression() 类的好处在于它不涉及任何超参数调优。因此,当我们使用 OLS 时,是用运行时间换取了无需调参就能找到最优解的便利。

本站内容仅供学习交流,版权归原作者所有。