前言
这篇文章是这个系列的第三篇,论文还是与前两篇同一作者。前面我们主要讲了一些目标检测的方法,比如第一篇里我们总结了基于LRT、基于SNR和基于SA的三类方法,在第二篇中我们聚焦混合像素图像的目标检测问题,对一种经典的方法OSP进行改进。只有方法还不是全部,我们还需要了解,用什么指标去衡量这些方法的性能。在前两篇文章中,我们都提到了3D-ROC这个用来进行评估的工具,这一篇就来重点看看这个工具。如果只是想简单了解本文,可以只看思路部分。
思路
ROC的全名叫做Receiver Operating Characteristic,可以译为受试者操作特征,一般为表示在坐标系中的曲线。传统的ROC曲线横坐标是false positive rate(FPR),纵坐标是true positive rate(TPR)。
对某个分类器而言,我们可以根据其在测试样本上的表现得到一个TPR和FPR点对。这样,此分类器就可以映射成ROC平面上的一个点。调整这个分类器分类时候使用的阈值,我们就可以得到一个经过(0, 0),(1, 1)的曲线,这就是此分类器的ROC曲线。
处于ROC 曲线下方的那部分面积的大小被称为Area Under roc Curve(AUC),一般来说,较大的AUC代表了较好的性能。
上面我们对传统ROC曲线做了一个简单介绍,我们可以看到几个关键点:
(1)传统ROC是对特殊值描点所得,因此其最初是离散的,后面用了一些插值方法才使其变成连续的。
(2)传统ROC是一定过(0,0)(1,1)两个点的。
(3)传统ROC一般以AUC作为性能分析指标。
下面我们来看看高光谱目标检测问题中前人常用的ROC曲线是怎么得来的,这里的两个坐标轴变量分别是
P
D
P_D
PD(检测概率)和
P
F
P_F
PF(虚警概率),可以分别理解为实际有目标判决也为有目标的概率和实际无目标但判为有目标的概率。关于这两个概率的计算我们将在后面部分精讲,这里我们简要概括为:
由于目标检测可被抽象为二元假设检验问题,因此计算
P
D
P_D
PD和
P
F
P_F
PF需要获得有目标和无目标时的先验概率分布以及检测的阈值
τ
\tau
τ。
那么这里我们又能抽象出两个属于高光谱目标检测ROC的关键点:
(4)高光谱目标检测ROC在计算时需要先验知识;
(5)高光谱目标检测ROC是由
P
D
P_D
PD和
P
F
P_F
PF作图得来,且两个轴都需要由阈值
τ
\tau
τ计算而来。
那么我们来根据这几个关键点分别来看现有ROC曲线分析方法的弊端。
首先看关键点(4),我们在高光谱系列文章的(1)中提到过这个先验知识的问题,在真实世界中,两个假设的概率分布是无法获取的。因此我们必须找到一种方法去消除先验知识的影响。
接下来看关键点(1),现有的ROC进行离散变连续的操作主要是进行线性插值,这就导致ROC曲线通常为阶梯状曲线。但是实际的ROC曲线应当是非线性的而且是凸的,因此插值方法需要进行改进。
之后是关键点(2),一般来说ROC曲线是要过(0,0)和(1,1)两个点的,但实际上由于样本目标有限,因此其很难真正过这两个点。这时就需要对数据做归一化操作。在这里还涉及到阈值
τ
\tau
τ的选取的问题,一般来说有选择步长作为阈值和选择真实值作为阈值两种,现有方法一般都是采用前者且没有进行归一化,但是本文发现后者效果似乎更好。截止这里,作者都还是在对2D的ROC进行改进。
最后看关键点(5),由于
P
D
P_D
PD和
P
F
P_F
PF都是由阈值
τ
\tau
τ计算而来的,因此二者之间是有联系的,这也导致了关键点(3)中AUC判据的不准确,即在AUC很高时,
P
D
P_D
PD可以很低,
P
F
P_F
PF也可以很高。因此这里作者想到了将
P
D
P_D
PD和
P
F
P_F
PF分离开分别构造新的判据,这也就导致新的ROC曲线的产生。这里作者将阈值
τ
\tau
τ也加入进来放到曲线的坐标中,因此这时的坐标变为(
P
D
P_D
PD,
P
F
P_F
PF,
τ
\tau
τ),故称为3D-ROC。
有了3D-ROC曲线,那么新的评价指标就可以构建了,作者使用
A
U
C
(
D
,
F
)
AUC(D,F)
AUC(D,F)衡量检测效率,使用
A
U
C
(
D
,
τ
)
AUC(D,\tau)
AUC(D,τ)衡量目标检测能力,使用
A
U
C
(
D
,
τ
)
AUC(D,\tau)
AUC(D,τ)衡量背景抑制能力。还定义了JTDBS、OD、ODP、SNRP等几种指标去衡量性能。其中SNRP使用了信噪比的概念,效果最好。
ROC分析概述与存在问题
首先我们把目标检测问题抽象为一个二元假设检验问题:
p0表示无目标时概率分布,p1表示有目标时的概率分布。
这里我们可以构造如下优化问题作为构建检测器的目标:
这里的
β
\beta
β指的是显著性水平,通俗来讲即犯错概率。
之后为了推导出
P
D
P_D
PD和
P
F
P_F
PF,作者使用了Neyman–Pearson检测。
Neyman–Pearson检测首先有一个引理,这个引理简单来说就是在说明似然比检验是最优的,因此Neyman–Pearson检测实质上就是指似然比检验。
那么检测器就可以写作:
我们可以看到这个定义以阈值
τ
\tau
τ为界,当似然比
Λ
(
r
)
\Lambda(r)
Λ(r)大于阈值时,毫无疑问的判断为有目标;小于阈值时,毫无疑问的判断为无目标;等于阈值时,有概率
γ
\gamma
γ的可能性被判断为有目标。
Λ
(
r
)
=
p
1
(
r
)
p
0
(
r
)
\Lambda(r)=\frac{p_1(r)}{p_0(r)}
Λ(r)=p0(r)p1(r),阈值
τ
\tau
τ由约束(即显著性水平)
β
\beta
β确定,
γ
\gamma
γ可以表示为:
这样
P
D
P_D
PD和
P
F
P_F
PF就可以表示为:
τ
\tau
τ由
P
F
=
β
P_F=\beta
PF=β计算得来。
我们来看看
P
D
P_D
PD和
P
F
P_F
PF具体表示在概率密度分布曲线图中的含义:
这几个P的具体含义下表总结的很好:
将表和图结合来看,可以看出:
P
D
P_D
PD表示真实值为目标,实际上也被判为目标的概率;
P
F
P_F
PF表示真实值为背景,但实际上被判为目标的概率;
P
T
N
P_{TN}
PTN就是
1
−
P
F
1-P_F
1−PF,表示真实值为背景,实际上也被判为背景的概率;
P
M
P_{M}
PM就是
1
−
P
D
1-P_D
1−PD,表示真实值为目标,但实际上被判背景的概率。
我们回顾上面的过程,可以总结出一个关键点:
对于给定的
β
\beta
β,我们通过
P
F
P_F
PF的计算式找到阈值
τ
\tau
τ ,然后用
τ
\tau
τ进一步计算
P
D
P_D
PD。阈值
τ
\tau
τ可以通过设置
P
F
=
β
P_F=\beta
PF=β找到。
因此,这时,我们设置
β
\beta
β从0到1就可以得到一个ROC曲线:
拿到曲线我们就可以进行分析,可以首先发现这是一个凸函数。随后前人提出了一个用来衡量检测器性能的指标:曲线下方的面积AUC。AUC也被广泛应用于各个领域的性能评估。
但是我们注意到AUC也有问题,且看下图:
这两个检测器的ROC曲线显然不同,即对于给定的虚警概率
P
F
P_F
PF,其检测概率
P
D
P_D
PD不相同,但是他的AUC值相同。因此此时其实AUC不能全面的反应这个检测器的性能,所以后面作者提出了3D-ROC。
除了这个问题,我们回顾一下之前定义的一个 γ \gamma γ参数,这个参数表示在似然比等于阈值时被判断成有目标的概率,那么为什么要定义这个概率值,直接判断成有目标或者无目标不就可以了吗?下面说一下自己的理解。
这是因为,对于连续的概率密度函数
p
0
(
r
)
p_0(r)
p0(r)和
p
1
(
r
)
p_1(r)
p1(r),我们可以直接判断似然比等于这个阈值时无目标,因此那个概率参数就没有存在的必要了,可以直接让
γ
\gamma
γ为0。
但是如果概率密度函数是离散的,那么当似然比等于阈值是,不一定是有目标还是没有目标,因为这个值很有可能没有真实值能取到,因此就需要有一个大于0的
γ
\gamma
γ。而正是这个离散的概率密度分布和这个大于0的
γ
\gamma
γ,导致了生成的ROC曲线不是一个严格的凸函数,而是一个阶梯曲线(锯齿曲线)或者说来像步⻓爬升曲线,具体长成这样:
这种曲线被公认为是合理的、可以接受的,但是本文作者对其进行了一些修改,让它变得更光滑,更加像一个严格的凸函数。
对2D-ROC的改进
在实际问题中,我们的数据样本是有限的,因此寻找到其概率分布是不太现实的。因此以常⽤的做法是⽤阈值 τ \tau τ作为变量来计算 P D P_D PD和 P F P_F PF,这样每个 τ \tau τ就对应一组 ( P D , P F ) (P_D,P_F) (PD,PF),需要不断改变 τ \tau τ值取做ROC曲线。
因为我们未知概率分布,因此
p
0
(
r
)
p_0(r)
p0(r)和
p
1
(
r
)
p_1(r)
p1(r)都是未知的,我们也就不能简单的用似然比检验,因此改写检测器为:
其中,
τ
\tau
τ由步长或者数据样本真实值决定。
当然我们也可以让等于阈值
τ
\tau
τ时判断为无目标,即:
考虑之前设置的概率参数
γ
\gamma
γ,因此可以将检测器写为:
那么到了这里我们就需要来处理最关键的问题了,那就是如何建模阈值
τ
\tau
τ?
一般来说,阈值 τ \tau τ的获取共有两种手段,一种之前比较常用的方法是把 τ \tau τ在[0,1]上均分成等长的小段,然后用这些小段中的一个值代表这一段的所采用的阈值 τ \tau τ;另一种方法则是直接用真实数据样本归一化后的值作为不同的阈值 τ \tau τ。
我们先来看真实数据样本代入法。
这种使用样本真实值作为不同的阈值获取
τ
\tau
τ的方法最大的优点就在于更贴合真实的ROC曲线,因为一切数据都来自真实样本值,此外,这样的数据量也更大。
那么如何计算
P
D
P_D
PD和
P
F
P_F
PF呢?如下所示:
这几个n参数的定义如下所示:
以参数
n
D
,
τ
n_{D,\tau}
nD,τ为例,1)式表达的是,当以
τ
\tau
τ为阈值时,实际上是目标的像素被检测器判为1(即被判为是目标)且属于目标像素的像素数量。
因此
P
D
P_D
PD在这里的计算定义式实际上就意为当以
τ
\tau
τ为阈值时,实际上是目标的像素被检测器判为1(即被判为是目标)的像素占总共目标像素的比例,即检测概率。
P
F
P_F
PF同理。
这种情况下的ROC曲线实际上就是在找从
(
a
τ
=
0
,
b
τ
=
0
)
(a_{\tau=0},b_{\tau=0})
(aτ=0,bτ=0)到
(
a
τ
=
1
,
b
τ
=
1
)
(a_{\tau=1},b_{\tau=1})
(aτ=1,bτ=1)的一系列值。那么如果要想和之前一样对ROC计算AUC的话就需要对AUC进行归一化操作,具体为:
在图中表示即为:
接下来再看看步长法。
这种方法的核心思路就是把[0,1]分作K段,然后用K+1个点去实际表示这K段,其中初始点设为
τ
0
=
0
\tau_0=0
τ0=0,因此比K个点要多一个点。具体对应关系为:
一般来说我们进行分段时采用等分,即固定
Δ
\Delta
Δ值恒定,如
Δ
=
0.01
\Delta=0.01
Δ=0.01则表明由101个点作为取得的阈值用于生成ROC曲线。具体
P
D
P_D
PD和
P
F
P_F
PF的计算方式,和上面方法一致。
这种方式的优点是生成
τ
\tau
τ值简单而且它的样点可以从0到1均匀分布,不会出现在某一段特别集中的情况,但是这种方法生成的曲线不一定是真实的ROC曲线,因为这个
τ
\tau
τ值不一定属于数据样本中。
现在已经描完点了,于是我们来看看如何生成最终的ROC曲线。之前的方法大多数是直接进行线性插值,这样的结果是最后生成一些锯齿状的阶梯曲线;因此这里作者采用了凸插值,这样使得最后的结果更加平滑,更加贴近ROC曲线本来的类凸函数样貌。
文章这一部分的思路有些乱,上面我写的可能也有点乱,因此我们在这一部分的最后总结一下这一部分到底都干了什么事:
这一部分的改进主要就是聚焦两个参数,一个是 γ \gamma γ,另一个是 τ \tau τ。
这个 γ \gamma γ无时不刻提醒我们,ROC曲线的生成首先是离散的,且在阈值处究竟应该判为有目标还是无目标应该是依托于一个概率的,为了表现这个参数,文章改写了检测器的形式。
而这个 τ \tau τ则是生成ROC曲线的关键,2D的ROC曲线虽然没有直接将 τ \tau τ值体现在曲线中,但是其曲线却是通过不同的 τ \tau τ值描点插值得来的。因此这里给出了两种确定 τ \tau τ值的方法,一种是依托现有的数据样本,用一个个真实值算 P D P_D PD和 P F P_F PF作为关键点;另一种则是把 τ \tau τ值直接在[0,1]上等间隔采样,用一个个样点来算 P D P_D PD和 P F P_F PF作为关键点。二者比较得结论 是用真实值得效果更好。
最后来看文章中对这一部分流程的总结:
3D-ROC分析
我们通过前面得分析得知,
P
D
P_D
PD和
P
F
P_F
PF都是由
τ
\tau
τ计算得来的,因此二者在某种程度上是相似的,仅用这二者不能很全面的反应检测器的性能,因此,一个很自然的想法是,能不能直接用最原始的关系进行ROC分析,即以
τ
\tau
τ为自变量,
P
D
P_D
PD和
P
F
P_F
PF为因变量重新绘制ROC曲线,因此这里我们得到了
(
P
D
,
P
F
,
τ
)
(P_D,P_F,\tau)
(PD,PF,τ),这显然是三维的。
从这个三维ROC曲线中,我们又可以提取出三个二维的ROC曲线,分别是
(
P
D
,
P
F
)
(P_D,P_F)
(PD,PF),
(
P
D
,
τ
)
(P_D,\tau)
(PD,τ)和
(
P
F
,
τ
)
(P_F,\tau)
(PF,τ)。
那么这个生成过程也就自然而然地可以表示为:
简单来说,
(
P
D
,
P
F
)
(P_D,P_F)
(PD,PF)的AUC和
(
P
D
,
τ
)
(P_D,\tau)
(PD,τ)都是与检测性能成正相关的,即这两个指标越高,检测性能越好;而
(
P
F
,
τ
)
(P_F,\tau)
(PF,τ)的AUC则是直接和背景抑制性能挂钩,也就是说这个值越低,背景抑制的性能越好,因此也能表征好的检测性能,即这个指标与检测性能成负相关。
这三个值的具体分工为:
(
P
D
,
P
F
)
(P_D,P_F)
(PD,PF)用于表征联合假设H0和H1下检测器的有效性,唯有它可以同时处理两个假设H0和H1。
(
P
D
,
τ
)
(P_D,\tau)
(PD,τ)用于表征单一假设H1下的⽬标可探测性。
(
P
F
,
τ
)
(P_F,\tau)
(PF,τ)用于表征单一假设H0下的背景抑制性。
有了这三条二维的ROC曲线和其对应的AUC,我们可以重新定义新的性能衡量指标,如指标
A
U
C
O
D
AUC_{OD}
AUCOD如下:
这个公式不难理解,简单来说,因为
(
P
F
,
τ
)
(P_F,\tau)
(PF,τ)的AUC与检测性能负相关所以前面是负号,其余都是正相关因此为正号,这样一来这个指标就可以比较全面的衡量检测性能。
其他相关指标如下:
(1)目标可检测性TD:
(2)背景抑制性BS:
(3)联合背景抑制性与⽬标可探测性JTDBS:
这里一共提出了三种方式去共同考虑TD和BS。
第一种称为背景中的目标可检测性TD-BS:
由于
P
F
P_F
PF是由将噪声误检测为信号的概率引起的,因此可以从从
P
D
P_D
PD中减去该错误概率来衡量检测性能。
第二种称为整体检测概率ODP:
前半部分可以表示目标检测的准确性,后半部分可以表示背景检测的准确性,因此合起来可以表示整体检测的准确性。
第三种受到医学诊断的影响,被称作医学诊断概率MDP:
这个实际上和上面一样,只不过重新取了名字而已。
(4)信噪比概率SNRP:
这里就是借鉴了信噪比的概念,目标看作信息,背景看作噪声。作者还证实了,这个指标效果很好。
总结
这篇文章说实话作者写的有点乱,但是其实很多东西都不是核心,作者是为了让整个理论体系变得严谨而掺杂了一些额外的叙述。这篇文章的核心点其实就在于把 τ \tau τ引入了传统二维的ROC曲线,变成了一个三维的 ( P D , P F , τ ) (P_D,P_F,\tau) (PD,PF,τ)ROC曲线,然后又从这个三维ROC曲线中制定了一系列指标去做性能评判。所以其实即使是顶会论文,其思路往往也不是很复杂的。
更新:
评论区和私信问代码的比较多,所以把张教授实验室网站放在这里:
https://wiki.umbc.edu/display/rssipl
网站左侧栏有个Download选项,进去就可以下载代码