朴素贝叶斯的基本思想:对于给出的待分类项,在给出待分类项的条件下求出各个类别出现的概率,哪个类别的概率大,该分类项就属于该类别
算法描述:
(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的情况