机器学习中的朴素贝叶斯

朴素贝叶斯

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、优缺点

优点:

  • 朴素贝叶斯模型有稳定的分类效率。
  • 对小规模的数据表现很好,能处理多分类任务,适合增量式训练,尤其是数据量超出内存时,可以一批批的去增量训练。
  • 对缺失数据不太敏感,算法也比较简单,常用于文本分类。

缺点:

  • 需要知道先验概率,且先验概率很多时候取决于假设,假设的模型可以有很多种,因此在某些时候会由于假设的先验模型的原因导致预测效果不佳。
  • 对输入数据的表达形式很敏感(离散、连续,值极大极小之类的)。
相关推荐
小白狮ww10 分钟前
RStudio 教程:以抑郁量表测评数据分析为例
人工智能·算法·机器学习
沧海一粟青草喂马31 分钟前
抖音批量上传视频怎么弄?抖音矩阵账号管理的专业指南
大数据·人工智能·矩阵
demaichuandong33 分钟前
详细讲解锥齿轮丝杆升降机的加工制造工艺
人工智能·自动化·制造
理智的煎蛋1 小时前
CentOS/Ubuntu安装显卡驱动与GPU压力测试
大数据·人工智能·ubuntu·centos·gpu算力
知来者逆1 小时前
视觉语言模型应用开发——Qwen 2.5 VL模型视频理解与定位能力深度解析及实践指南
人工智能·语言模型·自然语言处理·音视频·视觉语言模型·qwen 2.5 vl
IT_陈寒1 小时前
Java性能优化:10个让你的Spring Boot应用提速300%的隐藏技巧
前端·人工智能·后端
Android出海1 小时前
Android 15重磅升级:16KB内存页机制详解与适配指南
android·人工智能·新媒体运营·产品运营·内容运营
cyyt1 小时前
深度学习周报(9.1~9.7)
人工智能·深度学习
聚客AI1 小时前
🌸万字解析:大规模语言模型(LLM)推理中的Prefill与Decode分离方案
人工智能·llm·掘金·日新计划
max5006001 小时前
图像处理:实现多图点重叠效果
开发语言·图像处理·人工智能·python·深度学习·音视频