funmore233

Logistic 回归

Logistic 回归是解决分类问题的一类线性模型, 在某些文献中, Logistic 回归又被称作 logit 回归, maximum-entropy classification (MaxEnt, 最大熵分类) 或 log-linear classifier (对数线性分类器). 该模型利用 logits 函数将单次试验 (single trial) 的可能结果输出为概率.

Logistic 分布

首先介绍 logistic 分布, 设 \(X\) 是连续随机变量, \(X\) 服从 Logistic 分布是指 \(X\) 具有下列分布函数和密度函数:

\[F(x) = P(X \leq x) = \frac{1}{e^{-(x-\mu)/\gamma}} \]

\[f(x) = F^\prime(x) = \frac{e^{-(x-\mu)/\gamma}}{\gamma(1 + e^{-(x-\mu)/\gamma})^2} \]

Logistic 分布的分布函数 \(F(x)\) 图形是一条 S 形曲线 (Sigmoid curve).

二项 Logistic 回归模型

线性回归模型可以表示为

\[f(\mathbf{x}) = \mathbf{\omega}^T \mathbf{x} + b \]

其中 \(\mathbf{x} \in \mathbb{R}^n\) 是输入, \(\mathbf{\omega} \in \mathbb{R}^n\) 是权值向量, \(b\) 是偏置, 后两者为参数. 如果将线性回归应用到分类问题, 则可以简单加上符号阈值, 即:

\[f(\mathbf{x}) = \text{sign}(\mathbf{\omega}^T \mathbf{x} + b) \]

二项 Logistic 回归模型 (binomial logistic regression model) 是一种分类模型, 由条件概率分布 \(P(Y|X)\) 表示, 形式为参数化的 Logistic 分布. 二项 Logistic 回归模型是如下的条件概率分布:

\[P(Y=1|\mathbf{x}) = \frac{\exp(\mathbf{\omega}^T \mathbf{x} + b)}{1 + \exp(\mathbf{\omega}^T \mathbf{x} + b)} \]

\[P(Y=0|\mathbf{x}) = \frac{1}{1 + \exp(\mathbf{\omega}^T \mathbf{x} + b)} \]

即将输入特征向量 \(\mathbf{x} \in \mathbb{R}^n\) 光滑地映射到 \([0,1]\) 区间内表示概率, logistic 回归模型也可以表示为:

\[f(\mathbf{x}) = \theta(\mathbf{\omega}^T \mathbf{x} + b) \]

其中 \(\theta\) 被称为 logistic 函数 (sigmoid 函数), 其输出限制在 \(0\)\(1\) 之间:

\[\theta(s) = \frac{\exp(s)}{1 + \exp(s)} \]

一个事件的几率 (odds) 指该事件发生的概率与该事件不发生概率的比值, 即 \(\frac{p}{1-p}\) (假设事件发生的概率为 \(p\)), 该事件的对数几率 (log odds), 或者 logits 函数为:

\[logits(p) = \log \frac{p}{1-p} \]

从另一个角度来看, 在 Logistic 回归模型中, 输出 \(Y=1\) 的对数几率是输入 \(\mathbf{x}\) 的线性函数:

\[\log \frac{P(Y=1|X)}{1-P(Y=1|X)} = \mathbf{\omega}^T \mathbf{x} + b \]

换句话说, 通过 Logistic 回归模型定义式可以将线性函数 \(\mathbf{\omega}^T \mathbf{x} + b\) 转换为概率:

\[P(Y=1|X) = \frac{\exp(\mathbf{\omega}^T \mathbf{x} + b)}{1 + \exp(\mathbf{\omega}^T \mathbf{x} + b)} \]

即线性函数值越接近正无穷, 概率值越接近于 1, 反之越接近负无穷, 概率值越接近于 0.

模型损失函数

对于给定的训练数据集 \(T = \{ (\mathbf{x}_1, y_1), (\mathbf{x}_2, y_2), \cdots, (\mathbf{x}_N, y_N) \}\), 其中 \(\mathbf{x}_i \in \mathbb{R}^n\)\(y_i \in \{0, 1\}\). 可以应用极大似然估计模型参数, 从而得到 Logistic 回归模型.

\(P(Y=1|x) = f(x)\), \(P(Y=0|x) = 1 - f(x)\), 似然函数为 :

\[L(\mathbf{\omega}, b) = \prod_{i = 1}^N [f(x_i)]^{y_i} [1 - f(x_i)]^{1-y_i} \]

对数似然函数为 :

\[\begin{equation} \begin{aligned} \mathcal{L}(\mathbf{\omega}, b) &= \log L(\mathbf{\omega}, b) \\ &= \sum^N_{i=1} \left[y_i\log f(x_i) + (1-y_i)\log(1-f(x_i))\right] \end{aligned} \end{equation} \]

该最优化问题一般可以通过梯度下降法或拟牛顿法求解. 可以定义 Logistic 回归的损失函数为下式, 也就是交叉熵损失函数:

\[J(\mathbf{\omega}, b) = -\frac{1}{N} \sum^N_{i=1} \left[y_i\log f(x_i) + (1-y_i)\log(1-f(x_i))\right] \]

上面的极大化对数似然函数也就与极小化损失函数等价.

Logistic 回归模型也可以等价地表示为如下形式:

\[f(x) = P(Y=y|x) = \frac{1}{1 + \exp(-y(\mathbf{\omega}^T \mathbf{x} + b))} \]

此时 Logistic 回归的损失函数可以表示为:

\[J(\mathbf{\omega}, b) = \frac{1}{N} \sum^N_{i=1} \log(1 + \exp(-y_i(\mathbf{\omega}^T \mathbf{x}_i + b))) \]

注意在这里取了倒数并且去掉了负号, 并且也等价于极大化对数似然函数.

多分类学习

在有些情况下, 二分类学习方法可以推广到多分类问题中, 但是多数情况下需要基于一定的策略利用二分类学习器解决多分类问题. 考虑 \(K\) 个类别 \(c_1,c_2,\cdots,c_K\), 多分类学习的基本思路是拆解法, 即将多分类任务拆解为若干个二分类问题. 具体来说, 先对问题进行拆分, 然后为拆出的每个二分类任务训练一个分类器, 在测试时, 对这些分类器的预测结果进行集成以获得最终的多分类结果. 对多分类任务的经典拆分策略包含三种: 一对一 (One v.s. One, OvR), 一对其余 (One v.s. Rest, OvR), 多对多 (Many v.s. Many, MvM).

  • 一对一 (One v.s. One, OvO)

    \(K\) 个类别两两配对, 从而产生 \(k(k-1)/2\) 个二分类任务, 也即产生 \(k(k-1)/2\) 个二分类学习器, 产生 \(k(k-1)/2\) 个分类结果, 最终的多分类结果通过投票产生. 其中单个二分类学习器就是对 \(c_i\)\(c_j\) 进行分类的二分类学习器.

  • 一对其余 (One v.s. Rest, OvR)

    每次将一个类的样例作为正例, 所有其他类的样例作为反例来训练 \(K\) 个分类器. 在测试时若仅有一个分类器的预测为正例, 则把该分类器对应的预测类别标记作为最终的分类结果. 若有多个分类器预测为正例, 则通常考虑各分类器的预测置信度, 选择置信度最大的类别标记作为分类结果.

    可见 OvO 需要训练 \(k(k-1)/2\) 分类器, 而 OvR 只需训练 \(K\) 个分类器, 因此 OvO 的存储开销和预测时间开销通常比 OvR 更大. 但在训练时 OvR 的每个分类器均使用全部训练样例, 而 OvO 的单个分类器仅使用两个类别的样例, 因此在类别很多时, OvO 的训练时间开销通常比 OvR 更小. 至于预测性能的表现则取决于具体的数据分布, 多数情况下两者差别不大.

OvO 与 OvR 示意图
  • 多对多 (Many v.s. Many, MvM)

    MvM 每次将若干个类作为正类, 若干个其他类作为反类. 从这个角度来看, OvO 和 OvR 是 MvM 的特例. MvM 的正反类构造需要有特殊的设计, 最常用的是纠错输出码 (Error Correcting Output Codes, ECOC). ECOC是将编码思想引入类别拆分, 并尽可能在解码过程中具有容错性, ECOC 主要分为两步:

    1. 编码: 将 \(K\) 个类别做 \(M\) 次划分, 每次将一部分作为正例, 其余作为反例, 从而形成一个二分类训练集, 这样一共产生 \(M\) 个训练集, 学习到 \(M\) 个分类器.

    2. 解码: \(M\) 个分类器分别对测试样本进行预测, 得到 \(M\) 个结果, 组成一个编码, 将其和每个类别各自的编码进行比较, 距离最小的类别作为最终结果.

logistic_mvm
ECOC 编码示意图, +1 和 -1 分别表示学习器将该类样本作为正反例, 三元码中 0 表示学习器不使用该样本

在测试阶段, ECOC 编码对分类器的错误有一定容忍和修正能力. 例如上图 (a) 对测试样本正确预测编码是 (-1, +1, +1, -1, +1), 假设在预测时某个分类器出错了, 例如 \(f_2\) 出错从而导致了错误编码 (-1, -1, +1, -1, +1), 但基于这个编码仍能产生正确的最终分类结果 \(c_3\). 一般来说对同一个学习任务, ECOC 编码越长纠错能力越强, 然而所训练分类器越多, 计算存储开销也会增大.

对同等长度的编码, 理论上来说任意两个类别的编码距离越远, 纠错能力越强. 因此, 在码长较小时可根据这个原则计算出理论最优编码. 然而, 码长稍大一些就难以有效地确定最优编码, 事实上这是 NP 难问题. 不过, 通常我们并不需获得理论最优编码, 因为非最优编码在实践中往往已能产生足够好的分类器. 另一方面, 并不是编码的理论性质越好, 分类性能就越好, 因为机器学习问题涉及很多因素, 例如将多个类拆解为两个类别子集, 不同拆解方式所形成的两个类别子集的区分难度往往不同, 即其导致的二分类问题的难度不同. 于是, 一个理论纠错性质很好但导致的二分类问题较难的编码, 与另一个理论纠错性质差一些, 但导致的二分类问题较简单的编码, 最终产生的模型性能孰强孰弱很难说.

多项 Logistic 回归模型

可以将二项 Logistic 回归模型推广为多项 Logistic 回归模型 (multi-nomial logistic regression model), 用于多类分类问题, 它也被称为 softmax 回归 (softmax regression).

假设离散型随机变量 \(Y\) 的取值集合为 \(\{1, 2, \cdots, K\}\), 那么 softmax 回归模型, 即预测输入数据 \(\mathbf{x}\) 属于类别 \(k\) 的概率为:

\[P(Y=k|\mathbf{x}) = \frac{\exp(\mathbf{\omega}_k^T \mathbf{x}+b_k)} {\sum^K_{k=1}\exp(\mathbf{\omega}_k^T \mathbf{x}+b_k)}, \ k = 1, 2, \cdots, K \]

可以将权值向量和输入向量加以扩充以方便计算, 这里重新记作:

\[\mathbf{\theta}_k = (\omega_k^{(1)}, \omega_k^{(2)}, \cdots, \omega_k^{(n)}, 1) \in \mathbb{R}^{n+1} \]

\[\mathbf{x} = (x^{(1)}, x^{(2)}, \cdots, x^{(n)}, 1) \in \mathbb{R}^{n+1} \]

即 softmax 回归模型可表示为:

\[P(Y=k|\mathbf{x}) = \frac{\exp(\mathbf{\theta}_k^T \mathbf{x})}{\sum^K_{k=1} \exp(\mathbf{\theta}_k^T \mathbf{x})}, \ k = 1, 2, \cdots, K \]

需要注意的是 softmax 回归是参数冗余的 (overparameterized), 即假设我们从每一个参数向量 \(\mathbf{\theta}_k\) 中减去向量 \(\mathbf{\psi}_k\), 那么对于概率函数有

\[\frac{e^{(\mathbf{\theta}_k-\mathbf{\psi}_k)^T \mathbf{x}}}{\sum^K_{k=1}e^{(\mathbf{\theta}_k-\mathbf{\psi}_k)^T \mathbf{x}}} = \frac{e^{\mathbf{\theta}_k^T \mathbf{x}}}{\sum^K_{k=1}e^{\mathbf{\theta}_k^T \mathbf{x}}} \]

表明 softmax 回归的参数是有多余的.

可以通过设定 \(\mathbf{\psi}_k = \mathbf{\theta}_K\) 代入原始回归模型得到:

\[P(Y=k|\mathbf{x}) = \frac{\exp(\mathbf{\theta}_k^T \mathbf{x})}{1 + \sum^{K-1}_{k=1} \exp(\mathbf{\theta}_k^T \mathbf{x})}, \ k = 1, 2, \cdots, K-1 \]

\[P(Y=k|\mathbf{x}) = \frac{1}{1 + \sum^{K-1}_{k=1}\exp(\mathbf{\theta}_k^T \mathbf{x})}, \ k = 1, 2, \cdots, K \]

去掉参数向量 \(\mathbf{\theta}\) 的最后一个, 得到新的 softmax 模型.

分类:

技术点:

相关文章: