朴素贝叶斯

朴素贝叶斯的基本思想:对于给出的待分类项,在给出待分类项的条件下求出各个类别出现的概率,哪个类别的概率大,该分类项就属于该类别

算法描述:

(1) 设样本x=(a1,a2,...an) ai为特征的取值

(2) 类别集合C={c1,c3,...ck) 表示有k个类别

(3) 计算p(c1|x),p(c2|x),...p(ck|x)

(4) 如果P(ct|x)=max{p(c1|x),...,p(ck|x)},则x属于类别ct

 

如何求p(C|x)?

下面给出贝叶斯公式

         P(A|B)=P(AB)/P(B)=P(B|A)P(A)/P(B)

各个类别之间的相互独立的,所以

         P(ci|x)=P(x|ci)P(ci)/P(x)

         P(x|ci)P(ci)=P(ci)∑k=1 to nP(ak|ci)

由于P(x)对于每个类别都是相同的,所以只需求P(x|ci)P(ci)最大即可

 得贝叶斯分类表达式:

             h(x)=arg max P(ci)∑k=1 to nP(ak|ci)

需要注意的是 若某个特征值在训练集中没有与某个类同时出现过,因为某个p(ak|ci)=0 h(x)就会出现问题

所以需要对其进行平滑处理:

                      P(ci)=(|Dc|+1)/|D|+N 其中N表示类别数 |Dc|表示类别为c的样本数

                      P(ak|ci)=|Dc,ak|+1/|Dc|+Ni 其中Ni表示第i个特征的可能取值 |Dc,ak|表示特征值对应样本数

进而避免了P(ak|ci)=0的情况

 

posted @ 2017-05-04 20:05  semen  阅读(144)  评论(0编辑  收藏  举报