Reference
【概述】
对数几率回归(Logistic regression)即 Logistic 回归,虽然名为回归,但其实际上是一种解决分类问题的分类学习方法,在现实中应用十分广泛,比如垃圾邮件识别,手写数字识别,人脸识别,语音识别等
对于分类问题来说,如果利用线性回归来拟合,假设函数 $f(\mathbf{x_i};\boldsymbol{\theta})$ 的输出值会出现 $f(\mathbf{x_i};\boldsymbol{\theta})>1$ 或 $f(\mathbf{x_i};\boldsymbol{\theta})<0$ 的情况,无法对结果进行归纳,因此,有了 Logistic 回归
其利用一个单调可微的激活函数,将分类任务的真实标记 $y_i$ 与线性回归模型的预测值 $f(\mathbf{x_i};\boldsymbol{\theta})$ 联系起来,从而将数值结果转换为分类结果,简单来说,其是利用线性回归模型的预测结果去逼近真实标记的对数几率
Logistic 回归根据分类数据的类别,分为以下三种情况:
- 二元 Logistic 回归:分类数据为两类(例如:有/没有)
- 多元无序 Logistic 回归:分类数据超过两类,且类别间没有对比意义(例如:一线城市、二线城市、三线城市)
- 多元有序 Logistic 回归:分类数据超过两类,且类别间有对比意义(例如:喜欢、不喜欢、无所谓)
需要注意的是,这里的元,指的不是自变量的个数,而是因变量的取值范围
本文仅介绍多元 Logistic 回归,关于二元 Logistic 回归,详见:二元 Logistic 回归
【假设形式】
假设函数
对于给定的容量为 $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)})\in \mathbb{R}^m$,输出 $y_i\in \{1,2,…,K\}$,多元 Logistic 回归学习到的第 $k$ 类的模型为 $f(\mathbf{x_i};\boldsymbol{\theta})$,使得 $f(\mathbf{x_i};\boldsymbol{\theta})\simeq k$
第 $k$ 类的假设函数 $f(\mathbf{x_i};\boldsymbol{\theta_k})$ 为:
其中,$\boldsymbol{\theta}_k$ 为 $(m+1)\times 1$ 的列向量,其是预测结果为 $k\in \{1,2,…,K\}$ 时与假设函数相关的特征参数,即:
$g(z)$ 为激活函数,就是假说表示,对于不同的问题,根据实际情况来选择不同的激活函数
为了表述方便,对假设函数进行简化,定义一个额外的第 $0$ 个特征量,这个特征量对所有样本的取值全部为 $1$,这使得特征量从过去的 $m$ 个变为 $m+1$ 个,即设:$x_i^{(0)}=1$
那么假设函数就可以写为:
在多元 Logistic 回归中,采取 softmax 函数作为激活函数,其能够将多分类的输出值转换为范围在 $(0,1)$ 间的和为 $1$ 的概率分布
假设有 $K$ 种输出值,对于给定的 $K$ 维向量 $\mathbf{z}$,针对其中的第 $i$ 个元素 $z^{(i)}$,有:
对于多元 Logistic 回归,其有 $K$ 种分类,可以将每种分类的条件概率写成 softmax 的形式, 于是,对于第 $k$ 类的假设函数可写作:
则多元 Logistic 回归整体的假设函数为:
对数几率形式
与二元 Logistic 回归的对数几率形式相似,将 $f(\mathbf{x_i};\boldsymbol{\theta_k})$ 视为后验概率估计 $P(y_i=K|\mathbf{x_i};\boldsymbol{\theta})$,即在给定概率参数为 $\boldsymbol{\theta}$ 时,对具有 $\mathbf{x_i}$ 特征的条件下 $y_i=K$ 时的概率,即:
那么对于剩余的 $K-1$ 类,多元 Logistic 回归的对数几率可写为:
即:
后验概率形式
对于对数几率 $\ln \frac{P(y_i=k|\mathbf{x_i};\boldsymbol{\theta_k})}{P(y_i=K|\mathbf{x_i};\boldsymbol{\theta_{K}})}=\boldsymbol{\theta_{k}}^T\mathbf{x_i}, k=1,2,…K-1$ 中的 $P(y_i=k|\mathbf{x_i};\boldsymbol{\theta_k})$,有:
那么,对于 $P(y_i=K|\mathbf{x_i};\boldsymbol{\theta_K})$,有:
化简,有:
进而,对于
有:
即对于假设函数 $f(\mathbf{x_i};\boldsymbol{\theta_k})$,有:
引入指示函数 $\mathbb{I}(\cdot)$,从而将上面两个式子合写为一个,即:
【损失函数】
与二元 Logistic 回归类似,对于得到的多元 Logistic 回归模型的后验概率形式:
采用最大似然法(Maximum Likelihood Method)来估计 $\boldsymbol{\theta}$,即对于给定的容量为 $n$ 的训练集 $D=\{(\mathbf{x_1},y_1),(\mathbf{x_2},y_2),…,(\mathbf{x_n},y_n)\}$,可得到似然函数:
在 $\boldsymbol{\theta}$ 的所有可能取值中找一个使得似然函数取到最大值,这时求得的解就是最大似然估计,即:
由于带连乘运算的似然函数 $L(\boldsymbol{\theta})$ 不好优化,考虑到似然函数的取值范围为 $(0,1)$,那么对似然函数取自然对数不影响其单调性,,同时为将最大化问题转为最小化问题,再对取自然对数后的似然函数进行取反,这样就得到了多元 Logistic 回归的损失函数:
接下来要做的,就是要最小化代价函数,为训练集拟合出参数,即:
代价函数 $J(\boldsymbol{\theta})$ 是关于 $\boldsymbol{\theta}$ 的高阶可导连续凸函数,根据凸优化理论,利用梯度下降法或是牛顿迭代法均可取其最优解
【sklearn 实现】
以 sklearn
中的鸢尾花数据集为例,选取其后两个特征来实现多元 Logistic 回归
1 | import pandas as pd |