第五章 线性分类 Linear Classification
线性分类概念
判别函数、概率生成模型、概率判别模型
逻辑回归、朴素贝叶斯分类器
5.1 分类概述
★回归与分类
在回归中,输入特征被映射到一个或多个连续目标变量。线性回归有简单的闭式解和很好的计算性质。
在分类中,输入特征 xx 被 映射到 KK 个离散类别之一 CkC_k 。
★三种分类方法
1 判别函数 Discriminant function
判别函数是一个以向量 xx 为输入,把它分配到 KK 个类别中的某一个类别(记作 CkC_k)的函数。
直接找到⼀个函数 f(x)f (x),把每个输⼊ xx 直接映射为类别标签。
例如:Fisher 判别函数,感知机,SVM …
⼆分类问题中, f(·)可能是⼀个⼆元的数值, f = 0表⽰类别C1, f = 1表⽰类别C2
2 概率判别式模型 Probabilistic Discriminative Models
直接对后验概率 p(Ck∣x)p (C_k |x) 建模,再使⽤决策论来确定每个新的输⼊ xx 的类别。
例如:logistic 回归、神经网络
比如预测猫狗,是猫则为1,狗为0,则为判别模型,如果设两个分类器,分别输出猫狗的概率,哪个高就分类到哪
3 概率生成式模型 Probabilistic Generative Models
先对类条件密度 p(Ck∣x)p (C_k |x) 和先验类概率分布 p(Ck)p(C_k) 建模,然后再使⽤贝叶斯定理计算后验类概率分布 p(Ck∣x)p(C_k |x)
p(Ck∣x)=p(x∣Ck)p(Ck)p(x)p(C_k |x) = \frac{p(x|C_k)p(C_k)}{p(x)}
最后,使⽤决策论来确定每个输⼊ xx 的类别。
等价地,直接对联合概率分布 p(x,Ck)p(x ,C_k) 建模,再归一化得到后验概率。
例如:朴素贝叶斯分类器
生成式模型可还原出联合概率分布;学习收敛速度更快;存在隐变量时,也可以学习。
判别式模型直接学习后验概率,直接面对预测,学习准确率更高;可简化学习问题 。
生成式模型
P(c∣x)=P(x,c)P(x)P(c\mid\mathbf{x})=\frac{P(\mathbf{x},c)}{P(\mathbf{x})}
基于贝叶斯定理,有
P(c∣x)=P(c)P(x∣c)P(x)P(c\mid\mathbf{x}) = \frac{P(c)P(\mathbf{x}\mid c)}{P(\mathbf{x})}
-
P(c)P(c):样本空间中各类样本所占的比例,可通过各类样本出现的频率估计(大数定理)
-
P(x∣c)P(\mathbf{x}\mid c):类标记c相对于样本x的“类条件概率” (class-conditional probability), 或称“似然”
-
P(x)P(\mathbf{x}):“证据”(evidence)因子,与类标记无关
线性分类模型
从回归到分类
回归问题:线性回归模型中,模型的预测 y(x,w)y(x,w) 由参数 ww 的线性函数给出:
y(x)=wTx+w0y(\boldsymbol x)=\boldsymbol w^T\boldsymbol x+w_0
即 yy 是一个实数。
分类问题:预测位于区间(0, 1)的后验概率分布。
推⼴:使⽤⾮线性函数f(·)对w的线性函数进⾏变换得到推⼴的线性模型:
y(x)=f(wTx+w0)y(\boldsymbol x)=f(\boldsymbol w^T\boldsymbol x+w_0)
f(⋅)f(·) 被称为激活函数(activation function)。
激活函数
决策面
决策面对应于 y(x)=常数y(x) = 常数:
wTx+w0=常数\boldsymbol{w}^T\boldsymbol{x}+w_0=常数
因此决策面是 xx 的线性函数,即使函数 f(⋅)f(·) 是⾮线性函数也是如此。
推广的模线性型
推广的模线性型:不再是参数的线性模型,因为引⼊了⾮线性函数 f(⋅)f(·)。计算⽐线性回归模型更加复杂。
线性分类模型
最常见的情况是,类别互不相交: 每个输⼊被分到唯⼀的⼀个类别中。
输⼊空间被划分为不同的决策区域(decision region),边界被称为决策边界(decision boundary)或者决策面(decision surface)
分类线性模型,是指决策面是输⼊向量x的线性函数,因此被定义为D维输⼊空间中的(D - 1)维超平面。
如果数据集可以被线性决策面精确地分类,那么我们说这个数据集是线性可分的(linearly separable)
例子
1D 数据
2D 数据
3D 数据
5.2 判别函数
判别函数
判别函数是⼀个以向量x为输⼊,把它分配到K个类别中的某⼀个类别(记作Ck)的函数。
线性判别函数
线性判别函数(linear discriminant function),即那些决策⾯是超平⾯的判别函数
- ⼆分类
- 多分类
线性判别函数的几何性质
二分类线性判别函数:
y(x)=wTx+w0y(\boldsymbol x)=\boldsymbol w^T\boldsymbol x+w_0
- ww 被称为权向量(weight vector)
- w0w_0 被称为偏置(bias)
- 偏置的相反数有时被称为阈值(threshold)
对于⼀个输⼊向量 xx,如果 y(x)≥0y(x) ≥ 0,那么它被分到 C1C_1 中,否则被分到 C2C_2 中。
对应的决策边界由 y(x)=0y(x) = 0 确定,它对应着 DD 维空间的⼀个 (D−1)(D - 1) 维的超平⾯。
考虑两个点 xAx_A 和 xBx_B,两个点都位于决策⾯上:
y(xA)=y(xB)=0wT(xA−xB)=0y(\boldsymbol{x}_A)=y(\boldsymbol{x}_B)=0 \\ \boldsymbol{w}^T(\boldsymbol{x}_A-\boldsymbol{x}_B)=0
向量 ww 与决策⾯内的任何向量都正交,从⽽ ww 确定了决策⾯的⽅向。
如果 xx 是决策⾯内的⼀个点,那么 y(x)=0y(x)=0,因此从原点到决策⾯的垂直距离为:
wTx∥w∥=−w0∥w∥\frac{\mathbf{w}^{\text{T}}\mathbf{x}}{\|\mathbf{w}\|}=-\frac{w_0}{\|\mathbf{w}\|}
因此我们看到偏置参数 w0w_0 确定了决策⾯的位置。
此外,我们注意到 y(x)y(x) 的值给出了点 xx 到决策⾯的垂直距离 rr 的⼀个有符号的度量。为了说明这⼀点,考虑任意一点 x\boldsymbol{x} 和它在决策面上的投影 x⊥\boldsymbol{x}_\perp 上,我们有
x=x⊥+rw∥w∥\boldsymbol{x}=\boldsymbol{x}_\perp+r\frac{\boldsymbol{w}}{\|\boldsymbol{w}\|}
将这个等式的两侧同时乘以 wT\boldsymbol{w}^T,然后加上 w0w_0,并且使用 y(x)=wTx+w0y(\boldsymbol x)=\boldsymbol w^T\boldsymbol x+w_0 以及 y(x⊥)=wTx⊥+w0y(\boldsymbol x_\perp)=\boldsymbol w^T\boldsymbol x_\perp+w_0,我们有:(任意一点 xx 到决策⾯的有符号的距离 rr)
r=y(x)∥w∥r=\frac{y(\boldsymbol{x})}{\|\boldsymbol{w}\|}
线性判别函数的决策规则
多分类情形
(1) 1 对其他(one-versus-the-rest)分类器
K−1K-1 个二分类
(2) 1 对 1(one-versus-one)分类器
K(K−1)2\frac{K(K-1)}{2} 个二分类
(3) K 类判别函数
yk(x)=wkTx+wk0y_k(x) = w_k^T x + w_{k0}
如果对于所有的 j≠kj≠k 都有 yk(x)>yj(x)y_k(x)>y_j(x) ,那么就把它分到 CkC_k。
这样的判别函数的决策区域总是单连通的,并且是凸的
用最小二乘解分类问题?
最小二乘法对于离群点缺少鲁棒性,它的误差函数惩罚了“过于正确”的预测,因为他们在正确的⼀侧距离决策边界太远了。
Fisher 线性判别函数
二分类的Fisher判别函数
当投影到连接均值的直线上时,就有了⼀定程度的重叠。如果类概率分布的协⽅差矩阵与对⾓化矩阵差距较⼤,那么这种问题就会出现。
多分类的Fisher判别函数
感知机
感知机 (Rosenblatt 1962)
推广的线性模型
y(x)=f(wTϕ(x))f(a)={+1,a⩾0−1,a<0y(\mathbf{x})=f\left(\mathbf{w}^{\mathrm{T}}\phi(\mathbf{x})\right) \\ f(a)= \begin{cases} +1,&a\geqslant0\\ -1,&a<0 \end{cases}
误差函数,被称为感知器准则(perceptron criterion)
EP(w)=−∑n∈MwTϕntnE_{\mathrm{P}}(\mathbf{w})=-\sum_{n\in\mathcal{M}}\mathbf{w}^{\mathrm{T}}\phi_n t_n
where M\mathcal{M} denotes the set of all misclassified patterns.
随机梯度下降算法
w(τ+1)=w(τ)−η∇EP(w)=w(τ)+ηϕntn\mathbf{w}^{(\tau+1)}=\mathbf{w}^{(\tau)}-\eta\nabla E_\mathrm{P}(\mathbf{w})=\mathbf{w}^{(\tau)}+\eta\phi_n t_n
模拟生物神经元行为的机器,有与生物神经元相对应的部件,如权重(突触)、偏置(阈值)及激活函数(细胞体),输出为+1或-1。
y^={+1当wTx>0−1当wTx≤0\hat{y}= \begin{cases} +1&当\mathbf{w}^T\mathbf{x}>0\\ -1&当\mathbf{w}^T\mathbf{x}\leq0 \end{cases}
感知器的学习过程
感知器算法收敛性的说明
5.3 概率判别式模型
问题提出:一维数据的二分类问题示例
★逻辑回归 Logistic Regression
逻辑回归
其中 𝑔(⋅) 通常称为激活函数(Activation Function),其作用是把线性函数的值域从实数区间“挤压”到了(0, 1)之间,可以用来表示概率。
公式(3.18)为样本𝒙为正反例后验概率的比值,称为几率(Odds)。几率的对数称为对数几率(Log Odds,或Logit)。
公式(3.17)中等号的左边是线性函数,这样 Logistic 回归可以看作预测值为“标签的对数几率”的线性回归模型。
因此, Logistic回归也称为对数几率回归(Logit Regression)。
参数学习
Logistic回归采用交叉熵作为损失函数,并使用梯度下降法来对参数进行优化
使用交叉熵损失函数,其风险函数为
风险函数ℛ(𝒘)关于参数𝒘的偏导数为
采用梯度下降法,Logistic回归的训练过程为:初始化 𝒘0←0𝒘_0←0,然后通过下式来迭代更新参数:
Logistic 回归总结
Logistic回归分类模型的三要素:
线性模型
基于梯度下降的参数学习
5.4 概率生成式模型
概率生成式模型
二分类情形
⾸先考虑二分类的情形。类别 C1\mathcal{C}_1 的后验概率可以写成
p(C1∣x)=p(x∣C1)p(C1)p(x∣C1)p(C1)+p(x∣C2)p(C2)=11+exp(−a)=σ(a)\begin{gathered} p(\mathcal{C}_1\mid\boldsymbol{x}) =\frac{p(\boldsymbol{x}\mid\mathcal{C}_1)p(\mathcal{C}_1)}{p(\boldsymbol{x}\mid\mathcal{C}_1)p(\mathcal{C}_1)+p(\boldsymbol{x}\mid\mathcal{C}_2)p(\mathcal{C}_2)} \\ =\frac{1}{1+\exp(-a)}=\sigma(a) \end{gathered}
其中我们定义了
a=lnp(x∣C1)p(C1)p(x∣C2)p(C2)a=\ln\frac{p(\boldsymbol{x}\mid\mathcal{C}_1)p(\mathcal{C}_1)}{p(\boldsymbol{x}\mid\mathcal{C}_2)p(\mathcal{C}_2)}
且 σ(a)\sigma(a) 是 logistic sigmoid 函数,定义为
σ(a)=11+exp(−a)\sigma(a) = \frac{1}{1 + \exp(-a)}
“sigmoid”的意思是“S形”。这种函数有时被称为“挤压函数”,因为它把整个实数轴映射到了⼀个有限的区间中。这个函数在许多分类算法中都有着重要的作⽤。它满⾜下⾯的对称性
σ(−a)=1−σ(a)\sigma(-a) = 1 - \sigma(a)
这个性质很容易证明。logistic sigmoid的反函数为
a=ln(σ1−σ)a=\text{ln}\left(\frac{\sigma}{1-\sigma}\right)
被称为 logit 函数。它表⽰两类的概率⽐值的对数 ln[p(C1∣x)p(C2∣x)]\ln\left[\frac{p(\mathcal{C}_1|x)}{p(\mathcal{C}_2|x)}\right],也被称为 log odds 函数。
注意在公式中,我们只是把后验概率写成了⼀个等价的形式,因此 logistic sigmoid 函数的出现似乎相当没有意义。然⽽,假设a(x)的函数形式相当简单,那么这种表⽰⽅法就很有⽤了。我们稍后会考虑a(x)是x的线性函数的情形。这种情况下,后验概率由⼀个通⽤的线性模型确定。
多分类情形
对于 K>2K > 2 个类别的情形,我们有
p(Ck∣x)=p(x∣Ck)p(Ck)∑jp(x∣Cj)p(Cj)=exp(ak)∑jexp(aj)\begin{aligned} p(\mathcal{C}_k\mid\boldsymbol{x}) =&\frac{p(x\mid\mathcal{C}_k)p(\mathcal{C}_k)}{\sum_j p(\boldsymbol{x}\mid\mathcal{C}_j)p(\mathcal{C}_j)} \\ =&\frac{\exp(a_k)}{\sum_j\exp(a_j)} \end{aligned}
它被称为归⼀化指数(normalized exponential),可以被当做logistic sigmoid函数对于多类情况的推⼴。
这⾥ aka_k 被定义为
ak=lnp((x∣Ck)p(Ck))a_k=\ln p((\boldsymbol{x}\mid\mathcal{C}_k)p(\mathcal{C}_k))
归⼀化指数也被称为 softmax 函数,因为它表⽰“max”函数的⼀个平滑版本。这是因为,如果对于所有的 j≠kj \ne k 都有 ak≫aja_k ≫ a_j,那么 p(Ck∣x)≃1p(C_k | x) ≃ 1 且 p(Cj∣x)≃0p(C_j | x) ≃ 0。
我们现在考虑选择具体的类条件概率密度形式的情况下的结果,⾸先讨论连续输⼊变量 xx 的情形,然后简短地讨论离散输⼊的情形。
连续输入
让我们假设类条件概率密度是高斯分布,然后求解后验概率的形式。
⾸先,我们假定所有的类别的协⽅差矩阵相同。这样类别 Ck\mathcal{C}_k 的类条件概率为
p(x∣Ck)=1(2π)D21∣Σ∣12exp{−12(x−μk)TΣ−1(x−μk)}p(\boldsymbol{x}\mid\mathcal{C}_k)=\frac{1}{(2\pi)^{\frac{D}{2}}}\frac{1}{|\boldsymbol{\Sigma}|^{\frac{1}{2}}}\exp\left\{-\frac{1}{2}(x-\boldsymbol{\mu}_k)^T\boldsymbol{\Sigma}^{-1}(\boldsymbol{x}-\boldsymbol{\mu}_k)\right\}
两类的情形
⾸先考虑两类的情形。根据上面的公式,我们有
p(C1∣x)=σ(wTx+w0)p(\mathcal{C}_1\mid\boldsymbol{x})=\sigma(\boldsymbol{w}^T\boldsymbol{x}+w_0)
其中我们定义了
w=Σ−1(μ1−μ2)w0=−12μ1TΣ−1μ1+12μ2TΣ−1μ2+lnp(C1)p(C2)\boldsymbol{w}=\boldsymbol{\Sigma}^{-1}(\boldsymbol{\mu}_1-\boldsymbol{\mu}_2) \\ w_{0}=-\frac{1}{2}\boldsymbol{\mu}_{1}^{T}\boldsymbol{\Sigma}^{-1}\boldsymbol{\mu}_{1}+\frac{1}{2}\boldsymbol{\mu}_{2}^{T}\boldsymbol{\Sigma}^{-1}\boldsymbol{\mu}_{2}+\operatorname{ln}\frac{p(\mathcal{C}_{1})}{p(\mathcal{C}_{2})}
我们看到,⾼斯概率密度的指数项中x的⼆次型消失了(这是因为我们假设类概率的协⽅差矩阵相同),从⽽得到了参数为 x 的线性函数的 logistic sigmoid 函数。
图4.10给出了⼆维输⼊空间x的情况下的结果。最终求得的决策边界对应于后验概率 p(Ck∣x)p(\mathcal{C}_k\mid\boldsymbol{x}) 为常数的决策⾯,因此由x的线性函数给出,从⽽决策边界在输⼊空间是线性的。
先验概率密度 p(Ck)p(\mathcal{C}_k) 只出现在偏置参数 w0w_0 中,因此先验的改变的效果是平移决策边界,即平移后验概率中的常数轮廓线。
K个类别的⼀般情形
对于K个类别的⼀般情形,根据和公式,我们有
ak(x)=wkTx+wk0a_k(\boldsymbol{x})=\boldsymbol{w}_k^T\boldsymbol{x}+w_{k0}
其中我们定义了
wk=Σ−1μkwk0=−12μkTΣ−1μk+lnp(Ck)w_k=\Sigma^{-1}\mu_k \\ w_{k0}=-\frac{1}{2}\boldsymbol{\mu}_k^T\boldsymbol{\Sigma}^{-1}\boldsymbol{\mu}_k+\ln p(\mathcal{C}_k)
我们看到 ak(x)a_k(\boldsymbol{x}) 与之前⼀样是 xx 的线性函数,这是因为各个类别的协⽅差矩阵相同,使得⼆次项被消去。最终的决策边界,对应于最⼩错误分类率,会出现在后验概率最⼤的两个概率相等的位置,因此由 xx 的线性函数定义,从⽽我们再次得到了⼀个⼀般的线性模型。
如果我们不假设各个类别的协⽅差矩阵相同,允许每个类条件概率密度 p(x∣Ck)p(\boldsymbol{x}|\mathcal{C}_{k}) 有⾃⼰的协⽅差矩阵 Σk\boldsymbol{\Sigma}_k,那么之前⼆次项消去的现象不会出现,从⽽我们会得到 x\boldsymbol{x} 的⼆次函数,这就引出了⼆次判别函数(quadratic discriminant)。
图4.11给出了线性决策边界和⼆次决策边界。
最大似然解
略
见 PRML 中文版 P114 - 115:4.2.2 最⼤似然解
离散输入
现在让我们考虑离散特征值 xix_i 的情形。为了简化起见, 我们⾸先考察⼆元特征值 xi∈{0,1}x_{i}\in\{0,1\},稍后会讨论如何推⼴到更⼀般的离散特征。
如果有 DD 个输⼊,那么⼀般的概率分布会对应于⼀个⼤⼩为 2D2^D 的表格,包含 2D−12^D-1 个独⽴变量(由于要满⾜加和限制)。
由于这会随着特征的数量指数增长,因此我们想寻找⼀个更加严格的表⽰⽅法。这⾥,我们做出朴素贝叶斯(naive Bayes)的假设,这个假设中,特征值被看成相互独⽴的,以类别 CkC_k 为条件。
因此我们得到类条件分布,形式为
p(x∣Ck)=∏i=1Dμkixi(1−μki)1−xip(\boldsymbol{x}|\mathcal{C}_{k}) =\prod_{i=1}^D \mu_{ki}^{x_i}(1-\mu_{ki})^{1-x_i}
其中对于每个类别,都有 DD 个独⽴的参数。代⼊公式,我们有
ak(x)=∑i=1D{xilnμki+(1−xi)ln(1−μki)}+lnp(Ck)a_k(\boldsymbol{x})=\sum\limits_{i=1}^D\{x_i\ln\mu_{ki}+(1-x_i)\ln(1-\mu_{ki})\}+\ln p(\mathcal{C}_k)
与之前⼀样,这是输⼊变量 xix_i 的线性函数。对于 K=2K = 2 个类别的情形,我们可以考虑另⼀种⽅法,即 logistic sigmoid 函数。离散变量也有类似的结果,其中,每个离散变量有 M>2M > 2 种状态。
★朴素贝叶斯分类器
估计后验概率主要困难:类条件概率是所有属性上的联合概率,难以从有限的训练样本估计获得。
朴素贝叶斯分类器(Naïve Bayes Classifier)采用了“属性条件独立性假设”(attribute conditional independence assumption):每个属性独立地对分类结果发生影响。
基于属性条件独立性假设,后验概率可重写为
P(c∣x)=P(c)P(x∣c)P(x)=P(c)P(x)∏i=1dP(xi∣c)\begin{aligned} P(c\mid\mathbf{x}) =\frac{P(c)P(\mathbf{x}\mid c)}{P(\mathbf{x})}=\frac{P(c)}{P(\mathbf{x})}\prod_{i=1}^dP(x_{i}\mid c) \end{aligned}
其中 dd 为属性数目, xix_i 为 xx 在第 ii 个属性上的取值。
由于对所有类别来说 P(x)P(x) 相同,基于贝叶斯判定准则有
hnb(x)=argmaxc∈yP(c)∏i=1dP(xi∣c)\begin{aligned} h_{nb}(\textbf{x}) = \underset{c\in y}{\operatorname{argmax}} P(c) \prod_{i=1}^d P(x_i\mid c) \end{aligned}
即对每个样本 xx, 选择能使后验概率最大的类别标记。
训练器的训练过程就是基于训练集估计类先验概率 P(c)P(c),并为每个属性估计条件概率 P(xi∣c)P(x_i|c)。
令 DcD_c 表示训练集 DD 中第 cc 类样本组合的集合,若有充足的独立同分布样本,则容易估计出类先验概率
P(c)=∣Dc∣DP(c) = \frac{|D_c|}{D}
令 Dc,xiD_{c,x_i} 表示 DcD_c 中在第 ii 个属性上取值为 xix_i 的样本组成的集合,则条件概率 P(xi∣c)P(x_i|c) 可估计为
P(xi∣c)=∣Dc,xi∣∣Dc∣P(x_i\mid c) = \frac{|D_{c,x_i}|}{|D_c|}
朴素贝叶斯分类器例题
例题1
例题2
5.5 分类的性能度量
对学习器的泛化能力进行评估
- 有效可行的实验评估方法
- 衡量模型泛化能力的评价标准
性能度量是衡量模型泛化能力的评价标准,反映了任务需求;使用不同的性能度量往往会导致不同的评判结果。
均方误差
在预测任务中,给定样例集 D={(x1,y1),(x2,y2),…,(xm,ym)}D=\{(\pmb{x}_{1},y_{1}),(\pmb{x}_{2},y_{2}),\ldots,(\pmb{x}_{m},y_{m})\} 评估学习器的性能 ff 也即把预测结果 f(x)f(\pmb{x}) 和真实标记比较.
回归任务最常用的性能度量是“均方误差”:
E(f;D)=1m∑i=1m(f(xi)−yi)2E(f;D)=\frac{1}{m}\sum\limits_{i=1}^m\left(f\left(\boldsymbol{x}_i\right)-y_i\right)^2
对于数据分布 D\mathcal{D} 和概率密度函数 p(⋅)p(\cdot),均方误差:
E(f;D)=∫x∼D(f(x)−y)2p(x)dxE(f;\mathcal{D})=\int_{\boldsymbol{x}\sim\mathcal{D}}\left(f\left(\boldsymbol{x}\right)-y\right)^2p(\boldsymbol{x})\mathrm{d}\boldsymbol{x}
错误率和精度
错误率:分错样本占样本总数的比例
精度: 分对样本占样本总数的比率
查准率和查全率
信息检索、Web搜索等场景中经常需要衡量正例被预测出来的比率或者预测出来的正例中正确的比率,此时查准率和查全率比错误率和精度更适合。
统计真实标记和预测结果的组合可以得到“混淆矩阵”
查准率 P=TPTP+FPP=\frac{TP}{TP+FP}:所有预测为正的样例中,真的正例所占比例
查全率 R=TPTP+FNR=\frac{TP}{TP+FN}:所有真实为正的样例中,真的正例所占比例
性能度量:P-R曲线
根据学习器的预测结果按正例可能性大小对样例进行排序,并逐个把样本作为正例进行预测,则可以得到查准率-查全率曲线,简称“P-R曲线”
平衡点是曲线上 “查准率=查全率” 时的取值,可用来用于度量P-R曲线有交叉的分类器性能高低。
性能度量:F1 度量
比P-R曲线平衡点更常用的是F1度量: