朴素贝叶斯
1、概述+推导
先验概率:基于统计的概率,是基于以往历史经验和分析得到的结果,不需要依赖当前发生的条件。
后验概率:从条件概率而来,由因推果,基于当下发生的事件计算之后的概率,依赖于当前发生的条件。
条件概率:记事件A发生的概率为P(A),事件B发生的概率为P(B),则B事件发生的前提下,A事件发生的概率为P(A|B)。
P ( A ∣ B ) = P ( A B ) P ( B ) P(A|B)=\frac{P(AB)}{P(B)} P(A∣B)=P(B)P(AB)
贝叶斯公式就是基于条件概率通过P(B|A)来求解P(A|B):
P ( A ∣ B ) = P ( B ∣ A ) × P ( A ) P ( B ) P(A|B)=\frac{P(B|A)×P(A)}{P(B)} P(A∣B)=P(B)P(B∣A)×P(A)
而朴素贝叶斯就是假设事件(特征)之间没有联系,给定训练数据集,其中每个样本x都包括n维特征,也就是x={x1,x2,x3,...,xn},有k种类别即y={y1,y2,y3,...,yk},对于给定的样本,判断属于什么标记的类别,根据贝叶斯定理可以获得P(yk|x)
P ( y k ∣ x ) = P ( x ∣ y k ) × P ( y k ) ∑ k P ( x ∣ y k ) × P ( y k ) P(y_k|x)=\frac{P(x|y_k)×P(y_k)}{\sum_kP(x|y_k)×P(y_k)} P(yk∣x)=∑kP(x∣yk)×P(yk)P(x∣yk)×P(yk)
而朴素贝叶斯对条件概率分布做出了独立性的假设,所以每个特征相互独立,此时条件概率可以转化为:
P ( x ∣ y k ) = P ( x 1 , x 2 , . . . , x n ∣ y k ) = ∏ i = 1 n P ( x i ∣ y k ) P(x|y_k)=P(x_1,x_2,...,x_n|y_k)=\prod_{i=1}^{n}P(x_i|y_k) P(x∣yk)=P(x1,x2,...,xn∣yk)=i=1∏nP(xi∣yk)
将此式带入到上述的贝叶斯公式中得出:
P ( y k ∣ x ) = P ( y k ) × ∏ i = 1 n P ( x i ∣ y k ) ∑ k P ( y k ) × ∏ i = 1 n P ( x i ∣ y k ) P(y_k|x)=\frac{P(y_k)×\prod_{i=1}^{n}P(x_i|y_k)}{\sum_kP(y_k)×\prod_{i=1}^{n}P(x_i|y_k)} P(yk∣x)=∑kP(yk)×∏i=1nP(xi∣yk)P(yk)×∏i=1nP(xi∣yk)
适用范围:
- 特征之间是条件独立的情况下,否则分类效果不好,朴素就是指条件独立
- 主要被使用在文档分类中
常见模型:
- 高斯模型:处理特征是连续型变量的情况
- 多项式模型:最常见,要求特征是离散数据
- 伯努利模型:要求特征是离散的,且为布尔类型,即true和false,或者1和0
2、拉普拉斯平滑
主要是为了解决零概率的情况,所以在分子和分母分别加上一个数值,每个分量x的计数加一造成的概率变化几乎可以忽略不记,却可以有效的避免零概率事件。
P ( A ∣ B ) = N i + α N + α m α :拉普拉斯平滑系数,一般指定为 1 N i : A 中符合条件 B 的样本数量 N :符合条件 C 的所有样本数量 m :所有独立样本的总数 P(A|B)=\frac{N_i+α}{N+αm}\\ α:拉普拉斯平滑系数,一般指定为1\\ N_i:A中符合条件B的样本数量\\ N:符合条件C的所有样本数量\\ m:所有独立样本的总数 P(A∣B)=N+αmNi+αα:拉普拉斯平滑系数,一般指定为1Ni:A中符合条件B的样本数量N:符合条件C的所有样本数量m:所有独立样本的总数
3、相关api
导包:
from sklearn.naive_bayes import MultinomialNB
调用:
MultinomialNB(alpha = 1.0)
alpha:拉普拉斯平滑系数
4、优缺点
优点:
- 朴素贝叶斯模型有稳定的分类效率。
- 对小规模的数据表现很好,能处理多分类任务,适合增量式训练,尤其是数据量超出内存时,可以一批批的去增量训练。
- 对缺失数据不太敏感,算法也比较简单,常用于文本分类。
缺点:
- 需要知道先验概率,且先验概率很多时候取决于假设,假设的模型可以有很多种,因此在某些时候会由于假设的先验模型的原因导致预测效果不佳。
- 对输入数据的表达形式很敏感(离散、连续,值极大极小之类的)。