读书笔记---Naive Bayes

来源:互联网 发布:excel2007去重复数据 编辑:程序博客网 时间:2024/06/03 09:51

读书笔记—Naive Bayes

  依然是《统计学习方法》的读书笔记。
  朴素贝叶斯是一种基于贝叶斯定理和特征之间条件独立(这是一个较强的条件)假设的分类模型。与KNN不同,它仅用于特征为标称型数据的分类(如果硬是要把连续型数据转换成离散作为特征。。也可以吧),是一个基于统计的概率模型。

1.模型描述

  朴素贝叶斯有一个特征之间条件独立的假设,虽然这是一个较强的条件,但是在许多情况下都还是适用的。朴素贝叶斯的cost function用的是数据类别的后验概率,这个后验概率我们可以通过贝叶斯定理得到:

P(Y|X⃗ )=P(X⃗ |Y)P(Y)P(X⃗ )

  由于加了特征条件独立的假设,P(X⃗ |Y)就可以简单地拆成P(X⃗ |Y)=P(x1|Y)P(x2|Y)...P(xn|Y)。而后面这一串连乘可以从训练数据中统计得到(平率估计概率)。而在这个后验概率公式中,其分母是一个归一化项而已,因此我们仅需要考虑分子即可。
  这个模型一定程度上可以说是模型数据生成的过程(不过通过特征条件独立假设大大简化了生成的过程),因此被称之为生成模型(generative model)。
  为了应用这个模型,我们要从训练集中得到的信息(即训练过程)是P(X⃗ |Y)P(Y),换句话说就是学到X⃗ Y的联合概率分布P(X⃗ ,Y)。我们得到这些信息的做法就是通过统计训练集中出现每个特征xiy的出现频率,在模型实现时,要统计并维护一个S×K的似然值矩阵(每个特征s在类别k中出现的频率)和一个K×1的先验值向量(每个类别k出现的频率)。

  因此,得到了cost function,也就是后验概率分布后(这是一个离散分布),我们从直觉的角度想就是要最大化这个后验概率分布,即:
f(Y)=argmaxYP(Y|X⃗ )argmaxYP(X⃗ |Y)P(Y)

这样我们就估计出了特征为X⃗ 的测试数据最可能属于的类别了。
  从形式上看直接从似然函数P(X⃗ |Y)估计Y也是可以的,即统计出每个Y生成各个特征的概率(会形成一个矩阵),那么生成这个目标数据的似然函数即为P(X⃗ |Y)=Ki=1P(xi|Y),然后Y的取值范围里选的能使P(X⃗ |Y)最大那个Y即可,但可以看出,这样的做法丢失了P(Y)的信息,相比后验概率更不靠谱。

2.模型优化

(1)计算优化

  在实际应用中,我们统计得到概率P(X⃗ |Y)P(Y)后,不是直接将其相乘得到后验分布,而是计算

logP(Y|X⃗ )=logP(X⃗ |Y)+logP(Y)=i=1KlogP(xi|Y)+logP(Y)

  使用log值有一下两个优点:

1) log是单调增函数,不会改变原函数的单调性。当概率过小的时候,使用log值可以防止由于小数太小造成的计算机数据下溢问题(太接近0,被截断)。
2) 使用log将乘法转换成加法,可以提高计算机运行效率。

(2)数据平滑

  当我们用极大似然估计得到概率值时,若出现了0概率,不论计算log还是直接计算后验概率,都会出现问题。比如log(0)就不能求;而后验计算时,若其中一项是0,那么由于后验是将所有概率相乘,也就变成0了,而事实是该似然值只是出现概率很低。所以需要对0概率进行平滑。
  平滑的本质是在数据中加入一些伪计数(pseudo count),使统计时那些为0的项变成一个相对较小的非0项,但又保证整体概率分布基本不变。最常见的是在每个统计项上加入一个常数值,比如对于似然值:

Pλ(Xi=ail|Y=Ck)=Nj=1I(X(j)i=ail,Y(j)=Ck)+λNj=1I(Y(j)=Ck)+Siλ

  其中λ是平滑系数;k=1,2,...,K代表类别;j=1,2,...,N代表训练集中的数据点;l=1,2,...,Si代表特征i的可能取值;Xi=ail表示测试集数据中的特征i取值为l;Ni=1I(X(j)i=ajl|Yi=Ck)是统计训练集中类别Y=Ck,特征Xail的数据的出现次数;Si是测试数据中特征j取值的个数。上式用l=1,2,...,Si遍历所有特征,得到这个特征Xi关于取值的分布,因此对于每个特征都有这样的一个分布,而我们此时要做的是在所有特征值上的平滑,当λ=1时,被称之为拉普拉斯平滑。
  另外,对于先验P(Y),也有类似的平滑:
Pλ(Y=Ck)=Nj=1I(Y(j)=Ck)+λN+Kλ

0 0
原创粉丝点击