zoukankan      html  css  js  c++  java
  • 【PRML读书笔记-Chapter1-Introduction】1.5 Decision Theory

    初体验:

    概率论为我们提供了一个衡量和控制不确定性的统一的框架,也就是说计算出了一大堆的概率。那么,如何根据这些计算出的概率得到较好的结果,就是决策论要做的事情。

    一个例子:

    文中举了一个例子:

    给定一个X射线图x,目标是如何判断这个病人是否得癌症(C1或C2).我们把它看作是一个二分类问题,根据bayes的概率理论模型,我们可以得到:

    NewImage

    因此,NewImage就是NewImage的先验概率;(假设Ck表示患病,那么NewImage就表示普通人患病的概率)

    NewImage则作为是后验概率。

    假设,我们的目标是:在给定一个x的情况下,我们希望最小化误分类的概率,因此,我们的直觉会告诉我们,应该选择后验概率较大的那一类作为我们最终的决策类。这就是决策理论。

    接下来,我们就来说说为什么这种直觉是正确的。

    最小化误分类概率(1.5.1 Minimizing the misclassification rate)

    假设我们的目标只是单纯的尽可能减小误分类的概率,对于二分类问题而言,我们需要建立起这么一种规则:将整个输入x划分成两个空间,这两个空间分别对应两个类。新的输入属于哪个区域,就属于哪一类。这两个区域我们把他叫做决策区域(decision regions)(属于同一类别的子区域可以不相连),这两个区域的边界就叫做决策边界(decision boundaries)

    为了找到最优的规则,我们可以表示出误分类的概率表达式:

    NewImage

    其中,Rk表示决策类别,Ck表示实际类别。

    因此,如果已知NewImageNewImage,那么,为了最小化NewImage,我们就应该决策出x属于C1。因为:

    假设我们决策x属于C1,那么NewImage=0,即NewImageNewImageNewImage

    同理,假设我们决策x属于C2,那么NewImage=0,即NewImageNewImageNewImageNewImage

    又因为NewImageNewImage大家都一样,因此,最小化误分类的概率的问题就转化成了哪一类的NewImage的值更大的问题。如下图所示:

    NewImage

    说明:如果把NewImage作为决策边界,那么

    X>NewImage,则决策为class2,X<NewImage,则决策为class1。

    主要看红色区域,显然,当X0<NewImage,可以发现,p(X,C2)>P(X,C1),但是,由于把NewImage作为边界,所以误分类的概率在上升,为了使得红色的区域面积最小,即达到最小的误分类概率,我们应该把决策边界置为x0,这样的话,可以使得红色区域的面积为0.

    对于多分类的问题,我们计算正确分类的概率p(correct)更为容易。

    NewImage

    最小化期望损失

    最小化误分类概率是一种相对简单的策略,我们经常会遇到更佳复杂的情况,这时候,我们需要采用一些其他策略去解决。

    还是刚才的判断是否患病的例子:如果一个健康的人,你给诊断有患病,那么,他可以通过接受更近一步的检查来确定是否是真的患病;但是,如果是一个病人,你给出的诊断是没病,那么,这样就很有可能由于你的误诊,错过了最佳的治疗的时间,最终导致严重的后果。因此,同样是误诊,但是他们付出的代价是不一样的(后者的代价显然会高于前者)。

    因此,为了反映这种情况,损失函数(loss function)的概念被提出来。更进一步地,我们引入了损失矩阵(loss matrix),其中每个元素NewImage表示当某样本真实类别为k,而被决策为j时带来的损失。

    NewImage

    患癌症的病人被误诊为健康所付出的代价为1000,而健康的人被误诊患癌症所付出的代价为1.

    所以呢,这次我们优化的目标就是最小化损失函数(loss function):

    NewImage

    参考:

    NewImage

    我们可以把上式改写为:

    NewImage

    NewImage

    NewImage

    又因为

    NewImage

    其中p(x)大家都一样,因此,最小化损失函数的问题转化为:

    最小化

    NewImage

     停止决策(阈值)

    给定一个输入x时,如果NewImage<θ或 NewImage<θ,则说明两类之间有点模棱两可(ambiguous).这种情况下,我们停止机器进行判定,进行人工判定。

    NewImage

    推理与决策

    目前为止,我们把分类问题分成了两个阶段:

    1、推理阶段(inference stage):利用训练集构建模型NewImage

    2、 决策阶段(decision stage):利用这些后验概率获取最优决策(分类结果)

    事实上,在解决决策问题的时候,有3种完全不同的思路:(复杂度由高到低):

    1、生成模型(generative models):对输入数据和输出数据进行建模,因此,我们可以根据模型生成一些新的输入数据点;

         a、首先对每一类都要计算一个NewImageNewImage

         b、计算后验概率:NewImageNewImage);

    特点:比较费劲,涉及到x和Ck的联合概率,但是,我们可以从中获取一些额外的信息;比如可以通过归一化得到$p(x)$,从而了解一个待测样本点是噪声点的可能性有多大(噪声检测)。

    2、判别模型(discriminative models.):

        a、对NewImage建模;

        b、直接指定输入x的类别;

    3、判别函数(discriminant function):

        就是一个映射函数,输入一个x,输出一个label。

    特点:直接,无需计算后验概率

     虽然说判别函数比较直接,无需计算后验概率,但是,计算后验概率还是很有必要的:

    1、最小化经验风险:如果说损失矩阵经常变动,

                   生成模型:只需适当的修改一下最小化风险决策指标(minimum risk decision criterion)即可;(NewImage);

                   判别函数:重新回到训练数据,重新跑一遍;

    2、停止决策(阈值):

                   后验概率可以通过设定阈值来最小化误分类概率

    3、对类别先验的补充:

                    如果在类极度不平衡的情况下,对导致模型的精度下降,影响最终结果。因此,我们想的是尽可能让类之间能够balance。因此,我们可以从人工构造的balance的数据集中获取后验概率,然后再乘以实际的先验。(这句我也不是很明白)(We can therefore simply take the posterior probabilities obtained from our artificially balanced data set and first divide by the class fractions in that data set and then multiply by the class fractions in the population to which we wish to apply the model. )

    4、合成模型:

                   对于复杂的应用,把大问题分解成为独立的小问题进行解决。例子:假设患病和x射线图以及血液信息有关。这样,我们可以对x射线图XI和血液信息XB分别进行建模,他们两两独立:

    NewImage

    NewImage

    对于判别模型和生成模型的区别,知乎上有个比较好的例子:

    假设你现在有一个分类问题,x是特征,y是类标记。用生成模型学习一个联合概率分布P(x,y),而用判别模型学习一个条件概率分布P(y|x)。
    用一个简单的例子来说明这个这个问题。假设x就是两个(1或2),y有两类(0或1),有如下如下样本(1,0)、(1,0)、(1,1)、(2,1)
    则学习到的联合概率分布(生成模型)如下:
    -------0------1----
    --1-- 1/2---- 1/4 
    --2-- 0 ------1/4
    而学习到的条件概率分布(判别模型)如下:
    -------0------1----
    --1-- 2/3--- 1/3 
    --2-- 0--- 1
    在实际分类问题中,判别模型可以直接用来判断特征的类别情况,而生成模型,需要加上贝耶斯法则,然后应用到分类中。但是,生成模型的概率分布可以还有其他应用,就是说生成模型更一般更普适。不过判别模型更直接,更简单。

    回归中的损失函数

    前面一直在讲分类问题,现在转到回归问题:

    分类和回归不清楚什么意思的可以参照一下说明:{

    分类和回归的区别在于输出变量的类型。

    定量输出称为回归,或者说是连续变量预测;
    定性输出称为分类,或者说是离散变量预测。

    举个例子:
    预测明天的气温是多少度,这是一个回归任务;
    预测明天是阴、晴还是雨,就是一个分类任务。

    决策阶段:选择一个合适的映射,使得y(x)=t

    NewImage

    如果把预测的结果和实际的结果的平方差来当作损失函数的话:

    NewImage

     NewImage

    我们的目标当然是最小化损失函数,也就是:minimizeE[L],,如果对y(x)求偏导数,即y(x)等于多少时,取得最小值(偏导数为0):

    NewImage

    转化为:

    NewImage

    如图所示:当x=x0时,它的分布为蓝线

    NewImage

    另外,还有一种不一样的方法也可以得到这个结果:式子可以写成这样:

    NewImage

    NewImage 

     为最小化上面这个损失函数,等式右侧第一项当$y(x)=E_t[t|x]$时取得最小值为零,而第二项则表示了期望意义下输入变量x的响应值t的波动情况(方差)。因为它仅与联合概率分布有关与$y(x)$无关,所以它表示了损失函数中无法约减的部分。

    与分类问题相似,回归问题也可以分为3种不同的方法(复杂度由高到低):

    1、联合分布:NewImage,归一化得条件分布,最后得到条件均值NewImage

    2、直接得到条件密度NewImage,然后再得到条件均值NewImage

    3、直接找到一个y(x)映射,x为训练集;

    当然,求平方差只是其中一种损失函数,而且很多时候也并不准确,优雅。所以,我们需要一些其他的误差函数。比如,明科夫斯基误差(Minkowski loss):

     NewImage

    NewImage 

    可以发现,它是更一般的形式,当q=2的时候就是平方损失。

    decision boundaries 

  • 相关阅读:
    Android-调用优酷SDK上传视频
    新浪微博客户端(16)-获得并显示用户昵称
    新浪微博客户端(15)-保存用户名和密码
    转:Java NIO系列教程(九) Pipe
    新浪微博客户端(14)-截取回调地址中的授权成功的请求标记,换取access_token
    iOS-AFN "Request failed: unacceptable content-type: text/plain"
    新浪微博客户端(13)-使用UIWebView加载OAuth授权界面
    iOS-(kCFStreamErrorDomainSSL, -9802)
    转:Java NIO系列教程(八) DatagramChannel
    转:Java NIO系列教程(七) Socket Channel
  • 原文地址:https://www.cnblogs.com/XBWer/p/4729860.html
Copyright © 2011-2022 走看看