Simplestory's Blog

贝叶斯分类

Word count: 727Reading time: 3 min
2018/08/19

贝叶斯决策论考虑的是如何基于相关的概率和误判损失来选择最优的类别标记

假设有N种可能的类别标记,即\(\mathbf{y}=\\{c_1,c_2,...,c_N\\}\)\(\lambda_{ij}\)是将一个真实标记为\(c_j\)的样本误分类为\(c_i\)所产生的损失。基于后验概率\(P(c_i\vert\mathbf{x})\)可获得将样本\(\mathbf{x}\)分类为\(c_i\)所产生的期望损失,即在样本\(\mathbf{x}\)上的“条件风险”:

\[R(c_i\vert\mathbf{x})= \ \sum_{j=1}^N \lambda_{ij}P(c_j\vert\mathbf{x})\]

我们目的是寻找一个判定准则\(h: \ \mathbf{x} \mapsto \mathbf{y}\)以最小化总风险:

\[R(h)=E_{\mathbf{x}}[R(h(\mathbf{x})\vert\mathbf{x})]\]

由于对于每个样本\(\mathbf{x}\),若h能最小化条件风险\(R(h(\mathbf{x})\vert\mathbf{x})\),则总体风险\(R(h)\)也将被最小化,故有:

贝叶斯判定准则:

为最小化总体风险,只需在每个样本上选择那个能使条件风险\(R(c\vert\mathbf{x})\)最小的类别标记,即:

\[h^*(\mathbf{x})=argmin_{c\in\mathbf{y}} \ R(c\vert\mathbf{x})\]

此时\(h^*\)被称为贝叶斯最优分类器,与之对应的总体风险\(R(h^*)\)称为贝叶斯风险,\(1-R(h^*)\)反映了分类器所能达到的最好性能,即通过机器学习所能产生的模型精度的理论上限

朴素贝叶斯

朴素贝叶斯通过训练数据集学习联合概率分布\(P(X,Y)\),具体就是学习以下先验概率分布以及条件概率分布:

先验概率分布:\(\ P(Y=c_k), \ k=1,2,...,N\)

条件概率分布:\(\ P(X=x\vert Y=c_k)=P(X^{(1)}=x^{(1)},...,X^{(n)}=x^{(n)}\vert Y=c_k), \ k=1,2,...N\)

故有联合概率分布:\(P(X,Y)=P(Y=c_k)P(X=x\vert Y=c_k)\)

推导过程

朴素贝叶斯有一个重要假设,即条件独立性假设,即:

\[ \begin{aligned} P(X=x\vert Y=c_k) & =P(X^{(1)}=x^{(1)},...,X^{(n)}=x^{(n)}\vert Y=c_k) \\ & =\prod_{j=1}^n P(X^{(j)}=x^{(j)}\vert Y=c_k) \end{aligned} \tag{1} \]

由贝叶斯定理有后验概率:

\[P(Y=c_k\vert X=x)=\frac{P(X=x\vert Y=c_k)P(Y=c_k)}{\sum_k P(X=x\vert Y=c_k)P(Y=c_k)}\]

将(1)式代入上式有:

\[ \begin{aligned} & P(Y=c_k\vert X=x)=\frac{P(Y=c_k)\prod_j P(X^{(j)}=x^{(j)}\vert Y=c_k)}{\sum_k P(Y=c_k)\prod_j P(X^{(j)}=x^{(j)}\vert Y=c_k)} \\ & \text{其中} \ k=1,2,...,k \end{aligned} \tag{2} \]

则朴素贝叶斯分类器可表示为:

\[ y=f(x)=argmax_{c_k} \ \frac{P(Y=c_k)\prod_j P(X^{(j)}=x^{(j)}\vert Y=c_k)}{\sum_k P(Y=c_k)\prod_j P(X^{(j)}=x^{(j)}\vert Y=c_k)} \tag{3} \]

注意到在(3)式中,分母对所有\(c_k\)都是相同的,则有:

\[ y=argmax_{c_k} \ p(Y=c_k)\prod_j P(X^{(j)}=x^{(j)}\vert Y=c_k) \]

Scikit-learn应用

具体API参数查看官网:

sklearn.naive_bayes

致谢

周志华的西瓜书,李航的统计学习方法

CATALOG
  1. 1. 朴素贝叶斯
    1. 1.1. 推导过程
    2. 1.2. Scikit-learn应用
  2. 2. 致谢