和SVM、神经网络这些分类器一样,贝叶斯分类的基本思想也是通过设定一个“损失函数”,通过最小化损失函数来实现分类结果的最优。

1.贝叶斯分类中的损失函数是怎么定义的?

    首先,定义损失是将本属于的样本错误地分为带来的损失,且,因此对于N类分类问题,一个样本的期望损失为:

$$R(c_{i} \mid x) = \sum_{i=1}^N \lambda_{ij}P(c_{i} \mid x)$$

    假设,令, 如果每个样本的期望损失都能最小化,总体损失必然最小化,

$$arg min R(c_{i} \mid x)$$

    依照惯例我们进行转换,得出,即:

$$arg max P(c_{i} \mid x)$$

2.朴素贝叶斯

    在我们列出来目标函数后,该谈一谈贝叶斯分类器是如何进行计算的了。

    首先,给出条件概率、贝叶斯公式的定义:

    条件概率的含义是在B事件发生的基础上发生A事件的概率,即:

$$P(A \mid B) = \frac{P(AB)}{P(B)}$$

    而贝叶斯公式则指出了如何借助计算出,继而得出

$$P(B \mid A) = \frac{P(A \mid B)P(B)}{P(A)}$$

    我们在一个N类分类问题中,一个样本,被划分到各类的概率分别为, 。朴素贝叶斯的分类方法即取条件概率最大的作为分类结果。

    因此我们在进行分类时,将问题转为了如何计算条件概率, 由贝叶斯公式我们知道:

$$P(y_{i} \mid x) = \frac{P(x \mid y_{i})P(y_{i})}{P(x)}$$

    其中是“先验概率”,可以由大量的样本数据(训练集)直接给出;而对于所有的样本个体均相同,作为一个分母,我们可以直接当做一个“缩放因子”不予考虑;
    剩下要计算的就是,其由的各个属性关于的条件概率的联合概率决定,在假设的各个属性, 相互独立的情况下:

$$P(x \mid y_{i}) =\sum_{i=1}^m P(a_{i} \mid y_{i})$$

    上式可以直接通过训练集计算得出,以上便是朴素贝叶斯分类器的定义,但根据其定义不难得出朴素贝叶斯存在两处明显不足:
    一方面一旦属性可选的离散变量较多,样本空间会急遽增大(假设一共有10个属性,每个属性都是二值的,则有个样本属性变化范围),需要大量的训练集才能进行有效的分类。一旦某分类下的某一属性值未在样本中出现,即,由于我们在计算条件概率时是采用联合概率的乘积形式,于是计算出来的, 个体属性值的缺少会对抹去其它属性的价值。
    另一方面其适用于属性间相互独立的情景。

3.贝叶斯分类的改进

    针对于第一不足,我们可以引入Laplacian Correction,比如对于辨别某犬是否为阿拉斯加犬时,其中一个属性是眼球颜色,该选项共有3个可能,但在训练集中仅出现了其中两种,则对第三种眼球颜色,在计算其时,假定种类,则按照以往的计算方式有:

$$P(a_{i} \mid y_{i})=\frac{0}{10}=0$$

在经过修正后:

$$P(a_{i} \mid y_{i})=\frac{0+1}{10+3}=\frac{1}{13}$$

其中分子中的1为固定值,分母中的3对应三种可选眼球颜色。
    初此之外,将通过对联合概率取对数将“连乘”转换为“连加”的方式也能解决未出现属性值带来的“致命影响”(也能一定程度上解决浮点数下溢问题)。
    以上方法虽然能够一定程度上解决第一处不足,但样本属性空间的增加对样本数据的大量需求仍存在。

    针对于第二处不足,又提出了“半朴素贝叶斯”和“贝叶斯网络”。

Reference

  1. Zhihua Zhou Machine Learning