朴素贝叶斯算法原理
朴素贝叶斯是一个基于贝叶斯定理和特征条件独立假设的分类方法,属于生成模型。
特征的条件独立假设指的是:假设训练集第$i$个样本$x_i$的$M$个特征${x_i}^{(1)},{x_i}^{(2)},…,{x_i}^{(M)}$彼此之间相互独立,基于条件独立假设,可以求出输入-输出的联合概率$P(x,y)$,然后对于新的输入$x_i$,利用贝叶斯定理求出后验概率$p(y_i|x_i)$,即该对象属于某一类的概率,然后选择具有最大后验概率的类作为该对象所属的类别。
1. 算法原理
给定训练集$T={(x_1,y_1),(x_2,y_2),…,(x_n,y_n)}$,我们可以知道分类结果$y_i$的种类,假设一共有K种,用$c_1,c_2,…,c_K$表示,则先验概率分布$p(y=c_k)$和$p(x=x_i|y=c_k)$是可以先求出来的, 我们的目标是求后验概率分布$p(y=c_k|x=x_i)$。
由条件概率公式可知:
由乘法公式:
由全概率公式:
从而得到贝叶斯定理:
根据特征条件独立假设,即假设样本中各个特征之间是相互独立的,则有:
得到后验概率的完整表达式:
公式1.6即是朴素贝叶斯分类的基本公式,当需要判定输入样本$x_i$的分类类别时,只需一次计算在样本$x_i$条件下$y_i$属于各类别$c_1,c_2,…,c_k$的条件概率$p(y=c_k|x=x_i),k=1,2,…,K$的大小,然后选择该条件概率最大的对应的类别作为预测的分类。
2. 算法实例
结合具体的实例来看一下朴素贝叶斯分类的应用过程。
在实际应用中$x=x_i$代表“具有某些特征”,$y=c_k$代表“属于某类别”,我们要求$p(y=c_k|x=x_i)$,即已知某个样本具有某些特征的条件下,求具有这些特征的样本数据各个类别的概率,即$p(“属于某类别”|“具有某些特征”)$,根据贝叶斯公式:
以常见的垃圾邮件识别为例,假设现在有10000封邮件,事先已经人为标记为“垃圾邮件”和“非垃圾邮件”两大类,其中“垃圾邮件”3000封,“非垃圾邮件”7000封,我们的任务是,基于这10000封邮件,运用朴素贝叶斯模型,预测新邮件是否为垃圾邮件。
第1步:分词
对训练集,即10000封邮件,每封邮件的内容进行分词,比如邮件内容“机器学习算法介绍”,分词后可能得到:“机器学习”,“算法”,“介绍”,分好的词按类别混合在一起,得到“词袋”。
第2步:统计
统计词袋中各个词在各个类别下出现的概率,比如统计3000封垃圾邮件中,“机器学习”这个词出现的概率:
其中$N_k$表示该类别中包含的总邮件文本数目,$N_{kj}$表示该类别中“机器学习”这个词的邮件文本数目。
第3步:预测
对于新邮件,对其进行分词后,建设得到M个词,word1,word2,…,wordM,则要计算:
和
由于分母是一样的,所以比较分子大的作为最终预测的分类。根据训练集,p(“垃圾邮件”)和p(“非垃圾邮件”)基于统计可以计算得到,而根据特征条件独立,有:
$p(”wordi“|”垃圾邮件“)$即各个特征词的条件概率,基于词袋统计也可以计算得到,从而代入公式2.3和2.4即可比较新邮件属于不同类别的概率大小。