朴素贝叶斯

来源:互联网 发布:燕郊淘宝摄影棚 编辑:程序博客网 时间:2024/06/04 19:04

更好的阅读体验,点我移步到我的个人博客

朴素贝叶斯

贝叶斯定理

设\( X \)是代表一条数据,由\( n \)个属性构成;\( H \)为某种假设,如数据\( X \)属于某个特定的类\( C \)。\( P(H|X)\) 是在已知\( X \)的几个属性下,\( X \)属于某个类\( C \)的概率。贝叶斯定理如下:

P(H|X)=P(X|H)P(H)P(X)

其中,\( P(H|X)\)是在条件\(X\)下,\(H\)的后验概率,\( P(H)\)是\(H\)的先验概率。

朴素贝叶斯(Naive Bayesian)

  1. 设\(D\)是包含数据和其所属类的集合。每条数据由n维属性向量\(X = { x_1,x_2,\ldots,x_n}\)表示。
  2. 假设数据集\(D\)有m个类\( C_1,C_2,\ldots,C_m \),用朴素贝叶斯预测某一条数据\(X\)属于哪一类就变成了概率问题,即属于哪一类的概率最大。
    P(Ci|X)=P(X|Ci)P(Ci)P(X)

    由于\(P(X)\)对于所有类为常数,所以只需要求出最大的\(P(X|C_i)P(C_i)\)。
  3. 如果类的先验概率未知,通常假定属于哪个类是等概率的,即\(P(C_1)=P(C_2)=\cdots=P(C_m)\),否则可以用\(P(C_i)=|C_i|/|D|\)来估计。
  4. 在属性很多的情况下,计算\( P(X|C_i) \)的开销可能会非常大,为了降低开销,可以做类条件独立的朴素假定。因此有如下等式
    P(X|Ci)=k=1nP(xk|Ci)=p(x1|Ci)p(x2|Ci)p(xn|Ci)

    对于数据的每个属性\(X_k\),考察其值是离散的还是连续的。
    • 如果\(X_k\)是离散的,则\( P(x_i|C_k) \)为数据集\(D\)中属于\(C_i\)类且其\(X_k)属性值为\( x_k\)的数据的数量除以属于\(C_i\)类数据的数量。
    • 如果\(X_k\)是连续的,通常假定此连续的属性值是服从均值为\(\mu\),标准差为\( \sigma \)的高斯分布,由下式定义
      g(x,μ,σ)=12πσe(xμ)22σ2

      P(xk|Ci)=g(xk,μCi,σCi)

      其中\(\mu_{C_i}\)和\(\sigma_{C_i}\)是属于\(C_i\)类数据属性\(X_k\)均值和标准差。
  5. 对于每个类\(C_i\) 计算\( P(X|C_i)P(C_i) \)最后得出最大的\(C_i\)就是\(X\)的预测所属类

拉普拉斯校准

如果对类\(C_1\)的数据,其属性值\(x_1=1\)的数量为0,即某一项\(P(x_1|C_i)=0\),就会导致P(X|C_i)=0,不管其它后验概率\(P(x_{2\ldots n}|C_i)\)是多少。为了避免这种情况发生,使用拉普拉斯校准:

如果对q个计数都加上1,则必须记住在用于计算概率的对应分母上加上q。

例如:假设在某数据集\(D\)中,属于类\(C_1\)(有购买计算机行为)的数据有10000条,其中对于属性\(X_1\)(收入等级),收入低的数据有0条,收入中等的数据有8000条,收入高的数据有2000条。

不使用拉普拉斯校准的情况下,这些事件发生的概率为0,0.8,0.2。

使用拉普拉斯校准分别为\(\frac{0+1}{10000+3}\),\(\frac{8000+1}{10000+3}\),\(\frac{2000+1}{10000+3}\)。

校准后的概率与未校准的概率很接近,而且避免了0概率值。