「CS229」Lecture3: 局部加权回归、Logistic回归和牛顿方法


局部加权线性回归

参数学习算法和非参数学习算法

在机器学习中,我们有参数学习算法和非参数学习算法

  • 参数学习算法是指对具有特定参数的模型进行拟合的算法。

    • 在该算法中,模型具有一组已知的参数。也就是说,我们明确知道“模型的表示形式”——例如对于下面这个散点图,我们一眼就能看出模型应该形如\(y = \theta x\)

    • 算法的主要任务是:基于训练数据集来估计这些参数的值,以使模型能够预测未来的数据。也就是说,模型训练完成之后,训练集(数据)就可以从计算机内存中“扔掉”,只需要保留模型的参数值即可完成后续预测任务。

    • 常见的参数学习算法:一元线性回归

  • 非参数学习算法是指对没有特定参数的模型进行拟合的算法。

    • 在该算法中,模型没有固定的参数,因此它们能够学习和适应数据的不同特征和复杂性。也就是说,我们不知道“模型的表示形式”——例如下面这个散点图,我们一眼无法看出哪一种模型拟合的最好。

    • 每一次预测都需要用到所有的数据

    • 常见的非参数学习算法:局部加权线性回归、决策树等等

局部加权线性回归

局部加权线性回归的基本思想是:如果要预测 \(x^*\)对应的 label, 我们可以根据其附近的数据点进行拟合。最简单的方式是,根据 x 附近的数据点拟合一条直线(当然是在 x 维度为1的前提下),根据这条直线对 \(x^*\) 进行预测。如下图所示

此时,局部加权线性回归的成本函数我们可以写作——
\[ J(\theta) = \sum_{i=1}^m w^{(i)}(y^{(i)} - \theta^Tx^{(i)})^2 \]
可以看出,和线性回归的成本函数相比,该成本函数的每一项都乘了一个权重\(w^{(i)}\)。 根据局部加权线性回归的思想,我们需要更加关注 \(x^*\) (需要预测的数据)附近的数据点。因此,\(x^{*}\) 附近的数据点 \(x^{(i)}\) 我们应该赋予更高的权重,也就是更关注该数据点处的“损失”。一种常用的\(w^{(i)}\) 的计算方式是:
\[ w^{(i)} = \exp{(-\frac{(x^{(i)} - x^*)^2}{2})} \]
显然,当 \(x^{(i)}\) 距离 \(x^*\) 非常近的时候,\(w^{(i)}\) 接近 1;当 \(x^{(i)}\) 距离 \(x^*\) 非常远的时候,\(w^{(i)}\) 接近 0。\(w\) 的图像如下图所示:

有的时候,我们想要控制这个图像的“胖瘦”——即有的时候我们需要更大范围内的"邻居",有的时候我们只需要非常靠近\(x^*\)的"邻居"。此时,我们可以在\(w^{(i)}\)中增加一个带宽(bandwidth)参数\(\sigma\),通过\(\sigma\) 来控制:
\[ w^{(i)} = \exp{(-\frac{(x^{(i)} - x^*)^2}{2 \sigma^2})} \]

适用范围

当数据量比较大,且特征值比较少时(例如n=2, 3),我们可以采用加权线性回归。

线性回归的概率解释

问题引入

我们在线性回归中,使用“所有误差的平方和”作为成本函数,即:
\[ J(\theta) = \frac{1}{2} \sum_{i=1}^{m}(h_{\theta}(x^{(i)}) - y^{(i)})^2 \]
在这里我们为什么要采用平方,而不是采用四次方,或者直接取绝对值呢?

概率解释

对于每一个数据点\((x^{(i)}, y^{(i)})\) ,我们可以写作
\[ y^{(i)} = \theta^Tx^{(i)} + \varepsilon^{(i)} \]
其中,\(\varepsilon^{(i)}\) 是误差项。在这里,我们假设\(\varepsilon^{(i)}\) 服从“均值为0, 方差为\(\sigma^2\) ”的正态分布,即$^{(i)} (0, ^2) $ 。且所有的\(\varepsilon^{(i)}\) 都是独立同分布的(i.i.d.)。
\[ P(\epsilon^{(i)}) = \frac{1}{\sqrt{2\pi} \sigma} \exp (-\frac{(\varepsilon^{(i)})^2}{2 \sigma^2}) \]
根据前面的假设,有
\[ P(y^{(i)} \mid x^{(i)}; \theta) = \frac{1}{\sqrt{2\pi} \sigma} \exp (-\frac{(y^{(i)} - \theta^Tx^{(i)})^2}{2 \sigma^2}) \]
我们的目标是根据训练数据,得到最佳的参数值,也就是\(\theta\)。我们可以根据最大似然估计的思想,“固定”训练数据(即把训练数据当做已知量),得到 \(\theta\) 的似然函数 \(\mathcal{L}(\theta)\)
\[ \begin{aligned} \mathcal{L}(\theta) &= P(Y \mid X; \theta) \\ &= \prod_{i=1}^{m} P(y^{(i)} \mid x^{(i)}; \theta) \\ &= \prod_{i=1}^{m} \frac{1}{\sqrt{2\pi} \sigma} \exp (-\frac{(y^{(i)} - \theta^Tx^{(i)})^2}{2 \sigma^2}) \\ \end{aligned} \]
通常情况下,为了便于求解,我们经常对\(\mathcal{L}(\theta)\) 取对数,得到\(\ell(\theta)\)
\[ \begin{aligned} \ell(\theta) &= \log (\mathcal{L}(\theta)) \\ &= \log(\prod_{i=1}^{m} \frac{1}{\sqrt{2\pi} \sigma} \exp (-\frac{(y^{(i)} - \theta^Tx^{(i)})^2}{2 \sigma^2})) \\ &=\sum_{i=1}^m \log(\frac{1}{\sqrt{2 \pi} \sigma} ) - \frac{1}{2 \sigma^2} \sum_{i=1}^m (y^{(i)} - \theta^Tx^{(i)})^2 \end{aligned} \]
根据最大似然估计,我们应该找到一个\(\theta\),使得最大化\(\mathcal{L}(\theta)\),也就是最大化\(\ell(\theta)\)。因此有
\[ \theta = \mathop{\arg\max}\limits_{\theta} \ \ell(\theta) \]

根据\(\ell(\theta)\) 的表示,很容易可以看出,我们只需要 \(\sum_{i=1}^m (y^{(i)} - \theta^Tx^{(i)})^2\) 最大即可。这不就是线性回归成本函数\(J(x)\)的表示嘛!

当然了,还是需要注意——所有的推导都是基于一开始的假设:误差\(\varepsilon^{(i)}\)服从“均值为0, 方差为\(\sigma^2\) ”的正态分布,即$^{(i)} (0, ^2) $。尽管这看上去非常理想,但是在实践中通常拟合的很好(满足中心极限定律)。

似然(likehood)和概率(probably)的区别:

  • 似然是参数的似然,数据是固定的
  • 概率是数据的概率,参数是固定的

Logistics 回归

基本形式

Logistics 回归主要是为了解决二分类问题。在分类问题中, y 是离散的,如 \(y \in \{0, 1\}\) 。 对于二分类问题,一个典型的散点图如下所示(我们可以将它应用于肿瘤性质的预测 —— x 表示肿瘤的大小, y 表示肿瘤是恶性还是良性)

很显然,我们不能简单的用线性回归来拟合它,因为线性拟合很容易受到“离群值”的影响。在这里我们使用 Logistics 回归来拟合它,函数 \(h_\theta(x)\) 可以表示为
\[ h_\theta(x) = g(\theta^Tx) = \frac{1}{1+e^{-\theta^Tx}} \\ g(z) = \frac{1}{1 + e^{-z}} \]
其中函数 \(g(z)\) 我们称为 Logistics 函数,函数图像如下所示

不难看出\(h_\theta \in [0, 1]\)。当\(h_\theta(x) > 0.5\) 时,我们可以认为预测值为 1;当\(h_\theta(x) \leq 0.5\) 时,我们可以认为预测值为 0 。

损失函数

利用\(h_\theta(x)\) 的定义,我们可以写出“给定 x 时 y = 1 的概率” 以及 “给定 x 时 y = 0 的概率”:
\[ P(y = 1 \mid x; \theta) = h_\theta(x) \\ P(y = 0 \mid x; \theta) = 1 - h_\theta(x) \]
因为 \(y \in \{0, 1\}\) ,所以我们可以利用这一点将上面两个式子合成一个:
\[ P(y \mid x;\theta) = h_\theta(x)^{y} \cdot (1 - h_\theta(x))^{1-y} \]
我们继续用极大似然估计来推导损失函数。似然函数可以写作
\[ \begin{aligned} \mathcal{L}(\theta) &= P(Y \mid X; \theta) \\ &= \prod_{i=1}^{m} P(y^{(i)} \mid x^{(i)}; \theta) \\ &= \prod_{i=1}^{m} h_\theta(x^{(i)})^{y^{(i)}} \cdot (1 - h_\theta(x^{(i)}))^{1-y^{(i)}} \end{aligned} \]
同样为了便于计算,需要对 \(\mathcal{L}(\theta)\) 取对数
\[ \begin{aligned} \ell(\theta) &= \log (\mathcal{L}(\theta)) \\ &= \log(\prod_{i=1}^{m} h_\theta(x^{(i)})^{y^{(i)}} \cdot (1 - h_\theta(x^{(i)}))^{1-y^{(i)}}) \\ &=\sum_{i=1}^m y^{(i)} \cdot \log(h_\theta(x^{(i)})) + (1 - y^{(i)}) \cdot \log(1 - h_\theta(x^{(i)})) \end{aligned} \]
\(\theta\) 的最优值应该使得 \(\ell(\theta)\) 最大化。因此,成本函数\(J(\theta)\)可以定义为
\[ J(\theta) = \sum_{i=1}^m - \ y^{(i)} \cdot \log(h_\theta(x^{(i)})) - (1 - y^{(i)}) \cdot \log(1 - h_\theta(x^{(i)})) \]
\(J(\theta)\) 最小时,\(\ell(\theta)\) 最大,此时\(\theta\) 是最优值。接下来,我们同样可以使用梯度下降求解 \(\theta\)
\[ \theta_j := \theta_j - \alpha \frac{\partial \ J(\theta)}{\partial\ \theta_j} \ \\ \tt{(repeat \ until \ convergence)} \]
\(\frac{\partial \ J(\theta)}{\partial\ \theta_j}\) 的值计算并代入,即可得到
\[ \theta_j := \theta_j - \alpha \sum_{i=1}^m (h_\theta(x ^{(i)}) - y^{(i)}) \cdot x_j^{(i)} \ \]

牛顿法

问题引入

无论是线性回归,还是 Logistics 回归,他们的局部最优值就是全局最优值。也就是说,他们的似然函数 \(\ell(\theta)\) 的唯一极值也就是最值。因此,我们可以直接对似然函数对\(\theta\) 求导数,并令导数等于0,即
\[ \ell^{\prime}(\theta) = 0 \]
对于\(\ell(\theta)\) ,求导数是很容易的,但是求解 \(\ell^{\prime}(\theta)\) 的零点却不简单。

基本思想

我们可以采用牛顿法来解决上述问题。假设我们求解的方程是
\[ f(x) = 0 \]
牛顿方法的基本过程是:

  1. 随机挑选一个 x 值 ,设定一个终止误差值\(\varepsilon\)
  2. 找到\(f(x)\) 在 x 处的切线,该切线与 x 轴交于一点 m
  3. \(|x - m| < \varepsilon\) 时,结束迭代,反之令 x = m ,继续第2步...

整个过程可以用下图来表示

该过程可以形式化表示为
\[ x := x - \frac{f(x)}{f^{\prime}(x)} \]
将牛顿法应用到求解\(\ell^{\prime}(\theta)\) 零点的问题上,则\(\theta\) 目标值的求解过程可以形式化的表示为
\[ \theta := \theta - \frac{\ell^{\prime}(\theta)}{\ell^{\prime\prime}(\theta)} \\ \tt{(repeat \ until \ convergence)} \]
上述公式只是适用于\(\theta\) 是0维的时候。当\(\theta\) 为一个向量时,牛顿法可以扩展为
\[ \theta := \theta - H^{-1} \nabla_{\theta}\ell(\theta) \]

其中\(H\) 表示Hession矩阵。这个方法也叫牛顿-拉普森法(Newton-Raphson)。

牛顿法具有二次收敛的特性,即每次迭代有效数字的位数加倍,因此和梯度下降相比有很高的迭代速度。但是,每次迭代的开销比梯度下降要高很多,因为要计算 \(n \times n\) 规模的 \(H\) 矩阵。 所以,牛顿法适用于参数量不是很大的情况(也就是\(\theta\) 的分量数),参数量在 10~50 之间比较适合。如果参数量比较大,梯度下降法比较适合。


文章作者: Hyggge
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Hyggge !
  目录