决策论初探【日常笔记】

1. 决策论概念简介

概率论提供了一个自始至终的数学框架来量化和计算不确定性。当决策论与概率论结合的时候,我们能够在涉及到不确定性的情况下做出最优的决策。这在模式识别中经常遇到。

假设我们有一个输入向量x和对应的目标值向量t,我们的目标是对于一个新的x值,预测t。

  • 对于回归问题,t由连续变量组成
  • 而对于分类问题,t表示类别标签。

联合概率分布 p(x, t) 完整地总结了与这些变量相关的不确定性。从训练数据集中确定 p(x, t) 是推断(inference)问题的一个例子,并且通常是一个非常难的问题。在一个实际应用中,我们经常必须对 t 的值做出具体的预测,或者更一般地,根据我们对于 t 的可能取值的理解,采取一个具体的动作。这一方面就是决策论的主题。

例如,考虑一个医疗诊断问题。在这个问题中,我们给一个病人拍了X光片,我们想判断病人是否得了癌症。在这种情形下,输入向量x是X光片的像素的灰度值集合,输出变量t表示:

  • 病人患有癌症(记作类C1)
  • 或者不患癌症(记作类C2)

例如,我们可以选择t = 0表示类C1,选择t = 1表示类C2。

这样,一般的推断问题就变成了确定联合分布p(x, Ck),或者等价地p(x, t)。它给出了最完整的概率描述。并且我们希望这种选择在某些情况下是最优的。这是决策步骤,是决策论的主题,告诉我们在给定合适的概率的前提下,如何进行最优的决策

在给出一个更详细的分析之前,让我们首先非形式化地考虑一下概率论如何在做决策时起作用。当我们得到一个新病人的X光片x时,我们的目标是判断这个X光片属于两类中的哪一类。 我们感兴趣的是在给定这个图像的前提下,两个类的概率,即p(Ck | x)。使用贝叶斯定理,这些概率可以用下面的形式表示

如果我们的目标是最小化把x分到错误类别中的可能性,那么根据直觉,我们要选择有最大后验概率的类别。 

从上图中可以看到两个类别的联合概率分布 p(x,Ck) 与 x 的关系,以及决策边界 x = xˆ。

  • x ≥ xˆ 的值被分类为C2,因此属于决策区域R2
  • x < xˆ 的值被分类为C1,属于区域R1。

错误出现在蓝色、绿色和红色区域,

  • 对于 x < xˆ,错误的来源是将属于类别C2的点错分到类别C1(表示为红色区域与绿色区域的总和)
  • 对于 x ≥ xˆ 的点,错误的来源是将属于类别C1的点错分到类别C2(表示为蓝色区域)

当我们改变决策区域的位置 xˆ 时,绿色区域和蓝色区域的总面积是一个常数,而红色区域的面积发生改变。xˆ 的最优选择是 p(x, C1) 的曲线与 p(x, C2) 的曲线相交,对应于 xˆ = x0,因为此时红色区域消失。这等价于最小化错误分类率的决策规则,这个规则将 x 分配到具有最大的后验概率p(Ck | x)的区域中。

笔者注

在模式识别算法项目中,上面这种正负联合概率重叠的现象,其本质就是代表问题的数据本身线性不可分问题。不管模型通过数据驱动调参如何确定分界面,绿色部分和蓝色部分都是恒存在的,这就意味着不论如何调参,模型的训练误差是恒存在的。自然地,这样得到的模型,在面对新样本进行预测的时候,误差也是不可完全避免的。

训练数据本身存在的线性不可分问题,才是数据项目中真正需要重点关注的问题之一。可以这么说,ML本质是一个数学工具,不论是极大似然估计、最小误差估计、反向梯度传播算法,它们的核心目标都是帮我们找到上图中的 x0 分界面,即消除红色部分的误差问题。

但是影响我们模型泛化能力的主要原因,往往是绿色和蓝色部分,是由于数据本身的信息质量,以及特征工程的设计缺陷导致的

 

2. 最小化错误分类率 

假定我们的目标很简单,即尽可能少地作出错误分类。我们需要一个规则来把每个x的值分到一个合适的类别。这种规则将会把输入空间切分成不同的区域Rk ,这种区域被称为决策区域(decision region)

每个类别都有一个决策区域,区域Rk中的所有点都被分到Ck类。决策区域间的边界被叫做决策边界(decision boundary)或者决策面(decision surface)

注意,每一个决策区域未必是连续的,可以由若干个分离的区域组成。

为了找到最优的决策规则,首先考虑两类的情形,就像癌症问题的例子中那样。如果我们把属于C1类的输入向量分到了C2类(或者相反),那么我们就犯了预测错误。这种事情发生的概率为:

从技术上,我们可以随意选择把点 x 分到两类中的某一类的决策规则。但是很明显,为了最小化p(mistake), 我们对于x的分类结果应该让上式的被积函数尽量小。

因此,如果对于给定的x值,如果p(x, C1) > p(x, C2),那么我们就把x分到类别C1中。根据概率的乘积规则,我们 有p(x,Ck) = p(Ck | x)p(x)。由于因子p(x)对于两项都相同,因此我们可以这样表述:

如果我们把每个 x 分配到后验概率 p(Ck | x) 最大的类别中,那么我们分类错误的概率就会最小。

对于一元输入变量x的二分类问题,结果如下图所示。

 

3. 最小化期望损失 

对于许多应用,我们的目标要比单纯地最小化错误分类的数量更加复杂。让我们再次考虑医疗诊断的问题。我们注意到,如果已给没有患癌症的病人被错误地诊断为患病,结果可能给病 人带来一些压力,并且病人可能需要进一步确诊。相反,如果患癌症的病人被诊断为健康,结果可能会因为缺少治疗而使病人过早死亡。因此这两种错误的结果是相当不同的。很明显,对于第二种错误,我们最好少犯,甚至由于少犯第二种错误会导致第一种错误增加也没关系。

我们可以通过损失函数(loss function)来形式化地描述这个问题。损失函数也被称为代价函数(cost function),是对于所有可能的决策或者动作可能产生的损失的一种整体的度量。我们的目标是最小化整体的损失。

假设对于新的x的值,真实的类别为Ck,我们把x分类为Cj(其中j可能与k相等,也可能不相等)。这样做的结果是,我们会造成某种程度的损失,记作Lkj ,它可以看成损失矩阵(loss matrix)的第k, j个元素。

例如, 在癌症的例子中,我们可能有下图所示的损失矩阵。

这个特别的损失矩阵表明,如果我们做出了正确的决策,那么不会造成损失。如果健康人被诊断为患有癌症,那么损失为1。但是如果一 个患有癌症的病人被诊断为健康,那么损失为1000。

最优解是使损失函数最小的解。对于一个给定的输入向量x,我们对于真实类别的不确定性通过联合概率分布p(x, Ck)表示。因此,期望损失定义为:

每一个x可以被独立地分到决策区域Rj中。我们的目标是选择区域Rj,来最小化期望损失。这表明,对于每个x,我们要最小化 ∑Lkjp(x, Ck)。

我们可以使用乘积规则 p(x,Ck) = p(Ck | x)p(x)来消除共同因子p(x)。因此,最小化期望损失的决策规则是对于每个新的x,把它分到能使下式取得最小值的第 j 类:

 

4. 拒绝选项 

我们知道,在发生分类错误的输入空间中、或者遇到完全未知的新样本时(相比于训练集),后验概率p(Ck | x)通常远小于1。

在这些决策区域中,类别的归属相对不确定。对于这种困难的情况,避免做出决策可能是更合适的选择。这样会使得模型的分类错误率降低。这被称为拒绝选项(reject option)

例如,在我们假想的医疗例子中,一种合适的做法是,使用自动化的系统来对那些几乎没有疑问的X光片进行分类,然后把不容易分类的X光片留给人类的专家。

我们可以用这种方式来达到这个目的:引入一个阈值θ,拒绝后验概率p(Ck | x)的最大值小于等于θ的那些输入x。

下图说明了一元输入变量x的二分类问题的情形。

注意,令θ = 1会使所有的样本都被拒绝,而如果有K个类别,那么令θ < 1/K 将会确保没有样本被拒绝。因此被拒绝的样本比例由θ的值控制。

我们可以很容易地把拒绝准则推广到最小化期望损失的情形。那种情形下,我们已知一个损失矩阵,这个矩阵考虑了拒绝决策所带来的损失。 

 

5. 推断和决策 

我们已经把分类问题划分成了两个阶段:

  • 推断(inference)阶段
  • 决策(decision)阶段

在推断阶段,我们使用训练数据学习p(Ck | x)的模型。在接下来的决策阶段,我们使用这些后验概率来进行最优的分类。

另一种可能的方法是,同时解决两个问题,即简单地学习一个函数, 将输入x直接映射为决策。这样的函数被称为判别函数(discriminant function)。

事实上,我们可以区分出三种不同的方法来解决决策问题,这三种方法都已经在实际应用问题中被使用。 

0x1:决策问题的三种不同解决方法

1、生成式方法

首先对于每个类别Ck,独立地确定类条件密度p(x | Ck)。这是一个推断问题。然后,推断先验类概率p(Ck)。之后,使用贝叶斯定理:

求出后验类概率p(Ck | x)。和往常一样,贝叶斯定理的分母可以用分子中出现的项表示,因为:

等价地,我们可以直接对联合概率分布p(x, Ck)建模,然后归一化,得到后验概率。

得到后验概率之后,我们可以使用决策论来确定每个新的输入x的类别。

显式地或者隐式地对输入以及输出进行建模的方法被称为生成式模型(generative model),因为通过对生成式模型进行模拟采样(例如蒙特卡洛采样),可以用来人工生成出输入空间的数据点。 

2、判别式方法

首先解决确定后验类密度p(Ck | x)这一推断问题,接下来使用决策论来对新的输入x进行分类。这种直接对后验概率建模的方法被称为判别式模型(discriminative models)

3、判别函数方法

找到一个函数f(x),被称为判别函数。这个函数把每个输入x直接映射为类别标签。

例如,在二分类问题中,f(·)可能是一个二元的数值,

  • f = 0表示类别C1
  • f = 1表示类别C2

0x2:三种不同解决方法的优缺点

让我们考虑一下这三种方法的相对优势。方法(a)需要求解的东西最多,因为它涉及到寻找在xCk 上的联合概率分布。对于许多应用,x的维度很高,这会导致我们需要大量的训练数据才能在合理的精度下确定类条件概率密度。注意,先验概率p(Ck )经常能够根据训练数据集里的 每个类别的数据点所占的比例简单地估计出来。

但是,方法(a)的一个优点是,它能够通过公式

求出数据的边缘概率密度p(x)。这对于检测模型中具有低概率的新数据点很有用,对于这些点,模型的预测准确率可能会很低。这种技术被称为离群点检测(outlier detection)或者异常检测(novelty detection)。

然而,如果我们只想进行分类的决策,那么这种方法会浪费计算资源。并且,实际上我们只是想求出后验概率p(Ck | x)(可以直接通过方法(b)求出),但是为了求出它,这种方法需要大量的数据来寻找联合概率p(x, Ck )

事实上,类条件密度可能包含很多对于后验概率几乎没有影响的结构,如下图所示。

具有一元输入变量x的两个类别的类条件概率密度(左图)以及对应的后验概率密度(右图)。 注意,左图中,蓝色曲线表示类条件概率密度p(x | C1),它的峰值对于后验概率分布没有影响。右图中的垂直绿色直线表示给出最小误分类率的x的决策边界。我们假设先验概率分布p(C1 )p(C2 )是相等的

一种更简单的方法是方法(c)。这种方法中,我们使用训练数据来寻找将每个x直接映射为类别标签的判别函数f (x)

这样,我们就把推断阶段和决策阶段结合到一个学习问题中了。在上图给出的例子中,这对应于绿色竖直线给出的x的值,因为这是给出最小错误分类概率的决策边界。

但是,使用方法(c),我们不再能够接触到后验概率p(Ck | x),而是只能得到 0 or 1 的布尔判别结果

有很多强烈的理由需要计算后验概率,即使我们接下来要使用后验概率来进行决策。这些理由包括:

  • 最小化风险。考虑这样一个问题,问题中损失矩阵的元素时时刻刻都被修改(例如金融应用中可能出现的情况)。如果我们知道后验概率,我们只需要恰当地修改期望损失公式所定义的最小风险决策准则即可。如果我们只有一个判别准则,那么损失矩阵的任何改变都需要我们返回训练数据,重新解决分类问题。

  • 拒绝选项。如果给定被拒绝的数据点所占的比例,后验概率让我们能够确定最小化误分类率的拒绝标准,或者在更一般的情况下确定最小化期望损失的拒绝标准。

  • 补偿类先验概率。重新考虑我们的医疗X光问题。假定我们已经从普通人群中收集了大量 的X光片,用作训练数据,用来建立一个自动诊断系统。由于癌症在普通人群中是很少见的,我们可能发现1000个样本中只有一个对应癌症。如果我们使用这样的数据集来训练一 个模型,由于癌症类别所占的比例很小,我们会遇到很困难的问题。例如,一个将所有的点都判定为正常类别的分类器就已经能够达到99.9%的精度。避免这种平凡解是很困难的。并且,即使是一个大的数据集,只有很少的X光片对应着癌症,因此学习算法不会接收到很多这种X光片,因此不太可能具有很好的泛化性。一个平衡的数据集里,我们已经 从每个类别中选择了相等数量的样本,这让我们能够找到一个更加准确的模型。然而,我 们之后就必须补偿修改训练数据所造成的影响。假设我们已经使用这种修改后的数据,找 到了后验概率的模型。根据公式(1.82)的贝叶斯定理,我们看到后验概率正比于先验概率,而先验概率可以表示为每个类别的数据点所占的比例。因此我们可以把从人造的平衡数据中得到的后验概率除以数据集里的类比例,再乘以我们想要应用模型的目标人群中类别的比例即可。最后,我们需要归一化来保证新的后验概率之和等于1。注意,如果我们直接学习一个判别函数而不确定后验概率,这个步骤就无法进行。

    组合模型。对于复杂的应用来说,我们可能希望把问题分解成若干个小的子问题,每个子 问题都可以通过一个独立的模型解决。例如,在我们假想的医疗诊断问题中,我们可能有来自血液检查的数据,以及X光片。我们不把所有的这种同样类型的信息集中到一个巨大的输入空间中,而是建立一个系统来表示X光片而另一个系统来表示血液数据。这样做效率更高。只要两个模型都给出类别的后验概率,我们就能够使用概率的规则系统化地结合输出。

     

 

 
posted @ 2020-07-06 21:11  郑瀚Andrew  阅读(1017)  评论(0编辑  收藏  举报