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的方差。
相关推荐
古希腊掌管学习的神1 小时前
[机器学习]XGBoost(3)——确定树的结构
人工智能·机器学习
梧桐树04293 小时前
python常用内建模块:collections
python
Dream_Snowar3 小时前
速通Python 第三节
开发语言·python
海棠AI实验室3 小时前
AI的进阶之路:从机器学习到深度学习的演变(一)
人工智能·深度学习·机器学习
XH华4 小时前
初识C语言之二维数组(下)
c语言·算法
南宫生4 小时前
力扣-图论-17【算法学习day.67】
java·学习·算法·leetcode·图论
不想当程序猿_4 小时前
【蓝桥杯每日一题】求和——前缀和
算法·前缀和·蓝桥杯
IT古董4 小时前
【机器学习】机器学习的基本分类-强化学习-策略梯度(Policy Gradient,PG)
人工智能·机器学习·分类
落魄君子4 小时前
GA-BP分类-遗传算法(Genetic Algorithm)和反向传播算法(Backpropagation)
算法·分类·数据挖掘
菜鸡中的奋斗鸡→挣扎鸡4 小时前
滑动窗口 + 算法复习
数据结构·算法