上一节学习了决策表,这一节我们在只有两类情况的决策表中继续深入研究。假设现在我们有两类状态分别是阳性阴性。可以绘制出如下的决策表:

截至《模式识别(第三版)》阳性阴性状态与决策的可能性关系

 这里,真阳性(True Positive,简记TP,后同)和真阴性是正确的分类,错误分类则是假阳性和假阴性两种情况。相应的就只有两种错误率分别是:假阳性率(假阳性样本占总阳性样本的比例)、假阴性样本(假阴性样本占总阴性样本的比例)

在评价一种检测方法时,经常用的两个概念是灵敏度(sensitivity)和特异度(specificity)。可以用如下公式表示灵敏度Sn和特异度Sp:

Sn=\frac{TP}{TP+FN}

Sp=\frac{TN}{TN+FP}

注意:上面公式用到的符号表示的不是风险,而是样本个数。

从公式很容易看出,Sn表示在真正的阳性样本中决策出真阳性的比例;Sp表示在真正的阴性样本中决策出真阴性的比例。通俗点就是它们分别表示了所研究的方法能够把阳性样本正确识别出来的能力和阴性样本正确判断出来的能力。在医学应用的情景下,一种诊断方法灵敏度高表示它能把有病的人都正确诊断出来,而特异性高则表示它不易把无病的人误诊为有病。

灵敏度和特异度是一对矛盾,如果某种方法把所有来检测的人(N)都说成是有病,此时得出的结果是:TP+FP=NTN+FN=0 。那么它不会错过任何一个真正的病人,所以灵敏度是100%;但却把所有健康人误诊为有病,则特异性为0% 。相反,如果把所有人都诊断为无病,那么他自然就不会误诊,特异性就为100% 。

在统计学种,假阳性被称作第一类错误;假阴性被称作第二类错误。第一类错误率(假阳性率)用\alpha表示,指真实的阴性样本中被错误判断为阳性的比例;第二类错误率(假阴性率)用\beta表示,指真实的阳性样本中被错误判断为阴性的比例。细心的同学会发现,灵敏度其实可以叫做真阳性率,特异度可以叫做真阴性率。显然,我们有

Sn=1-\beta

Sp=1-\alpha

那么到底哪个是阳性哪个是阴性,全靠研究者自己来定。对于相同问题,不同人的第一类错误率可能会不同。

有时候,我们希望在保证一类错误率为一个固定值的情况下确保另一项错误率尽可能低,这就是Neyman-Pearson决策。举个医院的例子:癌症早期不易被检查出来,但却是治疗癌症的最佳时期,因此应要求尽量把所有的阳性检测出来,所以应确保真阳性率尽可能高,即灵敏度达到99.9%(第二类错误率、假阴性率为0.1%),在次前提下再追求误将把无病诊断为有病的概率,即第一类错误率低、真阴性率(特异度)高。假设如下情况:

w_1:类别为阴性

w_2:类别为阳性

第一类错误率(假阳性率):P_1(e)=\int _{R_2}p(\vec{x}|w_1)d\vec{x}

第二类错误率(假阴性率):P_2(e)=\int _{R_1}p(\vec{x}|w_2)d\vec{x}

根据要求可以列出如下式子:

minP_1(e)\\ s.t.P_2(e)-\varepsilon _0=0

上式就是所谓“固定一类错误率,使另一类错误率尽可能小”的决策。(Neyman-Pearson 决策)

解决这个问题需要应用拉格朗日乘子法。很多小伙伴包括我自己在一看到拉格朗日乘子法就吓出一身冷汗,因为完全不知道这个方法是怎么用的。不需要惊慌,这里提供另一位博主写的有关这个方法简单易懂的拉格朗日乘子法解释。看完之后肯定会茅塞顿开!

利用拉格朗日乘子法把上式的有约束条件转化为下面这个无约束条件问题:

minL(\vec{x},\lambda)=P_1(e)+\lambda (P_2(e)-\varepsilon _0)

假设我们现在只讨论两类情况,分别有两个决策区域R_1R_2。两个决策区域之间有一x个边界称作决策边界或决策面,如果样本\vec{x}只有一个特性,那么边界就是一个点t。参考下面这张图、

有这样一个性质:\int _{R_2}p(x|w_1)dx=1-\int_{R_1}p(x|w1)dx 

可以得到:

P_1(e)+\lambda (P_2(e)-\varepsilon _0)\\ =\int_{R_2}p(x|w1)dx+\lambda[\int_{R_1}p(x|w_2)dx-\varepsilon _0]\\ =(1-\lambda \varepsilon_0)+\int_{R_1}[\lambda p(x|w_2)-p(x|w_1)]dx

上式分别对x\lambda求偏导置0得到下列式子联立:

\begin{cases} \lambda=\frac{p(x|w_1)}{p(x|w_2)]}\\ \int _{R_1}p(x|w_2)dx=\varepsilon_0 \end{cases}

对上式求解可以得到我们期望的边界t。其实将上式的第一个式子写为:\lambda=\frac{p(t|w_1)}{p(t|w_2)]}会更好理解,所求的得\lambda是一个阈值。

要使minL(\vec{x},\lambda)达到最小,应让\int_{R_1}[\lambda p(x|w_2)-p(x|w_1)]dx内积分项全为负值(否则可以通过把非负的区域划出R_1使L(\vec{x},\lambda)更小),因此如果决策R_1应该是所有使\lambda p(x|w_2)-p(x|w_1)<0,成立的x组成的区域。所以,决策规则是:

l(x)=\frac{p(x|w_1)}{p(x|w_2)}>\lambda,则x\in w_1;反之x\in w_2


我第一次学完之后感觉有一点迷糊不知道到底在求什么。现在我们总结一下整体的过程,让思路更加明了。

紧跟时事的举个例子。我们得到了一个核酸检测的样本,得到了一组数据\vec{x}用于决策患者是新冠阳性还是阴性。为了尽量不漏掉一个新冠患者,我们要让第二类错误率(假阴性率)尽量的小。同时,也保持第一类错误率在一个低水平。这样就得到式子:

minP_1(e)\\ s.t.P_2(e)-\varepsilon _0=0

 用拉格朗日乘子法解出阳性和阴性的分界线t,那么就可以通过比较样本\vec{x}和分界线t来决策应当将样本\vec{x}决策为阳性还是阴性啦!具体怎么求解这个分界线,就是看上面的过程了。


在实践中,很多情况下(高维度)很难求得\lambda,需要用到数值方法求解。可以用最小错误率贝叶斯决策中的似然比密度函数来确定\lambda值。已知似然比为l(x)=\frac{p(\vec{x}|w_1)}{p(\vec{x}|w_2)},那么我们定义似然比密度函数为p(l|w_2)

这个似然比密度函数是个什么东西曾经纠结了我很久,怕有些小伙伴也在这里思考很久,这里详细讲一下。

l(x)=\frac{p(\vec{x}|w_1)}{p(\vec{x}|w_2)}>\lambda=\frac{p(w_2)}{p(w_1)}, 则\vec{x}\in w_1

上面是似然比的用处,即当l\in(0,\lambda)时将样本决策为w_1类,这里很好理解。那么p(l|w_2)意思就是在已知\vec{x}\in w_2的情况下似然比l(\vec{x})的分布。为了更好理解下面这个公式

\int ^\lambda _0 p(l|w_2)dl=Sn

可以画图理解:

 上图可以清晰看到似然比密度函数p(l|w_2)l=\lambda分为黄、灰两块区域。黄色区域代表的是l<\lambda的情况,此时会将样本x决策为w_2类。什么意思?就是说我们正确的将一个w_2的样本决策为了w_2类!!用我们刚学完的知识(如果w_2代表阳性),\int ^\lambda _0 p(l|w_2)dl就是灵敏度(真阳性率呀)。

 那么我们就可以得出:

P_2(e)=1-\int ^\lambda _0 p(l|w_2)dl

由于p(l|w_2)\geqslant 0P_2(e)是关于\lambda的单调递减函数。因此只需要不断改变\lambda的值,就可以寻找到一个合适的\lambda值,使得它刚好能满足P_2(e)=\varepsilon的条件,又使P_1(e)尽可能小!


已经介绍了三种分类决策方法了,那么如何评价一个决策方法呢?这就用到ROC曲线啦。

 ROC区线很坐标是假阳性率、纵坐标是真阳性率。直接记为真、假阳性率很好理解ROC图。在远点处代表的意思是将所有样本都分到了阴性类别中;同理,右上角的点指所有样本都被规为了阳性。那么这个曲线是如何绘制的呢?

以最小错误率贝叶斯决策为例。我们可以将决策写成:

若 l(x)=\frac{p(\vec{x}|w_1)}{p(\vec{x}|w_2)}>\lambda =\frac{P(w_2)}{P(w_1)},则x \in w_1;反之x\in w_2

\lambda就是似然比阈值,我们通过不断改变似然比阈值\lambda计算出决策边界t。(我的理解是计算\frac{p(\vec{x}|w_1)}{p(\vec{x}|w_2)}=\lambda得到\vec{x^*}=\mathbf{t})再利用边界t计算错误率

P_1(e)=\int _{R_2}p(\vec{x}|w_1)d\vec{x}

P_2(e)=\int _{R_1}p(\vec{x}|w_2)d\vec{x}

计算得到一组真阳性率和假阳性率。

 以此不断改变\lambda,得到连续的一条曲线便是ROC曲线。

为了方便比较ROC曲线,可以用曲线下的(相对)面积(AUC)来定量地衡量方法的性能。AUC最大为1,就是整个正方形的面积。AUC越大,越接近于1,方法的性能越好。

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐