基础模型
假设一个二元分类问题特征为X∈X⊂Rd,类别为Y∈{0,1},二元分类的目标是训练一个模型:f:X→0,1完成分类任务。因为输出是0和1,所以通常用示性函数表示f
f=I(b(X)>0)
称b(X)=0为这两个类别的边界。二元分类问题与二值回归有哲学上的不同,二值回归认为特征X不具有随机性,响应Y的随机性来源于随机误差,而二元分类问题中特征X与响应Y均是随机变量。
Bayes分类器
假设Y的先验为Ber(π1),特征的条件密度为X∣Y=1∼g1(x),X∣Y=0∼g0(x),记π0=1−π1。根据Bayes公式,Y的后验概率为
P(Y=1∣X)=P(X)P(Y=1,X)=π0g0(x)+π1g1(x)π1g1(x)P(Y=0∣X)=P(X)P(Y=0,X)=π0g0(x)+π1g1(x)π0g0(x)
分类问题一般使用0-1损失函数,所以
L(Y,f(X))=I(Y=f(X))
这个问题的EPE为
R(f)=EX,YL(Y,f(X))=EXEY∣X=xI(Y=f(X))
寻找f最小化这个函数就可以得到分类规则了。
均等成本
上一篇博文提到过,给定X=x时,最小化内层的条件期望即可
EY∣X=xI(Y=f(X))=EY∣X=x{I(Y=1,f(X)=0)+I(Y=0,f(X)=1)}=P(Y=1,f(X)=0∣X=x)+P(Y=0,f(X)=1∣X=x)=P(Y=1∣X=x)I(f(x)=0)+P(Y=0∣X=x)I(f(x)=1)≥min{P(Y=1∣X=x),P(Y=0∣X=x)}
注意到第三行等号这个表达式其实是个凸组合,所以有那个最小值,并且当且仅当f(x)=I(P(Y=1∣X=x)>P(Y=0∣X=x))取等。这个结果就给出了我们需要的分类规则,称其为Bayes分类器,它的边界为
b(x)=P(Y=1∣X=x)−P(Y=0∣X=x)=0
分类规则P(Y=1∣X=x)>P(Y=0∣X=x)还有其他几种等价形式。第一种等价形式:
P(Y=1∣X=x)>P(Y=0∣X=x)⟺π0g0(x)+π1g1(x)π1g1(x)>π0g0(x)+π1g1(x)π0g0(x)⟺g0(x)g1(x)>π1π0
第二种等价形式
P(Y=1∣X=x)>P(Y=0∣X=x)⟺P(Y=1∣X=x)>1−P(Y=1∣X=x)⟺P(Y=1∣X=x)>0.5
不等成本
在推导EY∣X=xI(Y=f(X))的时候,我们把I(Y=f(X))展开成了两项,I(Y=1,f(X)=0)和I(Y=0,f(X)=1)。这两项的含义是不同的,第一项的含义是把类别1错误地分到了类别0,第二项的含义是把类别0错误地分到了类别1,均等成本时这两项对损失的贡献是均等的,若考虑不等成本,可以假设这两项对损失的贡献分别为C(1,0)和C(0,1)。这两个系数可以理解成错误分类的成本,举一个非常直观的例子,如果要预测的1、0两个类别分别是股价上涨或者下跌,那么C(1,0)就代表错误地认为股价会下降造成的投资损失,C(0,1)就代表错误地认为股价会上升造成的投资损失。不等成本下的损失函数可以写成
L(Y,f(X))=C(1,0)I(Y=1,f(X)=0)+C(0,1)I(Y=0,f(X)=1)
最优化的目标也就变成了
EY∣X=xI(Y=f(X))=EY∣X=x{C(1,0)I(Y=1,f(X)=0)+C(0,1)I(Y=0,f(X)=1)}=C(1,0)P(Y=1,f(X)=0∣X=x)+C(0,1)P(Y=0,f(X)=1∣X=x)=C(1,0)P(Y=1∣X=x)I(f(x)=0)+C(0,1)P(Y=0∣X=x)I(f(x)=1)≥min{C(1,0)P(Y=1∣X=x),C(0,1)P(Y=0∣X=x)}
这个推导与上面的相比只是多了一个系数而已。由此可以得到不等成本下的Bayes分类器为
f(x)=I(C(1,0)P(Y=1∣X=x)>C(0,1)P(Y=0∣X=x))
对应的第一种等价的分类规则为
g0(x)g1(x)>π1C(1,0)π0C(0,1)
对应的第二种等价的分类规则
P(Y=1∣X=x)>C(0,1)+C(1,0)C(0,1)
这两个的推导太平凡了,就不展示了。从这个推导可以看出,要计算Bayes分类器是需要知道不同类别的特征的条件分布的,然而在实际问题中这个是未知的,所以Bayes分类器只能提供一个理论上的参考,如果分类模型在样本数足够大时泛化能力趋近于Bayes分类器,就认为这个模型是非常不错的(学名叫Fisher Consistency)。由于特征的条件分布未知,所以二分类模型都是在试图添加假设以避免使用特征的条件分布来构造分类规则。
线性概率模型
这是一个最简单,效果也很差的分类模型。在回归那个系列的博文里提到过线性概率模型,直接搬到这里来用
E(Y∣X=x)=P(Y=1∣X=x)=xTβ
根据Bayes分类规则,P(Y=1∣X=x)=xTβ>0.5就是类别1,所以线性分类器可以表示成
f(x)=I(xTβ>0.5)
边界为xTβ=0.5。与所有的线性回归模型一样,线性分类器对变量取值特别敏感。
线性分类器
线性分类器指的是分类边界是线性方程的那种分类器,常见的线性分类器包括线性概率模型、线性对数输赢比模型(LDA和Logistics回归)、分离超平面模型(感知器模型和SVM)。这里介绍线性对数输赢比模型,它的含义是输赢比的对数关于特征是一个线性函数:
lnP(Y=0∣X=x)P(Y=1∣X=x)=xTβ
简单解释一下为什么满足这个条件的模型是线性分类器。根据线性对数输赢比假设可以解得
P(Y=1∣X=x)=1+exp(xTβ)exp(xTβ)P(Y=0∣X=x)=1+exp(xTβ)exp1
根据Bayes分类规则,某个点被分到类别1的条件为
P(Y=1∣X=x)=1+exp(xTβ)exp(xTβ)>0.5⟺xTβ>0
因此分类边界为xTβ=0,即关于特征的线性函数。LDA通过其他假设得到线性对数输赢比的,Logistics回归直接用它作为假设。因为我回归那个系列的博文Logistics回归总结得比较详细,这里就不再重复了。
线性判别分析(LDA)
这个模型其实也是从多元统计分析那里拿过来的。假设X∣Yj∼N(μj,Σj),j=0,1,并且Σ0=Σ1=Σ。这个是一个非常强的假设,它的含义也是非常直观的,考虑二元正态分布,X平面上的等概率曲线的形状是椭圆,长半轴长和短半轴长是协方差矩阵的特征值,长轴和短轴的方向则由协方差的特征向量决定,因此相同协方差矩阵假设其实是说这两个类别的数据点分布在两个平移相等的等概率椭圆中,基于这个假设的LDA其实就是在判断一个新的数据点落在哪个椭圆的概率更大。关于Y的先验的假设不变,多元正态概率密度可以写成
f(x∣Yj)=(2π)−d/2∣Σ∣−1/2exp{−21(x−μj)TΣ−1(x−μj)}
因此Yj∣X=x的后验核为
πjexp{−21(x−μj)TΣ−1(x−μj)}
对数输赢比为
lnP(Y=0∣X=x)P(Y=1∣X=x)=lnπ0exp{−21(x−μ0)TΣ−1(x−μ0)}π1exp{−21(x−μ1)TΣ−1(x−μ1)}=lnπ0π1−21(μ0+μ1)TΣ−1(μ1−μ0)+xTΣ−1(μ1−μ0)
定义
β0=lnπ0π1−21(μ0+μ1)TΣ−1(μ1−μ0)β1=Σ−1(μ1−μ0)β=[β0, β1]T
假设x包含了常数项,对数输赢比就可以写成xTβ。在具体操作的时候要估计参数π0,π1,μ0,μ1,Σ,可以用MLE来估计。考虑X,Y的联合概率密度为
f(x,y)=π0(2π)−d/2∣Σ∣−1/2exp{−21(x−μ0)TΣ−1(x−μ0)}+π1(2π)−d/2∣Σ∣−1/2exp{−21(x−μ1)TΣ−1(x−μ1)}
根据这个来做MLE可以得到
π0^=nn0,π1^=nn1
其中n0,n1为两个类别的样本数,n=n0+n1,
μ^0=n0∑Yi=0xi,μ^1=n1∑Yi=1xiS^02=n0−11Yi=0∑(xi−μ^0)(xi−μ^0)TS^12=n1−11Yi=1∑(xi−μ^1)(xi−μ^1)TΣ^=n−2(n0−1)S^02+(n1−1)S^12
这些估计量均是无偏估计,关于这种多元分布参数估计和假设检验的问题可以关注一下我还没开始挖坑的多元统计分析。LDA是严格依赖正态和同协方差矩阵的假设的,如果假设不成立,LDA的表现就会很一般。
Logistics回归
直接假设线性对数输赢比,那么分类器的形式就有了,接下来操心参数怎么估计就好。事实上Y∣X=x∼Ber(1+exp(xTβ)exp(xTβ)),它的似然函数是
L(β)=i=1∏n(1+exp(xiTβ)exp(xiTβ))yi(1+exp(xiTβ)1)1−yil(β)=i=1∑n{yiln(1+exp(xiTβ)exp(xiTβ))+(1−yi)ln(1+exp(xiTβ)1)}=i=1∑n{yi(xiTβ)−ln(1+exp(xiTβ))}
据此求最大似然估计
∂β∂l(β)=i=1∑nxi(yi−1+exp(xiTβ)exp(xiTβ))=0
这个超越方程显然是没有解的,只能用数值方法找一个近似解,常规操作是Newton-Raphson算法求这个一阶条件的近似解,用Newton-Raphson算法解优化的一阶条件的方法又叫pure Newton,可以参考我还在施工中的数值分析系列。为了用这个算法还要求Hessian,
∂β2∂2l(β)=−i=1∑n(1+exp(xiTβ))2xixiTexp(xiTβ)
所以pure Newton的递推方程为
βnew=β+{i=1∑n(1+exp(xiTβ))2xixiTexp(xiTβ)}−1i=1∑nxi(yi−1+exp(xiTβ)exp(xiTβ))
定义几个符号,
pi=1+exp(xiTβ)exp(xiTβ)y=[y1,⋯,yn]T, p=[p1,⋯,pn]T, W=diag(pi(1−pi))X=[x1T;⋯;xnT]∈Rn×(d+1)
从而
i=1∑n(1+exp(xiTβ))2xixiTexp(xiTβ)=i=1∑nxixiTpi(1−pi)=XTWXi=1∑nxi(yi−1+exp(xiTβ)exp(xiTβ))=XT(y−p)
递推方程可以用矩阵表示出来
βnew=β+{XTWX}−1XT(y−p)={XTWX}−1(XTWX)β+{XTWX}−1XTWW−1(y−p)={XTWX}−1XTW{Xβ+W−1(y−p)}={XTWX}−1XTWz
其中z=Xβ+W−1(y−p),βnew可以看成是把z当成响应的WLS,
βnew=βargmin(z−Xβ)TW(z−Xβ)
迭代使用WLS直到与上一次迭代的β差异足够小时停止,这种方法叫IRLS(iterated reweighted least square),可以参考我还在施工中的回归那个系列的博文讲广义线性模型那一篇。相比LDA,Logistics回归需要的假设更弱,所以适用性比LDA要强。