NLP | 朴素贝叶斯法的学习与分类

article/2025/7/19 20:12:56

朴素贝叶斯法的学习与分类

《统计学习方法》李航第四章

1、概述

书上对朴素贝叶斯的描述如下:

朴素贝叶斯法时基于贝叶斯定理与特征条件独立假设的分类方法。对于给定的训练数据集,首先基于特征条件独立假设学习输入/输出的联合概率分布;然后基于此模型,对给定的输入x,利用贝叶斯定理求出后验概率最大的输出y。

其实目的就是要得到最大的 P ( Y ∣ X ) P(Y|X) P(YX)。根据先验概率 P ( X ) P(X) P(X)和求出的输出Y和输入特征X之间的联合概率分布 P ( X , Y ) P(X,Y) P(X,Y),进而计算出 P ( Y ∣ X ) = P ( X , Y ) P ( X ) P(Y|X)=\frac{P(X,Y)}{P(X)} P(YX)=P(X)P(X,Y).是生成模型。

2、先验概率、后验概率和条件概率

书中描述提到了后验概率,要先弄清楚什么是后验概率。
先验概率:指根据以往的经验和分析,在实验或采样前就可以得到的概率。
后验概率:指某件事已经发生,计算这件事发生的原因时由某个因素引起的概率。

书中关于朴素贝叶斯的数学描述如下:
在这里插入图片描述
这里提到了条件概率
条件概率:在给定事件B发生的条件下,事件A发生的概率,记为 P ( A ∣ B ) P(A|B) P(AB),有 P ( A ∣ B ) = P ( A B ) P ( B ) P(A|B)= \frac{P(AB)}{P(B)} P(AB)=P(B)P(AB)
查看书中给出的条件概率的计算公式,发现可以按照刚刚的后验概率来理解,即 P ( X = x ∣ Y = c k ) P(X=x | Y=c_k) P(X=xY=ck)其实求的就是: Y = c k Y=c_k Y=ck这件事已经发生,计算这件事发生是由 X = x X=x X=x引起的概率,记为 P ( X = x ∣ Y = c k ) P(X=x | Y=c_k) P(X=xY=ck).但是书中为什么说是条件概率而不是后验概率呢?
查询可知,其实后验概率就是一种条件概率,但是与其它条件概率的不同之处在于,它限定了目标事件为隐变量取值,而其中的条件为观测结果。一般的条件概率,条件和事件都可以是任意的。也就是说,后验概率其实是限制了关注点的条件概率,重点关注目标事件,是一个执果索因的过程。

3、条件独立性假设

朴素贝叶斯法对条件概率分布作了条件独立性假设,由于这是一个较强的假设,朴素贝叶斯法也由此得名,具体的,条件独立性假设是:
P ( X = x ∣ Y = c k ) = P ( X ( 1 ) = x ( 1 ) , . . . , X ( n ) = x ( n ) ∣ Y = c k ) = ∏ j = 1 n P ( X ( j ) = x ( j ) ∣ Y = c k ) P(X=x| Y=c_k)=P(X^{(1)}=x^{(1)},...,X^{(n)}=x^{(n)} | Y=c_k) \\ =\prod \limits^n_{j=1}P(X^{(j)}=x^{(j)} | Y=c_k) P(X=xY=ck)=P(X(1)=x(1),...,X(n)=x(n)Y=ck)=j=1nP(X(j)=x(j)Y=ck)
条件独立假设等于是说用于分类的特征在类确定的条件下都是条件独立的。属于生成模型。

4、朴素贝叶斯分类器

朴素贝叶斯分类时,对给定的输入x,通过学习得到的模型计算后验概率分布 P ( Y = c k ∣ X = x ) P(Y=c_k | X=x) P(Y=ckX=x),将后验概率最大的类作为x的类输出。即:
P ( Y = c k ∣ X = x ) = P ( X = x ∣ Y = c k ) P ( Y = c k ) ∑ k P ( X = x ∣ Y = c k ) P ( Y = c k ) = P ( Y = c k ) ∏ j P ( X ( j ) = x ( j ) ∣ Y = c k ) ∑ k P ( Y = c k ) ∏ j P ( X ( j ) = x ( j ) ∣ Y = c k ) P(Y=c_k|X=x)=\frac{P(X=x|Y=c_k)P(Y=c_k)}{\sum_kP(X=x|Y=c_k)P(Y=c_k)} \\ =\frac{P(Y=c_k) \prod_jP(X^{(j)}=x^{(j)}|Y=c_k)}{\sum_kP(Y=c_k)\prod_jP(X^{(j)}=x^{(j)}|Y=c_k)} P(Y=ckX=x)=kP(X=xY=ck)P(Y=ck)P(X=xY=ck)P(Y=ck)=kP(Y=ck)jP(X(j)=x(j)Y=ck)P(Y=ck)jP(X(j)=x(j)Y=ck)

因为求最大且对于所有 c k c_k ck分母都是相同的,
所以:
y = a r g max ⁡ c k P ( Y = c k ) ∏ j P ( X ( j ) = x ( j ) ∣ Y = c k ) y=arg \max \limits_{c_k}P(Y=c_k) \prod_jP(X^{(j)}=x^{(j)}|Y=c_k) y=argckmaxP(Y=ck)jP(X(j)=x(j)Y=ck)

5、算法流程

利用朴素贝叶斯分类器分类的大致流程可以理解为以下过程:
已知
假设分类的模型样本是 ( x 1 ( 1 ) , x 2 ( 1 ) , . . . , x n ( 1 ) , y 1 ) , ( x 1 ( 2 ) , x 2 ( 2 ) , . . . , x n ( 2 ) , y 2 ) , . . . ( x 1 ( m ) , x 2 ( m ) , . . . , x n ( m ) , y m ) (x_1^{(1)},x_2^{(1)},...,x_n^{(1)},y_1),(x_1^{(2)},x_2^{(2)},...,x_n^{(2)},y_2),...(x_1^{(m)},x_2^{(m)},...,x_n^{(m)},y_m) (x1(1),x2(1),...,xn(1),y1),(x1(2),x2(2),...,xn(2),y2),...(x1(m),x2(m),...,xn(m),ym)
即我们有m个样本,每个样本有n个特征,输出特征有K个类别,定义为 C 1 , C 2 , . . . , C k C_1,C_2,...,C_k C1,C2,...,Ck.

中间推导

  • 根据朴素贝叶斯模型的基本原理,要得出最大的 P ( Y = c k ∣ X = x ) P(Y=c_k|X=x) P(Y=ckX=x),就需要计算先验概率 P ( Y = c k ) P(Y=c_k) P(Y=ck)和联合概率分布 P ( X , Y = c k ) P(X,Y=c_k) P(X,Y=ck).

  • 而从样本通过极大似然估计很容易得知先验概率 P ( Y = c k ) P(Y=c_k) P(Y=ck)和条件概率分布 P ( X = x ∣ Y = c k ) = P ( X 1 = x 1 , X 2 = x 2 , . . . , X n = x n ∣ Y = c k ) P(X=x|Y=c_k)=P(X_1=x1,X_2=x_2,...,X_n=x_n|Y=c_k) P(X=xY=ck)=P(X1=x1X2=x2,...,Xn=xnY=ck)
    先验概率 P ( Y = c k ) P(Y=c_k) P(Y=ck)的极大似然估计是:
    P ( Y = c k ) = ∑ i = 1 N I ( y i = c k ) N P(Y=c_k)=\frac{\sum_{i=1}^NI(y_i=c_k)}{N} P(Y=ck)=Ni=1NI(yi=ck)(其实就是 Y = c k Y=c_k Y=ck在训练集分类中出现的占比)
    设第 j j j个特征 x ( j ) x^{(j)} x(j)可能取值的集合为 a j 1 , a j 2 , . . . , a j S j a_{j1},a_{j2},...,a_{jS_j} aj1,aj2,...,ajSj,条件概率 P ( X ( j ) = a j l ∣ Y = c k ) P(X^{(j)}=a_{jl}|Y=c_k) P(X(j)=ajlY=ck)的极大似然估计是 P ( X ( j ) = a j l ∣ Y = c k ) = ∑ i = 1 N I ( x i ( j ) = a j l , y i = c k ) ∑ i = 1 N I ( y i = c k ) P(X^{(j)}=a_{jl}|Y=c_k)=\frac{\sum_{i=1}^NI(x_i^{(j)}=a_{jl},y_i=c_k)}{\sum_{i=1}^NI(y_i=c_k)} P(X(j)=ajlY=ck)=i=1NI(yi=ck)i=1NI(xi(j)=ajl,yi=ck)

  • 因此可以求得联合概率分布 P ( X , Y = c k ) = P ( Y = c k ) P ( X = x ∣ Y = c k ) = P ( Y = c k ) P ( X 1 = x 1 , X 2 = x 2 , . . . , X n = x n ∣ Y = c k ) = P ( Y = c k ) ∏ j = 1 n P ( X j = x j ∣ Y = c k ) P(X,Y=c_k)=P(Y=c_k)P(X=x|Y=c_k)\\=P(Y=c_k)P(X_1=x_1,X_2=x_2,...,X_n=x_n|Y=c_k)\\= P(Y=c_k)\prod_{j=1}^nP(X_j=x_j|Y=c_k) P(X,Y=ck)=P(Y=ck)P(X=xY=ck)=P(Y=ck)P(X1=x1,X2=x2,...,Xn=xnY=ck)=P(Y=ck)j=1nP(Xj=xjY=ck).

结果
求出 y = a r g max ⁡ c k P ( Y = c k ∣ X = x ) = a r g max ⁡ c k P ( X , Y = c k ) P ( X ) y=arg \max_{c_k} P(Y=c_k|X=x)=arg \max_{c_k} \frac{P(X,Y=c_k)}{P(X)} y=argckmaxP(Y=ckX=x)=argckmaxP(X)P(X,Y=ck)
y = a r g max ⁡ c k P ( Y = c k ) ∏ j = 1 n P ( X j = x j ∣ Y = c k ) y=arg \max_{c_k}P(Y=c_k)\prod_{j=1}^nP(X_j=x_j|Y=c_k) y=argckmaxP(Y=ck)j=1nP(Xj=xjY=ck)结果最大的 k k k即为输入 X X X对应的类别 C k C_k Ck.

训练实例:
在这里插入图片描述
在这里插入图片描述

6、贝叶斯和朴素贝叶斯

因为朴素贝叶斯的概率估计方法采用的是极大似然估计,极大似然估计可能会造成估计结果为0的情况,导致无法进行后续计算,所以引入贝叶斯估计方法。
在这里插入图片描述

7、注意

朴素贝叶斯使用的前提就是条件独立假设,即假设输入变量都是条件独立互不影响的,如果条件之间存在依存关系,则模型就变成了贝叶斯网络


http://chatgpt.dhexx.cn/article/qJsmF5lc.shtml

相关文章

标定相机参数-张正友方法

一、实验原理 1.计算外参 设三维世界坐标的点为M=[X,Y,Z,1]T,二维相机平面像素坐标为m=[u,v,1]T,所以标定用的棋盘格平面到图像平面的单应性关系为: sm=A[R,t]M 其中 不妨设棋盘格位于Z = 0,定义旋转矩阵R的第i列为 ri, 则有: 令H=[h1 h2 h3]=λA[r1 r2 t] 于是空间到图…

《统计学习方法》——朴素贝叶斯法

引言 朴素贝叶斯法(Naive Bayes)是基于贝叶斯定理与特征条件独立假设的分类方法。朴素贝叶斯法实现简单,学习与预测的效率都很高,是一种常用的方法。 这一章需要大量的概率论知识,忘记了的同学建议先参阅人工智能数学基础之概率论。 朴素贝…

数据挖掘十大算法之 naïve Bayes

朴素贝叶斯法是基于贝叶斯定理和特征条件独立假设的分类方法。朴素贝叶斯法实现简单,学习与预测的效率都很高,被广泛应用于文本分类、垃圾邮件过滤、自然语言处理等场景。下面我们来介绍贝叶斯定理,在介绍贝叶斯定理之前,先介绍下…

专题:深度神经网络基本问题的原理详细分析和推导

文章目录 **写在最前面****1 神经网络算法的直观了解****1.1 神经网络过程描述**:**1.2 神经网络相关的几个问题****1.2.1 表征假设和激活函数** **1.2.2 结构设计(Architecture Design)****1.2.3 代价函数(Cost Function)和优化目标(Optimization objective)****1.…

第四章 朴素贝叶斯法

文章目录 朴素贝叶斯法的学习与分类基本方法数据定义学习联合概率分布如何求出条件概率分布?如何分类? 后验概率最大化的含义 朴素贝叶斯的参数估计法极大似然估计学习分类算法贝叶斯估计 朴素贝叶斯法(与贝叶斯估计是不同的概念)…

GAN生成对抗式神经网络数学推导

由上面一篇文章我们已经知道了,如果我们从真实数据分布里面取n个样本,根据给定样本我们可以列出其出现概率的表达式,那么生成这N个样本数据的似然(likelihood)就是 l ( θ ) ∏ i 1 N p ( x i ∣ θ ) l ( \theta ) \prod _ { i 1 } ^ { …

《统计学习方法》学习笔记(三)之 朴素贝叶斯法

朴素贝叶斯法 总述 朴素贝叶斯法是基于贝叶斯定理与特征条件独立性假设的分类方法。对于给定的训练数据集,首先基于特征独立性假设学习输入/输出的联合概率分布;然后基于此模型,对给定的输入 x x x,利用贝叶斯定理求出后验概率最…

朴素贝叶斯(二)|极大似然估计+学习与分类算法+贝叶斯估计| 《统计学习方法》学习笔记(十六)

朴素贝叶斯法的参数估计 1. 极大似然估计 在朴素贝叶斯法中,学习意味着估计 P ( Y c k ) P(Yc_k) P(Yck​)和 P ( X ( j ) x ( j ) ∣ Y c k ) P(X^{(j)}x^{(j)}|Yc_k) P(X(j)x(j)∣Yck​)。可以应用极大似然估计法估计相应的概率。先验概率 P ( Y c k ) P(Yc…

一文看懂 “极大似然估计” 与 “最大后验估计” —— 最大后验估计篇

本文历次修订后全长 2万8000余字,受到 CSDN 博文字数限制,故切分两篇发布,所以现在是两文看懂了… 前篇介绍参数估计背景和极大似然估计;本篇介绍最大后验估计和两种方法对比请务必先看前文:一文看懂 “极大似然估计”…

【生成模型】极大似然估计,你必须掌握的概率模型

上一期为大家说明了什么是无监督生成模型。在无监督生成模型中,极大似然法一直扮演着非常核心的位置,我们必须对它有深刻的理解,本期小米粥将为大家讲一下极大似然法的那些事情。 作者&编辑 | 小米粥 1 一个小游戏:取球猜概率…

透彻理解机器学习中极大似然估计MLE的原理(附3D可视化代码)

文章目录 相关资料一、什么是概率,什么是似然二、极大似然估计 Maximum Likelihood Estimation (MLE) 的含义2.1 机器学习中的极大化似然函数2.2 极大似然估计和损失函数的关系VAE最大化似然函数推导出损失函数 三、代码可视化:极大似然估计3.1 似然函数…

C#RSA密码以及利用欧几里得算法实现两数互质的判断

最近做课程设计,想到以前看过RSA密码的相关内容,于是就想用刚学的C#做一个数字加密系统。RSA加密的流程如下: 来看一个“玩具式”的例子: (1)选取两个素数p2,q11,于是N22. (2)构造数,这是小于22且不含因数2和11的自然数的个数。 (3)选一个…

判断两数互质,java实现

数组下标i和j值互质时,a[i][j] true,反之false Write a program to create an n * n Boolean array. If I and j are coprime, a [i] [J] is true, otherwise it is false /** * When Array index Mutuality ,a[i][j] true,else is false * 数组i和j值互质时&…

两个质数互质是_两个数互质是什么意思 如何判断

互质数为数学中的一种概念,即两个或多个整数的公因数只有1的非零自然数。公因数只有1的两个非零自然数,叫做互质数。下面是小编整理的详细内容,一起来看看吧! 两个数互质是什么意思 质数为数学中的一种概念,即两个或多…

char、wchar_t、ACHAR、WCHAR、TCHAR

最近用到上面几种不同的字符类型,下面贴上在网上收集到的资料。 1、char 单字节变量类型,最多表示256个字符。 2、wchar_t 宽字节变量类型,用于表示Unicode字符,它实际定义在<string.h>里:typedef unsigned short wchar_t。 定义宽字节类型方法如下: wchar_…

wchar* 转换成 string

wchar* 转换成 string 123 windows 类型转换问题 1 // Your wchar_t* wstring ws(L"Hello World"); // your new String std::string str(ws.begin(), ws.end()); // Show String std::cout << str << std::endl; 2 std::wstring wstr(L"Test&…

wchar_t类型

今天在看前辈的项目的时候学习到了一个以前没有通过的数据类型&#xff1a;宽字符wchar_t类型。 先来看看他占多大的空间吧&#xff0c; 从图中可以看到wchar_t占的空间的大小为2个字节&#xff0c; 然后来确定一下他是无符号还是有符号的 由上图可见&#xff0c;他应该是无符号…

char与wchar_t字符串

C里的字符串类型是比较二的&#xff0c;因为有太多表示方法&#xff1a;char*、string、字符串数组、wchar_t*、wstring&#xff0c;今天就来缕一缕这些玩意。 char* char* 貌似是C字符串最基础最核心的。 看以下四个字符串声明及输出结果&#xff1a; 先说说核心&#xff0c…

wchar_t的用法

wchar_t的解释可以看这里:这里 程序和解析: 1 # include<stdio.h>2 # include<stdlib.h>3 # include<locale.h>//设置本地化<

WCHAR的简单操作

WCHAR 是双字节类型&#xff0c;一般它用来存储那些双字节而不是单字节字符.较长的字节数可以支持 在应用程序的国际发布版本里所使用的扩展字符集(如常用的Unicode字符集). 比如说&#xff1a;在中文系统下开发的软件&#xff0c;当应用到日文操作系统时&#xff0c;如果没有采…