风险型决策的基本方法是将状态变量看成随机变量,用先验分布表示状态变量的概率分布,用期望值准则计算方案的满意程度。但是在日常生活中,先验分布往往存在误差,为了提高决策质量,需要通过市场调查来收集补充信息,对先验分布进行修正,然后用后验分布来决策,这就是贝叶斯决策。贝叶斯理论是决策领域的一个重要分支。

一、贝叶斯公式

举例说明如下:
前验概率: 一所学校里面有 60% 的男生,40% 的女生。男生总是穿长裤,女生则一半穿长裤一半穿裙子。有了这些信息之后我们可以容易地计算“随机选取一个学生,他(她)穿长裤的概率和穿裙子的概率是多大”,这个就是前面说的“先验概率”的计算。
后验概率: 假设你走在校园中,迎面走来一个穿长裤的学生(很不幸的是你高度近似,你只看得见他(她)穿的是否长裤,而无法确定他(她)的性别),你能够推断出他(她)是女生的概率是多大吗?这就是所谓的“后验概率”。

将上例转化为分类问题,则类别\(c\)={男,女},学生个体为样本\(x\),其中\(x\in X\),其中随机变量\(X\)是一维向量,只有唯一的属性:\(性别\)∈{长裤,裙子}

先验概率的计算:

\[P(pants)=60∗100+40∗50=80
\]

表示随机选取一个学生,他(她)穿长裤的概率的概率。
后验概率的计算:

\[P(girl∣pants)=P(穿长裤的女生/穿长裤的人)=\frac{P(girl,pants)}{P(pants)}=P(girl)∗\frac{P(pants∣girl)}{P(pants)}=40∗50÷80=25​
\]

表示一个穿长裤的学生是女生的概率。
其中在求解后验概率的公式中,我们用到了以下两个公式:

\[P(c∣x)=P(x,c)P(x)\quad P(c|x)=\frac{P(x,c)}{P(x)}→(后验公式)
\]

二、贝叶斯决策理论

贝叶斯决策论,基于概率和误判损失来选择最优的类别标记。本部分内容将从以下问题出发:
问题描述:对于样本xxx,有NNN种可能的类别标记,即类别空间y={c1,c2,⋯,cN}y=\{c_1,c_2,\cdots ,c_N\}y={c1​,c2​,⋯,cN​}
λij\lambda_{ij}λij​表示将一个真实标记为cjc_jcj​的样本误分类为cic_ici​所产生的损失。基于后验概率P(ci∣x)P(c_i|x)P(ci​∣x)(即对于给定样本,判断样本属于哪个分类,概率最大的那个类别是最可能正确的类别)可获得将样本xxx分类为cic_ici​所产生的期望损失,即在样本xxx上的“条件风险”:
R(ci∣x)=∑j=1NλijP(cj∣x)R(c_i|x)=\sum_{j=1}^{N}\lambda_{ij}P(c_j|x)R(ci​∣x)=j=1∑N​λij​P(cj​∣x)
我们训练模型的目的就是为了寻找一个映射函数h:x→yh:x\rightarrow yh:x→y以最小化总体风险:
R(h)=Ex[R(h(x)∣x)]R(h)=E_x[R(h(x)|x)]R(h)=Ex​[R(h(x)∣x)]
那么对于每个样本xxx,若h(x)h(x)h(x)能最小化条件风险R(h(x)∣x)R(h(x)|x)R(h(x)∣x),则总体风险R(h)R(h)R(h)也将被最小化。所以为了得到最小的总体风险,只需在每个样本上选择哪个能使条件风险R(c∣x)R(c|x)R(c∣x)最小的类别标记,即
h∗(x)=argminc∈yR(c∣x)h^*(x)=\underset{c \in y}{arg\ min}R(c|x)h∗(x)=c∈yargmin​R(c∣x)
其中h∗h*h∗称为贝叶斯最优分类器,与之对应的总体风险R(h∗)R(h*)R(h∗)称为贝叶斯风险。1−R(h∗)1-R(h^*)1−R(h∗)反映了分类器所能达到的最好性能,即通过机器学习所产生的模型精度的理论上限。
若R(c∣x)R(c|x)R(c∣x)是最小化分类错误率,则误判损失λij\lambda_{ij}λij​可表示为:
λij={0,i=j1,otherwise\lambda_{ij}=\begin{cases} 0, & i =j \\ 1 , & otherwise \end{cases}λij​={0,1,​i=jotherwise​
此时条件风险表示为:R(c∣x)=1−P(c∣x)R(c|x)=1-P(c|x)R(c∣x)=1−P(c∣x)
于是,最小化分类错误率的贝叶斯最优分类器为:
h∗(x)=argmaxc∈yP(c∣x)h^*(x)=\underset{c\in y}{arg \ max}P(c|x)h∗(x)=c∈yargmax​P(c∣x)
即对每个样本xxx,选择能使后验概率P(c∣x)P(c|x)P(c∣x)最大的类别标记。

【贝叶斯模型的解释】

以上内容已经对问题解释的很清楚了,如果想要对样本进行分类,我们需要得到最大的P(c∣x)P(c|x)P(c∣x),但是对于一般的情况下,直接求解,很难求出,所以一般借助贝叶斯定理,从侧面进行求解:
P(c∣x)=P(c)P(x∣c)P(x)P(c|x)=\frac{P(c)P(x|c)}{P(x)}P(c∣x)=P(x)P(c)P(x∣c)​
P(c∣x)P(c|x)P(c∣x)叫后验概率,也就是我们要计算的后验概率,知道样本,计算这个样本属于某个类别的概率,概率最大的那个类别是最可能正确的类别。
P(c)P(c)P(c)是类“先验”概率。
P(x∣c)P(x|c)P(x∣c)是条件概率,也就是在类别c的条件下,出现样本x的可能性。
对于每个样本xxx,其P(x)=x的样本数总样本数P(x)=\frac{x\text{的样本数}}{\text{总样本数}}P(x)=总样本数x的样本数​为很定的数值(在不考虑特征属性的情况下,如此表示),所以计算P(c∣x)P(c|x)P(c∣x)的难点在于求解P(x∣c)P(x|c)P(x∣c)或称之为“似然函数”。
求解类别ccc的类条件概率P(x∣c)P(x|c)P(x∣c)(似然函数)有两种方式实现:

  • 极大似然估计
  • 朴素贝叶斯分类器

三、后验概率的R计算

案例:采用西瓜数据集3.0进行举例

色泽 根蒂 敲声 纹理 脐部 触感 密度 含糖率 好瓜
青绿 蜷缩 浊响 清晰 凹陷 硬滑 0.697 0.46
乌黑 蜷缩 沉闷 清晰 凹陷 硬滑 0.774 0.376
乌黑 蜷缩 浊响 清晰 凹陷 硬滑 0.634 0.264
青绿 蜷缩 沉闷 清晰 凹陷 硬滑 0.608 0.318
浅白 蜷缩 浊响 清晰 凹陷 硬滑 0.556 0.215
青绿 稍蜷 浊响 清晰 稍凹 软粘 0.403 0.237
乌黑 稍蜷 浊响 稍糊 稍凹 软粘 0.481 0.149
乌黑 稍蜷 浊响 清晰 稍凹 硬滑 0.437 0.211
乌黑 稍蜷 沉闷 稍糊 稍凹 硬滑 0.666 0.091
青绿 硬挺 清脆 清晰 平坦 软粘 0.243 0.267
浅白 硬挺 清脆 模糊 平坦 硬滑 0.245 0.057
浅白 蜷缩 浊响 模糊 平坦 软粘 0.343 0.099
青绿 稍蜷 浊响 稍糊 凹陷 硬滑 0.639 0.161
浅白 稍蜷 沉闷 稍糊 凹陷 硬滑 0.657 0.198
乌黑 稍蜷 浊响 清晰 稍凹 软粘 0.36 0.37
浅白 蜷缩 浊响 模糊 平坦 硬滑 0.593 0.042
青绿 蜷缩 沉闷 稍糊 稍凹 硬滑 0.719 0.103

其中类先验概率\(P(c)\)为:

\[P(\text{好瓜=是})=\frac{8}{17}\approx0.471
\]

\[P(\text{好瓜=否})=\frac{9}{17}\approx0.529
\]

然后,每个属性的条件概率\(P(x_i|c)\):

\[P_\text{青绿|是}=P(\text{色泽=青绿|好瓜=是})=\frac{3}{8}=0.375
\]

\[P_\text{青绿|否}=P(\text{色泽=青绿|好瓜=否})=\frac{3}{9}=0.333
\]

\[P_\text{蜷缩|是}=P(\text{根蒂=蜷缩|好瓜=是})=\frac{5}{8}=0.625
\]

\[P_\text{蜷缩|否}=P(\text{根蒂=蜷缩|好瓜=否})=\frac{3}{9}=0.333P
\]

\[P_\text{浊响|是}=P(\text{敲声=浊响|好瓜=是})=\frac{6}{8}=0.750P
\]

\[P_\text{浊响|否}=P(\text{敲声=浊响|好瓜=否})=\frac{4}{9}=0.444
\]

\[P_\text{清晰|是}=P(\text{纹理=清晰|好瓜=是})=\frac{7}{8}=0.875
\]

\[P_\text{清晰|否}=P(\text{纹理=清晰|好瓜=否})=\frac{2}{9}=0.222
\]

\[P_\text{凹陷|是}=P(\text{脐部=凹陷|好瓜=是})=\frac{6}{8}=0.750
\]

\[P_\text{凹陷|否}=P(\text{脐部=凹陷|好瓜=否})=\frac{2}{9}=0.222
\]

\[P_\text{硬滑|是}=P(\text{触感=硬滑|好瓜=是})=\frac{6}{8}=0.750
\]

\[P_\text{硬滑|否}=P(\text{触感=硬滑|好瓜=否})=\frac{6}{9}=0.667
\]

\[p_{\text{密度:0.697|是}}=p(\text{密度=0.697|好瓜=是})=\frac{1}{\sqrt{2\pi}0.129}\exp\left(-\frac{(0.697-0.574)^2}{2\cdot 0.129^2}\right)\approx1.959
\]

\[p_{\text{密度:0.697|否}}=p(\text{密度=0.697|好瓜=否})=\frac{1}{\sqrt{2\pi}0.195}\exp\left(-\frac{(0.697-0.496)^2}{2\cdot 0.195^2}\right)\approx1.203
\]

\[p_{\text{含糖:0.460|是}}=p(\text{含糖率=0.460|好瓜=是})=\frac{1}{\sqrt{2\pi}0.101}\exp\left(-\frac{(0.460-0.279)^2}{2\cdot 0.101^2}\right)\approx0.788
\]

\[p_{\text{含糖:0.460|否}}=p(\text{含糖率=0.460|好瓜=否})=\frac{1}{\sqrt{2\pi}0.108}\exp\left(-\frac{(0.460-0.154)^2}{2\cdot 0.108^2}\right)\approx0.066
\]

于是,根据朴素贝叶斯公式可得:

\[P(\text{好瓜=是})\times P_\text{青绿|是} \times P_\text{蜷缩|是}\times P_\text{浊响|是}\times P_\text{清晰|是}\times P_\text{凹陷|是}\times P_\text{硬滑|是}\times p_{\text{密度:0.697|是}}\times p_{\text{含糖:0.460|是}}\approx0.063
\]

\[P(\text{好瓜=否})\times P_\text{青绿|否} \times P_\text{蜷缩|否}\times \text{浊响|否}\times P_\text{清晰|否}\times P_\text{凹陷|否}\times P_\text{硬滑|否}\times p_{\text{密度:0.697|否}}\times p_{\text{含糖:0.460|否}}\approx 6.80 \times10^{-5}
\]

由于\(0.063>6.80\times10^{-5}\),因此,预测结果为“好瓜”。

问题:
若某个属性值在训练集中没有与某个类同时出现过,则直接基于朴素贝叶斯进行估计,很有很能出现错误的估计:例如:对一个“敲声=清脆”的测试例,有

\[P(\text{清脆|是})=P(\text{敲声=清脆|好瓜=是})=\frac{0}{8}=0
\]



参考文献

风险型决策分析及其python实现
贝叶斯——朴素贝叶斯算法以及案例代码(Python版)