NBM 算法【python,算法,机器学习】

朴素贝叶斯法(Naive Bayes model)是基于贝叶斯定理与特征条件独立假设的分类方法。

贝叶斯定理

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)

其中A表示分类,B表示属性,因此此公式更通俗的表述如下:
P ( 分类 ∣ 属性 ) = P ( 属性 ∣ 分类 ) ∗ P ( 分类 ) P ( 属性 ) P(分类|属性)=\frac{P(属性|分类) * P(分类)}{P(属性)} P(分类∣属性)=P(属性)P(属性∣分类)∗P(分类)

即在已知属性B的前提下,分类为A的概率等于似然率(已知分类中属性B的概率)乘以先验概率(分类A的概率)除以证据概率(属性B的概率)。

优点

  1. 对于大量数据的预测靠谱。
  2. 计算简便。

缺点

  1. 属性之间必须独立。
  2. 选取没有相互干涉的属性是难点。

举例:在夏季,某公园男性穿凉鞋的概率为 1/2 ,女性穿凉鞋的概率为 2/3 ,

并且该公园中男女比例通常为 2:1 ,问题:若你在公园中随机遇到一个穿凉鞋的人,

请问他的性别为男性或女性的概率分别为多少?

P(男|穿凉鞋)=P(穿凉鞋|男)P(男)/P(穿凉鞋)
= 1/2 * 2/3 / (2/3 * 1/2 + 1/3
2/3)

= 1/3 / (1/3+2/9)

= 3/5

P(女|穿凉鞋)=P(穿凉鞋|女)P(女)/P(穿凉鞋)
= 2/3 * 1/3 / (2/3 * 1/2 + 1/3
2/3)

= 2/9 / (1/3+2/9)

= 2/9 * 9/5

= 2/5

所以在公园里,随机遇到一个穿凉鞋的人,性别为女男的概率是 3/5,性别为女的概率为 2/5。

怎样避免0概率问题

使用拉普拉斯修正,修改公式如下:
P ^ ( C = c j ) = N ( c j ) + 1 N + C \hat{P}(C=c_j)=\frac{N(c_j)+1}{N+C} P^(C=cj)=N+CN(cj)+1

上式表示 c j c_j cj分类的概率,其中 C 表示分类数量,N 表示所有的数量。
P ^ ( x i ∣ C = c j ) = N ( x i ∣ C = c j ) + 1 N + X \hat{P}(x_i|C=c_j)=\frac{N(x_i|C=c_j)+1}{N+X} P^(xi∣C=cj)=N+XN(xi∣C=cj)+1

上式表示特定 x i x_i xi属性中类 c j c_j cj的概率,其中 X 表示属性数量。

高斯朴素贝叶斯分类器

  1. 高斯分布
    P ( x i ∣ μ , σ ) = 1 ( 2 π σ 2 ) 1 2 ∗ e − ( x i − μ ) 2 2 σ 2 P(x_i|\mu,\sigma)=\frac{1}{(2\pi \sigma^2)^{\frac{1}{2}}} * e^{-\frac{(x_i-\mu)^2}{2\sigma^2}} P(xi∣μ,σ)=(2πσ2)211∗e−2σ2(xi−μ)2
    其中 μ = 1 N ∑ i = 1 N x i \mu=\frac{1}{N}\sum\limits_{i=1}^{N}x_i μ=N1i=1∑Nxi表示样本的期望, σ 2 = 1 N ∑ i = 1 N ( x i − μ ) 2 \sigma^2=\frac{1}{N}\sum\limits_{i=1}^{N}(x_i-\mu)^2 σ2=N1i=1∑N(xi−μ)2表示样本的方差。
    如果要使用无偏差估计,N 取 N+1。
  2. 如果特征值服从高斯分布,那么根据特征值估计分类概率的公式如下:
    P ^ ( x i ∣ C = c i ) = 1 ( 2 π σ i j 2 ) 1 2 ∗ e − ( x i − μ i j ) 2 2 σ i j 2 \hat{P}(x_i|C=c_i)=\frac{1}{(2\pi \sigma_{ij}^2)^{\frac{1}{2}}} * e^{-\frac{(x_i-\mu{ij})^2}{2\sigma_{ij}^2}} P^(xi∣C=ci)=(2πσij2)211∗e−2σij2(xi−μij)2
    其中 μ i j \mu_{ij} μij表示分类为 c i c_i ci时,属性 x j x_j xj的期望,
    σ i j 2 \sigma_{ij}^2 σij2表示分了为 c i c_i ci时,属性 x j x_j xj的方差。
相关推荐
网易独家音乐人Mike Zhou2 小时前
【卡尔曼滤波】数据预测Prediction观测器的理论推导及应用 C语言、Python实现(Kalman Filter)
c语言·python·单片机·物联网·算法·嵌入式·iot
安静读书2 小时前
Python解析视频FPS(帧率)、分辨率信息
python·opencv·音视频
小二·4 小时前
java基础面试题笔记(基础篇)
java·笔记·python
小喵要摸鱼5 小时前
Python 神经网络项目常用语法
python
Swift社区6 小时前
LeetCode - #139 单词拆分
算法·leetcode·职场和发展
Kent_J_Truman6 小时前
greater<>() 、less<>()及运算符 < 重载在排序和堆中的使用
算法
一念之坤6 小时前
零基础学Python之数据结构 -- 01篇
数据结构·python
IT 青年7 小时前
数据结构 (1)基本概念和术语
数据结构·算法
wxl7812277 小时前
如何使用本地大模型做数据分析
python·数据挖掘·数据分析·代码解释器
NoneCoder7 小时前
Python入门(12)--数据处理
开发语言·python