【机器学习chp2】贝叶斯最优分类器、概率密度函数的参数估计、朴素贝叶斯分类器、高斯判别分析。万字超详细分析总结与思考

news2024/11/18 10:54:48

前言,请先看。

本文的《一》《二》属于两个单独的知识点:共轭先验和Laplace平滑,主要因为他们在本文的后续部分经常使用,又因为他们是本人的知识盲点,所以先对这两个知识进行了分析,后续内容按照标题中的顺序依次进行,观看时可以先跳过《一》《二》,后文遇到相关共轭先验和Laplace平滑的知识再回头看他们。另一个更重要的点是,本文用到了大量gpt的分析,部分我添加了我的理解并进行重要标注,还有一部分我想优化gpt的回答,但鄙人不才,gpt的分析太好了,条理清晰又通俗易懂,我改不了就直接放上去了。

推荐文章1,最大似然估计和最大后验估计分析

【王木头】最大似然估计、最大后验估计-CSDN博客

推荐文章2,其中有最大似然估计的例子

【王木头·从感知机到神经网络】-CSDN博客

推荐文章3,文章中的第《五》部分介绍了部分矩估计相关的理论知识

【王木头】sigmoid和softmax有什么区别,softmax的本质是最大熵?_softmax softmoid-CSDN博客

目录

一、共轭先验

Beta分布

1、推导

2、Beta分布参数的实际意义

3、Beta分布作为先验时贝叶斯推断中的更新过程

4、Beta分布的性质

Dirichlet分布(狄利克雷分布)

1、多项分布

2、多项分布的例子

3、Dirichlet分布的定义

3、Dirichlet分布作为多项分布的先验时贝叶斯估计中的更新过程

4、直观解释 Dirichlet 分布作为多项分布的先验

二、Laplace平滑

1、动机和定义

2、例子

3、优缺点

4、Laplace平滑的扩展

三、贝叶斯最优分类器

1、最小错误率决策——最大后验概率决策

2、最小化风险决策

 1、从最小错误率决策到最小风险决策     

2、引入拒识

四、概率密度函数的参数估计

1、伯努利分布的极大似然估计

2、伯努利分布的贝叶斯估计

3、多项分布的极大似然估计

4、多项分布的贝叶斯估计

5、单变量高斯分布的极大似然估计

6、单变量高斯分布的贝叶斯估计

7、多元高斯分布的极大似然估计

五、朴素贝叶斯分类器

0、朴素贝叶斯分类器 · 理论介绍

(1)基本原理

(2)“朴素”假设

(3)朴素贝叶斯的不同模型

(4)分类过程

(5)分类过程中类先验概率的估计 

(6)分类过程中类条件概率的估计 

(7)朴素贝叶斯与最大似然估计、最大后验估计的联系

(8)朴素贝叶斯分类器的优缺点

1、多项式朴素贝叶斯分类举例 (PPT上的例子)

问题背景

步骤 1:计算先验概率

步骤 2:计算条件概率(类条件分布)

步骤 3:预测新用户

步骤 4:比较后验概率

2、高斯朴素贝叶斯分类器举例

问题背景

数据集

步骤 1:计算先验概率

步骤 2:计算类条件概率的参数(均值和方差)

步骤 3:预测新样本

六、高斯判别分析

1、高斯判别分析的基本假设

2、类别的先验分布

3、判别函数

4、二次判别分析(QDA)

5、线性判别分析(LDA)

6、特殊情况:协方差矩阵为对角阵

7、高斯判别模型的训练

8、收缩估计(Shrinking Estimation)——正则化

总结

七、⭐全文总结⭐

1、对于贝叶斯分类器

2、对于概率密度函数的参数估计

3、对于朴素贝叶斯分类器

4、对于高斯判别分析


一、共轭先验

最大似然估计和最大后验估计是点估计,贝叶斯估计的参数估计不再是一个点估计,而是一个对一个分布的估计,即它估计的是一系列参数值的一个分布 ,共轭先验(Conjugate Prior)是贝叶斯统计中的一个概念,指的是在贝叶斯更新中选择一种特殊的先验分布,使得在观察数据后得到的后验分布与先验分布属于同一家族,对伯努利分布(二项分布就是伯努利分布)进行贝叶斯估计时,使用Beta分布作为共轭先验可以简化运算。对多项分布进行贝叶斯估计时,选用Dirichlet分布作为共轭先验可以简化运算。

Beta分布

1、推导

Beta分布本质是概率分布P的概率分布,在《推荐文章2》中的抛硬币的例子中,在知道结果前,概率分布为:

P()=C^{x}_{10}q^{x}(1-q)^{10-x},可见先验 q 变化时,P 也会相应发生变化,感觉一下应该是 P 随着 q 先增大后减小;所以就可以把 P 写成一个概率分布的形式,显然P\propto q^{x}(1-q)^{10-x} ,而要写成概率分布,概率密度就要归一化,对 q^{x}(1-q)^{10-x} 积分得 \int_{0}^{1}q^{x}(1-q)^{10-x}dq ,所以 P 的分布可写成:                                       

                                                    f(q)=\frac{1}{\int_{0}^{1}q^{x}(1-q)^{10-x}dq}\cdot q^{x}(1-q)^{10-x} 

更一般的,如果先验的实验次数分别为 \alpha-1 次成功和 \beta-1 次失败,则概率分布 P 的概率分布可写为:

                                                f(q,\alpha ,\beta )=\frac{1}{\int_{0}^{1}q^{\alpha-1 }(1-q)^{ \beta-1 }dq}\cdot q^{ \alpha-1 }(1-q)^{ \beta-1 }

其中归一系数的倒数可表示为B(\alpha ,\beta )=\int_{0}^{1}q^{\alpha-1 }(1-q)^{ \beta-1 }dq,被称为Beta函数。

以上就是Beta分布推导的精髓。

在上面抛硬币的例子中,先验是均匀分布,取\alpha = \beta = 1,即f(q)=1,符合分布Beta(q,1,1),数据信息是3次正面和7次反面,所以后验为分布Beta(q,4,8) 。

2、Beta分布参数的实际意义

在 Beta 分布中,参数 \alpha\beta 可以被解释为**“先验成功和失败的次数加 1”**。这就是说:

  • \alpha - 1 可以看作是我们在先验信念中预期的“成功”次数。
  • \beta - 1 可以看作是我们在先验信念中预期的“失败”次数。

这解释了为什么 Beta 分布的概率密度函数(PDF)是:

                                                \text{Beta}(\theta | \alpha, \beta) = \frac{\theta^{\alpha - 1} (1 - \theta)^{\beta - 1}}{B(\alpha, \beta)}

这里的 \alpha - 1\beta - 1 正是对“成功”和“失败”次数的参数化,体现了我们在先验中已经观测到的“成功”和“失败”的预期数量。

3、Beta分布作为先验时贝叶斯推断中的更新过程

在我们选择了 Beta 分布作为先验后,观测数据可以不断更新这个先验分布。假设我们进行了一些实验,例如进行了一系列伯努利试验(比如多次抛硬币)并观察到 k 次成功和 n - k 次失败。此时,可以根据观测数据对先验分布进行更新,从而得到后验分布。

假设:

  • 初始的先验分布是 \text{Beta}(\alpha, \beta)
  • 观测到 k 次成功(事件发生)和 n - k 次失败(事件未发生)。

则观测数据的似然函数为:

                                                        p(X | \theta) \propto \theta^k (1 - \theta)^{n - k}

根据贝叶斯公式,后验分布 p(\theta | X) 可以通过将似然与先验相乘并标准化得到:

                                                        p(\theta | X) \propto p(X | \theta) \cdot p(\theta)

代入具体的形式得到:

                                        p(\theta | X) \propto \theta^k (1 - \theta)^{n - k} \cdot \theta^{\alpha - 1} (1 - \theta)^{\beta - 1}

可以将其整理为:

                                                p(\theta | X) \propto \theta^{k + \alpha - 1} (1 - \theta)^{n - k + \beta - 1}

这就是一个新的 Beta 分布的形式,后验分布为:

                                ​​​​​​​        ​​​​​​​        \theta | X \sim \text{Beta}(\alpha + k, \beta + n - k)

因此,更新后的后验分布仍然是 Beta 分布,只需更新参数为 \alpha' = \alpha + k\beta' = \beta + n - k。这种共轭性质使得 Beta 分布在处理伯努利分布和二项分布时特别方便。

4、Beta分布的性质

参数 \alpha\beta 控制着 Beta 分布的形状,使得分布可以表示不同的概率模式。

(1)均值

均值(中心位置):

                                                         期望  = \mathbb{E}[\theta] = \frac{\alpha}{\alpha + \beta}

因此,均值由 \alpha\beta 的比率决定。例如,较大的 \alpha 值会使分布更靠近1(更偏向成功),而较大的 \beta 值会使分布更靠近0(更偏向失败)。

(2)方差

方差(集中程度):

                                                方差= \text{Var}(\theta) = \frac{\alpha \beta}{(\alpha + \beta)^2 (\alpha + \beta + 1)}

\alpha\beta 较小时,方差较大,表示对 \theta 的不确定性更大,先验的次数很少导致分布比较离散;当 \alpha\beta 较大时,方差较小,表示对 \theta 的不确定性较小。也就是说,\alpha + \beta 越大,分布越集中,对事件的发生概率 \theta 越有信心。

(3)α和β不同组合下的解释

  • 均匀分布:当 \alpha = 1\beta = 1 时,Beta 分布是均匀分布,即对区间 [0, 1] 上的所有值都持等可能的信念。这表示对事件的概率没有任何偏好或先验知识。

  • 向 1 倾斜的分布:当 \alpha > 1\beta = 1 时,Beta 分布倾向于靠近 1。这表示我们在先验上认为事件的发生概率较大,即对事件发生抱有较强的信心。

  • 向 0 倾斜的分布:当 \alpha = 1\beta > 1 时,Beta 分布倾向于靠近 0。这表示我们在先验上认为事件的发生概率较小,即认为事件不太可能发生。

  • 钟形分布:当 \alpha > 1\beta > 1 时,Beta 分布呈钟形,集中在 0 和 1 之间的某个位置。这表示对事件发生概率有一定的偏好,但并不极端。

  • U形分布:当 \alpha < 1\beta < 1 时,Beta 分布在 0 和 1 处有较高的密度,中间位置概率较低。它表示对事件的概率有强烈的二分倾向,即要么很可能发生,要么不太可能发生,但不倾向于中间值。

(4)α和β取值相等但取较大的值和较小的值的区别

(i)参数相等的意义:对称的先验信念

\alpha = \beta 时,Beta 分布是对称的,即 p(\theta | \alpha, \beta) 关于 \theta = 0.5 对称。这表明我们对事件发生和不发生的概率没有任何偏好或倾向,反映了先验信念的平衡 。

(ii)较小的α=β,对事件概率缺乏确定性

\alpha = \beta = 1 时,Beta 分布就是一个均匀分布,即在 [0, 1] 区间上所有的概率值都是等可能的。这表明我们对事件的概率没有任何先验知识或偏好,每个概率值都同等可能。

\alpha\beta 更小(比如 \alpha = \beta = 0.5),Beta 分布在 0 和 1 处出现较高的概率密度,而中间的概率值较小。这表示我们认为事件要么几乎一定会发生(概率接近 1),要么几乎不会发生(概率接近 0)。这是一种对概率的“二分倾向”,体现了极端的、不确定的先验信念。

(iii)较大的α=β,对事件概率的确定性增加

\alpha\beta较大的数(例如,\alpha = \beta = 10\alpha = \beta = 50),Beta 分布在物理上表现出一种高度确定性强烈的先验信念。具体来说:

  • 较大的 \alpha\beta 值使得 Beta 分布更加集中在 0.5 附近,呈现出一个钟形曲线,表明我们认为事件发生的概率接近 0.5
  • 参数值越大,Beta 分布越集中,表示我们对事件发生概率接近 0.5 的信念越强烈。因此,当我们观测到新的数据时,这些观测数据对后验分布的影响较小,因为我们对事件的概率已有较强的先验信念。

物理意义上,较大的 \alpha\beta 表示我们对事件发生概率的估计非常有信心,认为它很接近 0.5,因此观测数据的影响会被削弱。这种情况下,先验分布的权重较大,不容易被新数据改变。

Dirichlet分布(狄利克雷分布)

多项分布的先验符合 Dirichlet分布,多项分布是伯努利分布向高维的一个扩展,Dirichlet分布也是Beta分布向高维的一个扩展,因此Beta分布和Dirichlet分布有许多相似的地方。
1、多项分布

(1)定义

它是二项分布的推广,用于描述一个实验中可能有多个结果的情况。多项分布可以理解为一次重复试验中,每个试验有多个互斥的结果(类别),每个结果发生的概率是已知的,且总和为1。
例如抛掷多面骰子、文本分类等
设我们进行 n 次独立试验,每次试验有 k 个可能的互斥结果(类别),且每个结果 i 发生的概率为 p_i,其中 \sum_{i=1}^k p_i = 1。多项分布描述了在 n 次试验中,每个类别发生的次数。

如果随机变量 X = (X_1, X_2, \dots, X_k) 表示每个类别的出现次数,则 X 服从一个多项分布,记为:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​         X \sim \text{Multinomial}(n, p_1, p_2, \dots, p_k)

其中:

  • X_i 表示第 i 类在 n 次试验中出现的次数。
  • p_i 表示第 i 类在每次试验中发生的概率。
  • n 表示试验的总次数。

(2)质量分布函数

多项分布的概率质量函数(PMF)表示在 n 次试验中,每个类别 iii 恰好出现 X_i 次的概率:

        ​​​​​​​         P(X_1 = x_1, X_2 = x_2, \dots, X_k = x_k) = \frac{n!}{x_1! x_2! \dots x_k!} \prod_{i=1}^k p_i^{x_i}

其中:

  • x_i​ 是第 类出现的次数,且满足 x_1 + x_2 + \dots + x_k = n 。
  • \frac{n!}{x_1! x_2! \dots x_k!}​ 是组合数,表示在 n 次试验中获得具体观测次数 (x_1, x_2, \dots, x_k) 的排列数。
  • p_i^{x_i}​​ 表示第 i 类出现 x_i 次的概率。

(3)期望和方差

对于多项分布中的每个类别 iii:

  • 期望\mathbb{E}[X_i] = n \cdot p_i​,即第 i 类的期望次数是总次数 n 乘以该类的概率 p_i
  • 方差\text{Var}(X_i) = n \cdot p_i \cdot (1 - p_i),表示在 n 次试验中,第 i 类的出现次数的方差。
  • 协方差:对于 i\neq j\text{Cov}(X_i, X_j) = -n \cdot p_i \cdot p_j,即不同类别的出现次数是负相关的,因为它们在 n 次试验中共享总数。

(4) 独立性

多项分布中的每个随机变量 X_i​ 并不是相互独立的,因为它们的和必须满足 X_1 + X_2 + \dots + X_k = n 。换句话说,多项分布中的事件数是总数为 n 的分配问题,各类别的出现次数之间存在一定的关联。

2、多项分布的例子

假设我们有一个4面骰子,每个面出现的概率分别为 p_1 = 0.2p_2 = 0.3p_3 = 0.1p_4 = 0.4 。我们掷这个骰子 10 次,记录每个面出现的次数。

在这种情况下:

  • n = 10
  • 类别数 k = 4
  • 每个类别的出现概率分别为 p_1 = 0.2p_2 = 0.3p_3 = 0.1 、p_4 = 0.4

如果结果是 X = (2, 3, 1, 4),表示:

  • 第一面出现了 2 次
  • 第二面出现了 3 次
  • 第三面出现了 1 次
  • 第四面出现了 4 次

根据多项分布的概率质量函数,可以计算出这个结果的概率:

         P(X_1 = 2, X_2 = 3, X_3 = 1, X_4 = 4) = \frac{10!}{2! \cdot 3! \cdot 1! \cdot 4!} \cdot 0.2^2 \cdot 0.3^3 \cdot 0.1^1 \cdot 0.4^4

这个概率表示在 10 次试验中得到特定观测结果 (2, 3, 1, 4) 的可能性。

3、Dirichlet分布的定义

Dirichlet 分布是定义在 k-维概率简单形(即所有分量之和为 1 的非负向量)上的分布。假设随机变量 P = (p_1, p_2, \dots, p_k) 服从 Dirichlet 分布,其概率密度函数为:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        p(P | \alpha) = \frac{1}{B(\alpha)} \prod_{i=1}^k p_i^{\alpha_i - 1}

其中:

  • \alpha = (\alpha_1, \alpha_2, \dots, \alpha_k) 是 Dirichlet 分布的参数向量,称为浓度参数,每个 \alpha_i > 0
  • B(\alpha) 是归一化常数,称为 Beta 函数,定义为 B(\alpha) = \frac{\prod_{i=1}^k \Gamma(\alpha_i)}{\Gamma(\sum_{i=1}^k \alpha_i)}​。
  • p_i​ 满足 0 \leq p_i \leq 1\sum_{i=1}^k p_i = 1,因此 Dirichlet 分布定义在一个 (k-1)-维的概率简单形上。

3、Dirichlet分布作为多项分布的先验时贝叶斯估计中的更新过程

在贝叶斯推断中,如果我们有一个多项分布的概率参数 P = (p_1, p_2, \dots, p_k),假设我们对 P 的先验分布为 Dirichlet 分布:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​         P \sim \text{Dirichlet}(\alpha_1, \alpha_2, \dots, \alpha_k)

然后,我们进行 n 次试验,观测到每个类别出现的次数为 X = (x_1, x_2, \dots, x_k),其中 x_i 表示第 i 类的出现次数。

根据贝叶斯公式,后验分布为:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​         p(P | X) \propto p(X | P) \cdot p(P)

其中:

  • p(X | P) 是似然函数,服从多项分布:p(X | P) \propto \prod_{i=1}^k p_i^{x_i} 。
  • p(P) 是先验分布,服从 Dirichlet 分布:p(P) \propto \prod_{i=1}^k p_i^{\alpha_i - 1}​。

将似然函数和先验分布相乘得到后验分布:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​         p(P | X) \propto \prod_{i=1}^k p_i^{x_i + \alpha_i - 1}

可以看出,这仍然是一个 Dirichlet 分布,参数为 (\alpha_1 + x_1, \alpha_2 + x_2, \dots, \alpha_k + x_k)。因此,后验分布为:

        ​​​​​​​        ​​​​​​​        ​​​​​​​         P | X \sim \text{Dirichlet}(\alpha_1 + x_1, \alpha_2 + x_2, \dots, \alpha_k + x_k)

这种性质说明了 Dirichlet 分布是多项分布的共轭先验。

4、直观解释 Dirichlet 分布作为多项分布的先验
由于Dirichlet 分布作为多项分布的先验 与 Beta分布作为伯努利分布共轭先验类似,此处简要解释。
  • 参数 \alpha_i​ 表示我们对第 i 类的“先验观测次数”或“信念强度”。例如,较大的 \alpha_i​ 值表示我们在先验上认为第 i 类的概率较大。
  • \alpha_i = 1 时,对应的先验是均匀分布,表示在先验上对每个类别没有特别的偏好。
  • 当观察到新的数据后,Dirichlet 分布的参数更新为 \alpha_i + x_i​,即在先验的基础上增加了每个类别的实际观测次数。

二、Laplace平滑

1、动机和定义
Laplace 平滑,也称为加一平滑,是一种在处理离散概率分布问题中常用的平滑技术。它主要用于估计在数据中未出现的事件的概率,防止概率为零的情况。 Laplace 平滑给每个可能的事件都加上一个小的非零计数,通常是加 1。这确保了所有事件的概率都不为零,并使得模型在面对新数据时更具鲁棒性。

Laplace 平滑的公式为:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​         P(x_i) = \frac{N_i + 1}{N + k}

其中:

  • N_i​ 是事件 x_i​ 的原始计数。
  • N 是样本的总计数。
  • k 是事件的可能类别总数。
  • 分母 N + k 通过加上 k,保证了所有事件的概率之和仍为 1。
2、例子

假设我们正在统计单词在文档中的出现概率,词汇表中有 k = 5 个单词:{“apple”, “banana”, “orange”, “grape”, “melon”}。假设在一篇文档中,我们观察到以下出现次数:

  • "apple": 3 次
  • "banana": 2 次
  • "orange": 0 次
  • "grape": 1 次
  • "melon": 0 次

文档的总单词数(计数总和)为 N = 3 + 2 + 0 + 1 + 0 = 6

如果我们直接计算频率,不做平滑,得到的概率为:

P(\text{"apple"}) = \frac{3}{6} = 0.5, \quad P(\text{"orange"}) = \frac{0}{6} = 0

由于“orange”和“melon”从未出现,它们的概率为零。如果我们希望在后续处理中能够处理这些词(避免概率为零),可以使用 Laplace 平滑:

对于每个单词,我们将出现次数加 1,再重新计算概率:

P(\text{"apple"}) = \frac{3 + 1}{6 + 5} = \frac{4}{11} \approx 0.36

P(\text{"banana"}) = \frac{2 + 1}{6 + 5} = \frac{3}{11} \approx 0.27

P(\text{"orange"}) = \frac{0 + 1}{6 + 5} = \frac{1}{11} \approx 0.09

        通过这种方式,即使“orange”和“melon”在数据中没有出现,我们也为它们分配了一个非零的概率,确保模型不会因为这些未观测到的事件而出错。

3、优缺点

优点:防止零概率问题,实现简单,计算效率高,是处理数据稀疏问题的基础方法。

缺点:对所有事件统一加 1,可能会对小概率事件的影响较大,导致低频事件的概率被高估,高频事件的概率被低估。在数据量大时,Laplace 平滑的影响较小,而在数据量小时,平滑效果明显且可能带来一定偏倚

4、Laplace平滑的扩展
        在 Laplace 平滑中,我们默认对每个事件的计数加 1,称为加一平滑。我们也可以使用一个更一般的参数 \alpha,称为 \alpha 平滑。其公式为:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        P(x_i) = \frac{N_i + \alpha}{N + \alpha \cdot k}

其中 \alpha > 0 是一个超参数。常见的选择包括 \alpha = 0.5 或更小的值,以减弱平滑的效果。

三、贝叶斯最优分类器

1、最小错误率决策——最大后验概率决策

最小错误率决策是一种通过最大化后验概率来实现最小化分类错误概率的方法。

(1)最小化错误率
最小化错误率决策的核心是选择一个类 c 使得后验概率 P(Y = c | x) 最大。即,对于一个给定的观测值 x,选择使 P(Y = c | x) 最大的类 c 作为决策结果,这就是最大后验概率(MAP)决策。

(2)贝叶斯公式
根据贝叶斯定理,后验概率可以表示为:

                                 P(Y = c | x) = \frac{P(x | Y = c) P(Y = c)}{\sum_{c'} P(x | Y = c') P(Y = c')}​​​​​​​

其中,P(Y = c) 是类的先验概率,P(x | Y = c) 是类条件概率。

(3)判别函数
为了简化计算,通常使用对数形式的判别函数来进行比较,即:

                              d_c = \ln(P(x | Y = c)) + \ln(P(Y = c))

在判别过程中,只需比较各类的判别函数值,选择最大的那个类作为预测类别。

(4)地震预测的例子(PPT中的例子)

​​​
  • 定义事件与先验概率

    • Y 为事件变量,Y = 1 表示发生地震,Y = 0 表示正常。
    • 通过对高发区的统计得出每周发生地震的概率为 20%,即 P(Y = 1) = 0.2P(Y = 0) = 0.8 。
    • 如果没有其他信息,可以直接认为当前正常,因为 P(Y = 0) > P(Y = 1)  。
  • 特征变量与条件概率

    • 假设在地震高发区,观察到生物的异常反应可能与地震有关。
    • 引入二值特征 X 表示生物的反应:X = 1 表示异常反应,X = 0 表示正常。
    • 根据历史数据统计,给出以下条件概率:
      • 地震发生时,出现生物异常反应的概率 P(X = 1|Y = 1) = 0.6,正常反应的概率 P(X = 0|Y = 1) = 0.4 。
      • 没有地震时,出现异常反应的概率 P(X = 1|Y = 0) = 0.1,正常反应的概率 P(X = 0|Y = 0) = 0.9 。
  • 应用贝叶斯定理计算后验概率

    • 假设观察到生物的异常反应(即 X = 1),求地震发生的后验概率 P(Y = 1|X = 1)
    • 根据贝叶斯公式: P(Y = 1|X = 1) = \frac{P(X = 1|Y = 1)P(Y = 1)}{P(X = 1|Y = 1)P(Y = 1) + P(X = 1|Y = 0)P(Y = 0)}
    • 代入数值计算得: P(Y = 1|X = 1) = \frac{0.6 \times 0.2}{0.6 \times 0.2 + 0.1 \times 0.8} = 0.6
    • 因为 0.6 > 0.5,所以可以认为地震更可能发生(即 Y = 1)。
  • 决策结果

    • 通过以上计算,确定当观察到生物的异常反应时,可以判断地震发生的可能性更大,作出 Y = 1 的预测。
    • 此例展示了如何在已知先验和条件概率的情况下,通过最大后验概率决策来进行预测。

(5)决策准则
该准则通过最大化后验概率来最小化错误率,因为后验概率最高的类是最有可能的类别。这种方法确保了在给定的观测值 x 下,错误率 P(\text{error} | x) = 1 - P(Y = c | x) 最小。

综上所述,最小错误率决策通过最大后验概率准则选择类别,使得分类器在不确定性情况下也能以较高的准确率进行预测。

2、最小化风险决策

(1)、从最小错误率决策到最小风险决策     
        最小化错误率决策没有考虑不同方式错误带来的损失可能不同。最小风险决策是在最小错误率决策的基础上再给决策一个代价。例如上面的地震预测例子中假设计算得到不发生地震的概率为60\%,发生地震的概率为40\%,对于最小错误率决策,认为不发生地震。判定错误的情况有两种,分别为:(1)实际发生地震但判定为不发生地震,(2)实际不发生地震但判定为地震了。很显然前者的代价是远远大于后者的。所以对于最小化风险决策,要给每个判定一个代价。假设给第一种错误的情况的代价为(损失100W),给第二种错误情况代价为(损失10W),判定正确的两种情况代价为0(发生地震判定也为地震和判定不地震实际也不地震)。
那么判定为不发生地震的平均损失为:100\times 0.4+0\times 0.6=40
判定为发生地震的平均损失为:10\times 0.6+0\times 0.4=6
显然判断为地震的风险更小,因此在最小风险决策中上述地震预测的例子应判定为发生地震。
(2)、引入拒识
        在最小风险决策中引入拒识机制是一种 应对高不确定性情况下避免错误分类的策略。通过拒识机制,分类器可以在某些输入样本上选择“不做判断”或“转交人工处理”,以此来减少潜在的错误分类损失。
(1)为什么要引入拒识
        在一些分类问题中,可能出现分类器对某些样本的后验概率接近,导致分类不确定性较高。这时,分类器可以选择拒识,避免作出错误分类,以减少总损失。拒识的损失代价 L_r 需要满足 L_r < L_s​,其中 L_s​ 是错误分类的损失代价。如果 L_r \geq L_s,分类器将不会拒识,因为拒识反而带来更大的代价。
(2)损失函数的定义

引入拒识后,我们的损失函数可以定义为:

L(\hat{y}, y) = \begin{cases} 0, & \text{if } y = \hat{y} \\ L_s, & \text{if } y \neq \hat{y} \\ L_r, & \text{reject} \end{cases}

其中:

  • 当分类正确时,损失为 0;
  • 当分类错误时,损失为 L_s
  • 当选择拒识时,损失为 L_r​。
(3)条件风险的计算

在引入拒识后,条件风险可以表示为:

R(c|\mathbf{x}) = \begin{cases} L_s \left(1 - P(Y = c|\mathbf{x})\right), & \text{for } c = 1, 2, \dots, C \\ L_r, & \text{reject} \end{cases}

这里,P(Y = c|\mathbf{x}) 是给定输入样本 \mathbf{x} 属于类别 c 的后验概率。

  • 当分类器选择某个类别 c 时,其风险为 L_s \left(1 - P(Y = c|\mathbf{x})\right)
  • 当分类器选择拒识时,其风险为 L_r
(4)拒识的决策准则

为了实现最小风险决策,引入拒识后的准则为:

\hat{y} = \arg\min_{c} R(c|\mathbf{x}) = \begin{cases} \arg\max_{c} P(Y = c|\mathbf{x}), & \text{if } \max_{c} P(Y = c|\mathbf{x}) > 1 - \frac{L_r}{L_s} \\ \text{reject}, & \text{else} \end{cases}

这意味着:

  • 如果最大后验概率 \max_{c} P(Y = c|\mathbf{x}) 超过阈值 1 - \frac{L_r}{L_s},则选择该类别;
  • 否则,选择拒识。

、概率密度函数的参数估计

给定随机变量 X 或随机向量 \boldsymbol{X} 的概率密度函数  p(x)  的形式,但其参数未知,
例如,在两类分类任务中,类先验分布 Y\sim Berloulli(\theta )  ,但参数 \theta 的值未知.
有多种方法可用来估计模型的参数
矩方法
极大似然估计:频率学派
贝叶斯方法:贝叶斯学派
最大似然估计、最大后验估计的理论,在本文开头《推荐文章1》和《推荐文章2》中也有详细的解答和示例。在《推荐文章3》中,有关于矩方法的简要理论介绍。

1、伯努利分布的极大似然估计

假设:随机变量 X 只有 0 和 1 两种取值,即 X \sim \text{Bernoulli}(\theta),其中 \theta 表示随机变量取值为 1 的概率。

似然函数

                                                    p(X | \theta) = \theta^x (1 - \theta)^{1 - x}​​​​​​​

对数似然函数

l(\theta) = \ln p(\mathcal{D} | \theta) = \sum_{i=1}^N \ln p(x_i |\theta)\\=\sum_{i=1}^N \left( x_i \ln \theta + (1 - x_i) \ln (1 - \theta) \right)

最大似然估计: 求对数似然函数关于 \theta 的导数并令其为 0:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​           \frac{\partial l(\theta)}{\partial \theta} = \frac{N_1}{\theta} - \frac{N_0}{1 - \theta} = 0

解得:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​          ​​​​​​​        \hat{\theta} = \frac{N_1}{N}

其中 N_1x_i = 1 的样本数,N 是样本总数。

2、伯努利分布的贝叶斯估计

贝叶斯估计是对参数分布的估计,最大后验估计和最大似然估计是对参数的最大点估计。

  • 先验分布:假设 \theta 服从 Beta 分布,即 \theta \sim \text{Beta}(\alpha, \beta),其概率密度函数为:

            ​​​​​​​        ​​​​​​​        ​​​​​​​             p(\theta | \alpha, \beta) = \frac{1}{B(\alpha, \beta)} \theta^{\alpha - 1} (1 - \theta)^{\beta - 1}
  • 似然函数(基于伯努利分布):

    ​​​​​​​                                          p(\mathcal{D} | \theta) = \theta^{N_1} (1 - \theta)^{N_0}​​​​​​​

    其中 N_1 和 N_0​ 分别是取值为 1 和 0 的样本数量。

  • 后验分布:根据贝叶斯公式,后验分布为:

                            p(\theta | \mathcal{D}) \propto p(\mathcal{D} | \theta) p(\theta) = \theta^{N_1 + \alpha - 1} (1 - \theta)^{N_0 + \beta - 1}

    因此,后验分布仍然是 Beta 分布:

                                   \theta | \mathcal{D} \sim \text{Beta}(N_1 + \alpha, N_0 + \beta)​​​​​​​
  • 最大后验估计MAP(贝叶斯估计出来的后验分布的最大点)

                                               \hat{\theta}_{\text{MAP}} = \frac{\alpha + N_1 - 1}{\alpha + \beta + N - 2}​​​​​​

        当 \alpha = \beta = 1 时,即使用均匀先验分布(等于1特指没有先验),MAP退化为MLE:

                                                           \hat{\theta} = \frac{N_1 }{N }

  • 后验均值估计(后验Beta 分布的期望值):

                                                 \hat{\theta}_{\text{Bayes}} = \frac{\alpha + N_1}{\alpha + \beta + N}

    ​​​​​​​

3、多项分布的极大似然估计

  • 背景:若随机变量 XK 个可能的取值(例如 X \in \{1, 2, \dots, K\}),则 X 服从多项分布 \text{Multinoulli}(\theta),其中 \theta = (\theta_1, \theta_2, \dots, \theta_K) 表示每个类别的概率。

  • 似然函数:给定观测数据 \mathcal{D} = \{x_1, x_2, \dots, x_N\},其中 x_i​ 的取值属于 \{1, 2, \dots, K\},似然函数为

                                     p(\mathcal{D} | \theta) = \prod_{i=1}^N \prod_{k=1}^K \theta_k^{\mathbb{I}(X_i = k)} = \prod_{k=1}^K \theta_k^{N_k}

    其中 N_k​ 是类别 k 的样本数量。

  • 对数似然函数

                                                   \ln p(\mathcal{D} | \theta) = \sum_{k=1}^K N_k \ln \theta_k
  • 最大似然估计由于 \sum_{k=1}^K \theta_k = 1 作为约束条件,使用拉格朗日乘数法优化,得到

                                                                \hat{\theta}_k = \frac{N_k}{N}

    其中 N 是样本总数。

4、多项分布的贝叶斯估计

  • 先验分布:多项分布的共轭先验是 Dirichlet 分布。假设 \theta \sim \text{Dirichlet}(\alpha),其中 \alpha = (\alpha_1, \alpha_2, \dots, \alpha_K) 是超参数,表示先验观测次数。

  • 似然函数:多项分布的似然函数为

                                                    ​​​​​​​p(\mathcal{D} | \theta) = \prod_{k=1}^K \theta_k^{N_k}​​​​​​​
  • 后验分布:结合先验分布和似然函数,后验分布为

                                   p(\theta | \mathcal{D}) \propto p(\mathcal{D} | \theta) p(\theta) = \prod_{k=1}^K \theta_k^{N_k + \alpha_k - 1}

    因此,后验分布是一个 Dirichlet 分布:

                        \theta | \mathcal{D} \sim \text{Dirichlet}(\alpha_1 + N_1, \alpha_2 + N_2, \dots, \alpha_K + N_K)
  • 最大后验估计MAP(贝叶斯估计出来的后验分布的最大点)

    \hat{\theta}_k = \frac{\alpha_k + N_k - 1}{\alpha_0 + N - K}         

    其中 \alpha_0 = \sum_{k=1}^K \alpha_k

        当所有的 \alpha_k = 1 时,即使用均匀先验分布,MAP退化为MLE:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        \hat{\theta}_k = \frac{N_k }{N }

  • 后验均值估计(后验Dirichlet 分布的期望值):

                                                          \hat{\theta}_k = \frac{\alpha_k + N_k}{\alpha_0 + N}

5、单变量高斯分布的极大似然估计

  • 假设:随机变量 X \sim N(\mu, \sigma^2),即服从均值为 \mu,方差为 \sigma^2 的正态分布。

  • 概率密度函数

                                       p(x | \mu, \sigma) = \frac{1}{\sqrt{2\pi\sigma}} \exp\left(-\frac{(x - \mu)^2}{2\sigma^2}\right)
  • 对数似然函数: 给定样本数据 \mathcal{D} = \{x_1, x_2, \dots, x_N\},对数似然函数为:

                \ln p(\mathcal{D} | \mu, \sigma) = -\frac{N}{2} \ln(2\pi) - N \ln(\sigma) - \frac{\sum_{i=1}^N (x_i - \mu)^2}{2\sigma^2}
  • 最大似然估计: 对参数 \mu\sigma 求偏导并令其为零,可得到:

             \hat{\mu} = \bar{x} = \frac{1}{N} \sum_{i=1}^N x_i              \hat{\sigma}^2 = \frac{1}{N} \sum_{i=1}^N (x_i - \hat{\mu})^2                                             其中 \bar{x} 是样本均值,\hat{\sigma}^2 是样本的经验方差。​​​​​​​​​​​​​​

这里其实并没有单变量,其实对两个变量都使用了极大似然估计。

6、单变量高斯分布的贝叶斯估计

  • 假设:已知方差 \sigma^2,对均值 \mu 进行贝叶斯估计。选择 \mu 的共轭先验分布为正态分布,即 \mu \sim N(\mu_0, \sigma_0^2)

  • 似然函数:与最大似然估计相同,样本的似然函数为

                                p(\mathcal{D} | \mu) = \left(\frac{1}{\sqrt{2\pi\sigma}}\right)^N \exp\left(-\frac{\sum_{i=1}^N (x_i - \mu)^2}{2\sigma^2}\right)
  • 后验分布:将先验分布与似然函数结合得到后验分布:

    p(\mu | \mathcal{D}) = N(\mu_N, \sigma_N^2)

    其中

                          \mu_N = \sigma_N^2 \left(\frac{N}{\sigma^2} \bar{x} + \frac{\mu_0}{\sigma_0^2}\right) = \frac{\sigma^2}{N\sigma_0^2 + \sigma^2} \bar{x} + \frac{N\sigma_0^2}{N\sigma_0^2 + \sigma^2} \mu_0                                                                                                 \sigma_N^2 = \frac{\sigma_0^2}{N\sigma_0^2 + \sigma^2}​​
  • 解释\mu_N​ 是先验信息 (\mu_0, \sigma_0^2) 与训练样本信息 (N, \bar{x}) 的加权组合,其中 \sigma_N^2​ 随着样本数 N 增大而减小。

性质:

后验分布:后验分布 p(\mu | \mathcal{D}) = N(\mu_N, \sigma_N^2) 表示观测到数据后,对均值 \mu 的不确定性逐渐减小。

渐进性:随着 N 增大,\sigma_N^2 \to 0,后验均值 \mu_N​ 趋近于样本均值 \bar{x},体现了贝叶斯估计的渐进性,即样本信息逐渐压倒先验信息。

7、多元高斯分布的极大似然估计

(1)多元高斯分布的概率密度函数

  • 定义x \sim N(\mu, \Sigma),其中 \mu 是均值向量,\Sigma 是协方差矩阵。

  • 概率密度函数

                       p(x) = \frac{1}{(2\pi)^{D/2} |\Sigma|^{1/2}} \exp\left(-\frac{1}{2} (x - \mu)^T \Sigma^{-1} (x - \mu)\right)
  • 参数解释

    • 均值向量 \mu = \mathbb{E}(x):表示数据分布的中心位置。
    • 协方差矩阵 \Sigma = \mathbb{E}((x - \mu)(x - \mu)^T):表示数据分布的形状和方向。
      • 对角线元素 \sigma_{kk} 表示第 k 个特征的方差。
      • 非对角线元素 \sigma_{ij}​ 表示第 i 个和第 j 个特征之间的协方差。

(2)似然函数

对数似然函数: 给定 N 个独立样本 \{x_i\}_{i=1}^N​,对数似然函数为:  

                                           \ln p(\mathcal{D}|\mu, \Sigma) = \sum_{i=1}^N \ln p(x_i)

经过化简得到:

         \ln p(\mathcal{D}|\mu, \Sigma) = -\frac{N \times D}{2} \ln(2\pi) - \frac{N}{2} \ln(|\Sigma|) - \frac{1}{2} \sum_{i=1}^N (x_i - \mu)^T \Sigma^{-1} (x_i - \mu)

(3)求均值 μ 的最大似然估计

  • 去掉与参数无关的常数项后,对数似然函数变为:

                 \ln p(\mathcal{D}|\mu, \Sigma) = -\frac{N}{2} \ln(|\Sigma|) - \frac{1}{2} \sum_{i=1}^N (x_i - \mu)^T \Sigma^{-1} (x_i - \mu)
  • \mu 求导并设为 0

                                        \frac{\partial \ln p(\mathcal{D}|\mu, \Sigma)}{\partial \mu} = \sum_{i=1}^N \Sigma^{-1} (x_i - \mu) = 0​​​​​​​
  • 得到均值的最大似然估计:

                                                     \hat{\mu} = \frac{1}{N} \sum_{i=1}^N x_i = \bar{x}

(4)求协方差矩阵 Σ 的最大似然估计

  • 以精度矩阵 \Lambda = \Sigma^{-1} 表示协方差矩阵,化简后得到对数似然函数:

                       \ln p(\mathcal{D}|\mu, \Lambda) = \frac{N}{2} \ln(|\Lambda|) - \frac{1}{2} \sum_{i=1}^N (x_i - \mu)^T \Lambda (x_i - \mu)
  • 利用矩阵求导法则,得到协方差矩阵的估计:

                              \Lambda^{-T} = \Lambda^{-1} = \Sigma = \frac{1}{N} \sum_{i=1}^N (x_i - \mu)(x_i - \mu)^T
  • 最终的协方差矩阵估计为:

                                            \hat{\Sigma} = \frac{1}{N} \sum_{i=1}^N (x_i - \hat{\mu})(x_i - \hat{\mu})^T

五、朴素贝叶斯分类器

0、朴素贝叶斯分类器 · 理论介绍

(1)基本原理

        朴素贝叶斯分类器(Naive Bayes Classifier)是一种基于贝叶斯定理的简单而有效的概率分类算法。它特别适用于文本分类垃圾邮件过滤情感分析等任务。尽管它被称为“朴素”,它在很多应用中表现出了出色的效果。

        朴素贝叶斯分类器利用贝叶斯定理来计算一个样本属于某个类别的概率。贝叶斯定理的基本形式为:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​      P(C | X) = \frac{P(X | C) \cdot P(C)}{P(X)}

其中:

  • P(C | X) 是给定特征 X 的情况下,样本属于类别 C后验概率
  • P(X | C) 是类别 C 下特征 X 出现的条件概率
  • P(C) 是类别 C先验概率
  • P(X) 是特征 X边际概率

        在朴素贝叶斯分类器中,我们的目标是通过计算后验概率 P(C | X),来决定给定特征 X 的样本属于哪个类别 C。其中X是特征组成的向量。

(2)“朴素”假设

        朴素贝叶斯之所以“朴素”,是因为它假设特征之间是条件独立的,即在给定类别的情况下,每个特征是相互独立的。换句话说,对于特征向量 X = (x_1, x_2, \dots, x_n),我们假设:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        P(X | C) = P(x_1 | C) \cdot P(x_2 | C) \cdot \dots \cdot P(x_n | C)

这一假设显然是“朴素”的,因为在实际应用中特征之间往往并非独立。然而,这种假设大大简化了计算,并且在许多应用场景中,即使独立性假设不完全成立,朴素贝叶斯分类器依然能够取得不错的效果。

(3)朴素贝叶斯的不同模型

根据特征的类型(如是否为离散型或连续型),朴素贝叶斯分类器可以使用不同的概率模型:

  • 高斯朴素贝叶斯(Gaussian Naive Bayes):用于连续特征,假设特征在每个类别条件下服从正态分布
  • 多项式朴素贝叶斯(Multinomial Naive Bayes):用于离散特征,常用于文本分类和词袋模型,假设特征(如词频)在每个类别下服从多项分布
  • 伯努利朴素贝叶斯(Bernoulli Naive Bayes):也用于离散特征,但假设每个特征都是一个二元变量(0或1),适合在文本分类中用来表示单词的出现与否。

(4)分类过程

        给定一个待分类的样本 X = (x_1, x_2, \dots, x_n),朴素贝叶斯分类器计算样本属于每个类别 C 的后验概率 P(C | X)。根据贝叶斯定理和朴素假设,有:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        P(C | X) \propto P(C) \cdot \prod_{i=1}^n P(x_i | C)

其中:

  • P(C) ,类先验概率,是类别的先验概率,可以根据训练集中该类别样本占总样本的比例来估计。
  • P(x_i | C) ,类条件概率,是给定类别 C 时特征 x_i 的条件概率,可以从训练数据中统计得到。

朴素贝叶斯模型的参数就是 P(C) 和 很多个 P(x_i | C) 。模型训练过程就是计算 P(C) 和 很多个P(x_i | C)的过程。

最后,朴素贝叶斯分类器将样本 X 分配到后验概率最大的类别:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        \hat{C} = \arg\max_C P(C) \cdot \prod_{i=1}^n P(x_i | C)

(5)分类过程中类先验概率的估计 

        朴素贝叶斯模型训练过程就是计算 P(C) 和 P(x_i | C)的过程,如何计算先验概率P(C) 呢?我们要清楚这里的先验概率是从样本中获得的,即求每个类别在所有样本中的概率,所以符合最大似然估计和最大后验估计已知结果求先验的思想,故使用最大后验估计(最大后验估计比最大似然估计更正确)求先验概率P(C) 。 

对于二分类,P(C)为伯努利分布,选用Beta分布作为共轭先验。

对于多分类,P(C)为多项分布,选用Dirichlet分布作为共轭先验。

(6)分类过程中类条件概率的估计 

        如何计算类条件概率 \prod_{i=1}^n P(x_i | C)  呢?我们要清楚这里的类条件概率的实际物理意义,即属于某类的样本中每个特征所占的比例再乘积,显然符合最大似然估计和最大后验估计的思想,故使用最大似然估计(此处对条件概率的计算一般只取决于数据集,当然,如果有先验的话可以用最大后验估计)求条件概率P(x_i | C) 。

i、特征取值离散情况下,可以用频率来估计:


        这实际上是通过最大化似然值得到的,因为我们在假设每个观测值来自同一个分布并根据观测数据的频率来估计参数。似然值表示在给定参数下观测到当前数据的概率。

使用 Laplace 平滑后的公式如下:

其中:k 是特征 X_i​ 的可能取值的总数。

ii、特征取值连续情况下,且在类边缘分布为高斯分布时,估计方式如下:

对于特征 x_{i,j} 在类别 Y_i = c 下的条件概率,假设其服从高斯分布 N(\mu_{c,j}, \sigma_{c,j})

        ​​​​​​​        p(x_{i,j} | Y_i = c, \mu_{c,j}, \sigma_{c,j}) = N(\mu_{c,j}, \sigma_{c,j}) = \frac{1}{\sqrt{2\pi\sigma_{c,j}}} \exp\left(-\frac{(x_{i,j} - \mu_{c,j})^2}{2(\sigma_{c,j})^2}\right)

可从样本中用最大似然估计来估计高斯分布的参数,估计高斯分布的参数如下:

在类别 c 的样本中,第 j  维特征的均值和方差的最大似然估计为:

  1. 均值估计

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​                ​​​​​​​        \hat{\mu}_{c,j} = \frac{\sum_{i=1}^N \mathbb{I}(Y_i = c) x_{i,j}}{\sum_{i=1}^N \mathbb{I}(Y_i = c)}

其中 \mathbb{I}(Y_i = c) 是指示函数,当 Y_i = c 时取值为 1,否则为 0。实际意义是c类样本中,第j维特征值的均值。

  1. 方差估计

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        (\sigma_{c,j})^2 = \frac{\sum_{i=1}^N \mathbb{I}(Y_i = c) (x_{i,j} - \mu_{c,j})^2}{\sum_{i=1}^N \mathbb{I}(Y_i = c)}

实际意义是 c类样本中,第j维特征值的经验方差。

注意:并不是所有连续的特征都服从高斯分布。

(7)朴素贝叶斯与最大似然估计、最大后验估计的联系

i、最大似然估计中,目的是求已知实验结果 C ,求参数 \theta 的最大可能值,即求arg\ \underset{\theta }{max}P(\theta |C)。但这个值不易求,用似然函数P(C|\theta )代替 P(\theta |C) 并求最大值,即求arg\ \underset{\theta }{max}P(C| \theta )

ii、最大后验估计中,目的仍然是求P(\theta |C),但这里不直接使用似然函数代替P(\theta |C),而是使用贝叶斯公式展开P(\theta |C),即使用\frac{P(C|\theta )P(\theta )}{P(C)} 来表示P(\theta |C),再求最大值,即求arg\ \underset{\theta }{max}\frac{P(C|\theta )P(\theta )}{P(C)} 。

iii、朴素贝叶斯分类器中,目的是根据样本信息求结果,前面两者都是有了实验结果,反推模型参数。而朴素贝叶斯求的是P(C | X),目的是求结果 C ,样本信息是给了P(x_{i}|C) ,先验P(C)也可以由样本得到,所以就可以由贝叶斯公式推出的P(X | C) = P(x_1 | C) \cdot P(x_2 | C) \cdot \dots \cdot P(x_n | C)  来 求  P(C | X)  了,某种角度来看朴素贝叶斯与恰好与最大后验估计反了。最大后验估计是已知结果根据贝叶斯展开求前提,而朴素贝叶斯是已知过程(这里的过程是从数据集中估计出来的)来求结果。

(8)朴素贝叶斯分类器的优缺点

优点

  • 简单高效:朴素贝叶斯分类器的实现和计算都非常简单,训练和预测速度都很快,适合大规模数据。
  • 低数据需求:对于每个类别,只需计算每个特征的条件概率,因此在数据较少时也能有效工作。
  • 表现良好:在特征之间相关性较低的应用中,朴素贝叶斯表现往往非常优异,即使特征间存在一定的依赖性,也通常可以取得较好的效果。

缺点

  • 朴素假设:假设特征之间条件独立在很多场景下并不成立,会影响分类准确性。
  • 数据稀疏性:如果某个类别中的特征在训练集中从未出现,其条件概率 P(x_i | C)0,可能导致某些类别的概率被归零。因此需要使用平滑技术(如Laplace平滑)来处理这种情况。
  • 连续特征的处理:在多项式和伯努利朴素贝叶斯模型中,处理连续特征较为复杂,通常需要先进行离散化或使用其他模型(如高斯朴素贝叶斯)。

1、多项式朴素贝叶斯分类举例 (PPT上的例子)

多项式朴素贝叶斯和伯努利朴素贝叶斯几乎是一样的,只是伯努利朴素贝叶斯的特征都是二值的,计算类条件概率时只有两项,比多项式朴素贝叶斯的还要少。

下面这个例子展示了如何使用 多项伯努利朴素贝叶斯分类器来判断一个账户是否为真实账户。

问题背景

  • 目标:预测给定账户是否为真实账户。
  • 标签Y = \text{yes}(真实账户)或 Y = \text{no}(不真实账户)。
  • 特征
    • X_1​:日志密度,取值为 {s, m, l}(小、中、大)。
    • X_2​:好友密度,取值为 {s, m, l}(小、中、大)。
    • X_ 3​:是否使用真实头像,取值为 {yes, no}。

步骤 1:计算先验概率

根据数据表格,统计真实账户和不真实账户的样本数量:

  • 总样本数 N = 10 。
  • 真实账户 Y = \text{yes} 的样本数 N_{\text{yes}} = 7 。
  • 不真实账户 Y = \text{no} 的样本数 N_{\text{no}} = 3 。

计算先验概率:

\hat{\theta}_{\text{yes}} = P(Y = \text{yes}) = \frac{N_{\text{yes}}}{N} = \frac{7}{10} = 0.7

\hat{\theta}_{\text{no}} = P(Y = \text{no}) = \frac{N_{\text{no}}}{N} = \frac{3}{10} = 0.3

步骤 2:计算条件概率(类条件分布)

Y = \text{yes}

  1. 特征 X_1​ 的条件概率(日志密度):

    • X_1 = s 的条件概率: \hat{\phi}_{\text{yes},1,s} = \frac{1 + 1}{7 + 3} = \frac{2}{10} = 0.2
    • X_1 = l 的条件概率: hat{\phi}_{\text{yes},1,l} = \frac{3 + 1}{7 + 3} = \frac{4}{10} = 0.4
    • X_1 = m 的条件概率: \hat{\phi}_{\text{yes},1,m} = \frac{3 + 1}{7 + 3} = \frac{4}{10} = 0.4
  2. 特征 X_2​ 的条件概率(好友密度):

    • X_2 = s 的条件概率: \hat{\phi}_{\text{yes},2,s} = \frac{1 + 1}{7 + 3} = \frac{2}{10} = 0.2
    • X_2 = l 的条件概率: \hat{\phi}_{\text{yes},2,l} = \frac{3 + 1}{7 + 3} = \frac{4}{10} = 0.4
    • X_2 = m 的条件概率: \hat{\phi}_{\text{yes},2,m} = \frac{3 + 1}{7 + 3} = \frac{4}{10} = 0.4
  3. 特征 X_3 的条件概率(是否使用真实头像):

    • X_3 = \text{yes} 的条件概率: \hat{\phi}_{\text{yes},3,\text{yes}} = \frac{5 + 1}{7 + 2} = \frac{6}{9} = 0.6667
    • X_3 = \text{no} 的条件概率: \hat{\phi}_{\text{yes},3,\text{no}} = \frac{2 + 1}{7 + 2} = \frac{3}{9} = 0.3333

Y = \text{no}

  1. 特征 X_1​ 的条件概率(日志密度):

    • X_1 = s 的条件概率: \hat{\phi}_{\text{no},1,s} = \frac{2 + 1}{3 + 3} = \frac{3}{6} = 0.5
    • X_1 = l 的条件概率: \hat{\phi}_{\text{no},1,l} = \frac{1 + 1}{3 + 3} = \frac{2}{6} = 0.3333
    • X_1 = m 的条件概率: \hat{\phi}_{\text{no},1,m} = \frac{0 + 1}{3 + 3} = \frac{1}{6} = 0.1667
  2. 特征 X_2​ 的条件概率(好友密度):

    • X_2 = s 的条件概率: \hat{\phi}_{\text{no},2,s} = \frac{2 + 1}{3 + 3} = \frac{3}{6} = 0.5
    • X_2 = l 的条件概率: \hat{\phi}_{\text{no},2,l} = \frac{1 + 1}{3 + 3} = \frac{2}{6} = 0.3333
    • X_2 = m 的条件概率: \hat{\phi}_{\text{no},2,m} = \frac{0 + 1}{3 + 3} = \frac{1}{6} = 0.1667
  3. 特征 X_3​ 的条件概率(是否使用真实头像):

    • X_3 = \text{yes} 的条件概率: \hat{\phi}_{\text{no},3,\text{yes}} = \frac{1 + 1}{3 + 2} = \frac{2}{5} = 0.4
    • X_3 = \text{no} 的条件概率: \hat{\phi}_{\text{no},3,\text{no}} = \frac{2 + 1}{3 + 2} = \frac{3}{5} = 0.6

步骤 3:预测新用户

假设我们有一个新用户,其特征为:

  • 日志密度 X_1 = m
  • 好友密度 X_2 = m
  • 使用真实头像 X_3 = \text{yes}

计算该用户属于 Y = \text{yes}Y = \text{no} 的概率:

  1. 计算 P(Y = \text{yes}|X_1 = m, X_2 = m, X_3 = \text{yes}) 

    P(Y = \text{yes}|X_1 = m, X_2 = m, X_3 = \text{yes}) \propto \\\hat{\phi}_{\text{yes},1,m} \cdot \hat{\phi}_{\text{yes},2,m} \cdot \hat{\phi}_{\text{yes},3,\text{yes}} \cdot \hat{\theta}_{\text{yes}}= \frac{4}{10} \times \frac{4}{10} \times \frac{6}{9} \times 0.7 = 0.07467
  2. 计算 P(Y = \text{no}|X_1 = m, X_2 = m, X_3 = \text{yes}) 

    P(Y = \text{no}|X_1 = m, X_2 = m, X_3 = \text{yes}) \propto \hat{\phi}_{\text{no},1,m} \cdot \hat{\phi}_{\text{no},2,m} \cdot \hat{\phi}_{\text{no},3,\text{yes}} \cdot \hat{\theta}_{\text{no}}\\= \frac{1}{6} \times \frac{1}{6} \times \frac{2}{5} \times 0.3 = 0.00167 

步骤 4:比较后验概率

P(Y = \text{yes}|X_1 = m, X_2 = m, X_3 = \text{yes}) >

                                                                      P(Y = \text{no}|X_1 = m, X_2 = m, X_3 = \text{yes})

因此,我们可以将该用户的账户分类为真实账户

2、高斯朴素贝叶斯分类器举

问题背景

  • 目标:预测给定特征的用户是否会购买产品。
  • 标签Y = \text{yes}(会购买)或 Y = \text{no}(不会购买)。
  • 特征
    • X_1​:年龄(连续变量)
    • X_2:收入(连续变量)

数据集

假设我们有以下训练数据:

年龄 (X1)收入 (X2)是否购买 (Y)
2550000yes
3054000yes
4590000yes
50100000yes
2348000no
3565000no
52120000no
4060000no

步骤 1:计算先验概率

根据训练数据,我们可以计算是否会购买产品的先验概率

  • 总样本数 N = 8
  • 会购买样本 N_{\text{yes}} = 4
  • 不会购买样本 N_{\text{no}} = 4

因此,先验概率为:

                                         P(Y = \text{yes}) = \frac{N_{\text{yes}}}{N} = \frac{4}{8} = 0.5

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​         P(Y = \text{no}) = \frac{N_{\text{no}}}{N} = \frac{4}{8} = 0.5

        此处使用Laplace平滑也可以,计算出来的结果也是那样。

步骤 2:计算类条件概率的参数(均值和方差)

        这里其实就是计算类条件概率服从的分布,即计算每个类条件概率的值。

假设年龄 X_1​ 和收入 X_2​ 在给定类别 Y 的条件下服从高斯分布。我们可以计算每个类别下特征的均值和方差。

Y = \text{yes}

  • 特征 X_1​(年龄)的均值和方差

    • 均值  \mu_{\text{yes}, X_1} = \frac{25 + 30 + 45 + 50}{4} = 37.5
    • 方差  \sigma_{\text{yes}, X_1}^2 = \frac{(25 - 37.5)^2 + (30 - 37.5)^2 + (45 - 37.5)^2 + (50 - 37.5)^2}{4} = 106.25
  • 特征 X_2​(收入)的均值和方差

    • 均值   \mu_{\text{yes}, X_2} = \frac{50000 + 54000 + 90000 + 100000}{4} = 73500
    • 方差  \sigma_{\text{yes}, X_2}^2 = \frac{(50000 - 73500)^2 + (54000 - 73500)^2 + (90000 - 73500)^2 + (100000 - 73500)^2}{4}        
      •                                                                                                = 502750000

Y = \text{no}

  • 特征 X_1(年龄)的均值和方差

    • 均值  \mu_{\text{no}, X_1} = \frac{23 + 35 + 52 + 40}{4} = 37.5
    • 方差  \sigma_{\text{no}, X_1}^2 = \frac{(23 - 37.5)^2 + (35 - 37.5)^2 + (52 - 37.5)^2 + (40 - 37.5)^2}{4} = 130.25
  • 特征 X_2​(收入)的均值和方差

    • 均值 \mu_{\text{no}, X_2} = \frac{48000 + 65000 + 120000 + 60000}{4} = 73250
    • 方差 \sigma_{\text{no}, X_2}^2 = \frac{(48000 - 73250)^2 + (65000 - 73250)^2 + (120000 - 73250)^2 + (60000 - 73250)^2}{4}
      •                                                                                              = 685812500

步骤 3:预测新样本

假设我们有一个新用户,其特征为:

  • 年龄 X_1 = 31
  • 收入 X_2 = 58000

我们想计算该用户属于 Y = \text{yes}Y = \text{no} 的后验概率。

计算 P(X = (31, 58000) | Y = \text{yes})

根据高斯分布的类条件概率公式:

        ​​​​​​​        ​​​​​​​        ​​​​​​​ P(X_1 = 31 | Y = \text{yes}) = \frac{1}{\sqrt{2 \pi \cdot 106.25}} \exp\left(-\frac{(31 - 37.5)^2}{2 \cdot 106.25}\right)

计算得到:

        ​​​​​​​        ​​​​​​​        ​​​​​​​​​​​​​​        ​​​​​​​ P(X_1 = 31 | Y = \text{yes}) \approx 0.030        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​

同样地,对于 X_2 = 58000

        ​​​​​​​        ​​​​​​​        ​​​​​​​ P(X_2 = 58000 | Y = \text{yes}) = \frac{1}{\sqrt{2 \pi \cdot 502750000}} \exp\left(-\frac{(58000 - 73500)^2}{2 \cdot 502750000}\right)        ​​​​​​​        

计算得到:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​ P(X_2 = 58000 | Y = \text{yes}) \approx 0.0011        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​

因此:

        ​​​​​​​         P(X = (31, 58000) | Y = \text{yes}) \approx 0.030 \times 0.0011 = 0.000033        ​​​​​​​        ​​​​​​​        

计算 P(X = (31, 58000) | Y = \text{no})

同样地,计算 P(X_1 = 31 | Y = \text{no})P(X_2 = 58000 | Y = \text{no})

        ​​​​​​​        P(X_1 = 31 | Y = \text{no}) = \frac{1}{\sqrt{2 \pi \cdot 130.25}} \exp\left(-\frac{(31 - 37.5)^2}{2 \cdot 130.25}\right) \approx 0.034        ​​​​​​​        ​​​​​​​        ​​​​​​​        P(X_2 = 58000 | Y = \text{no}) = \frac{1}{\sqrt{2 \pi \cdot 685812500}} \exp\left(-\frac{(58000 - 73250)^2}{2 \cdot 685812500}\right)

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        \approx 0.0013

因此:

P(X = (31, 58000) | Y = \text{no}) \approx 0.034 \times 0.0013 = 0.000044

计算后验概率并进行分类

使用贝叶斯公式来计算后验概率:

P(Y = \text{yes} | X = (31, 58000)) \propto P(X = (31, 58000) | Y = \text{yes}) \cdot P(Y = \text{yes}) = 0.000033 \times 0.5 = 0.0000165

P(Y = \text{no} | X = (31, 58000)) \propto P(X = (31, 58000) | Y = \text{no}) \cdot P(Y = \text{no}) = 0.000044 \times 0.5 = 0.000022

因为 P(Y = \text{no} | X = (31, 58000)) > P(Y = \text{yes} | X = (31, 58000)),所以我们预测该用户不会购买产品

六、高斯判别分析

1、高斯判别分析的基本假设

高斯判别分析假设每一类数据服从多元高斯分布,即:

p(x | Y = c) = \mathcal{N}(\mu_c, \Sigma_c)

其中,\mu_c ​是第 c 类的均值向量,\Sigma_c 是第 c 类的协方差矩阵。

2、类别的先验分布

和前面一样,对于类别变量Y,它的先验分布可以为伯努利分布(适用于二分类)或多项式分布(适用于多分类)。在分类过程中,我们使用贝叶斯公式来计算后验概率 P(Y = c | x) :

P(Y = c | x) = \frac{p(x | Y = c) P(Y = c)}{\sum_{c'} p(x | Y = c') P(Y = c')}

其中,P(Y = c) 是类别的先验概率,p(x | Y = c) 是条件概率密度函数。

3、判别函数

和前面一样,判别函数还是类条件概率与类先验的乘积。

使用判别函数来进行类别判别。对于类别c的判别函数定义为:

        ​​​​​​​        ​​​​​​​        ​​​​​​​ f_c(x) = \ln(P(x | Y = c)) + \ln(P(Y = c))

展开得到:

                ​​​​​​​ f_c(x) = -\frac{D}{2} \ln(2\pi) - \frac{1}{2} \ln |\Sigma_c| - \frac{1}{2} (x - \mu_c)^T \Sigma_c^{-1} (x - \mu_c) + \ln(P(Y = c))

其中,与参数无关的项可以省略,简化为:

        ​​​​​​​        ​​​​​​​ f_c(x) = -\frac{1}{2} \ln |\Sigma_c| - \frac{1}{2} (x - \mu_c)^T \Sigma_c^{-1} (x - \mu_c) + \ln(P(Y = c))

4、二次判别分析(QDA)

在二分类的情况下,可以对判别函数的简化,可用让两个判别函数 f_1(x) 和f_2(x)求差来进行分类判断:

         f_1(x) - f_2(x) = \\-\frac{1}{2} \ln \frac{|\Sigma_1|}{|\Sigma_2|} - \frac{1}{2} (x - \mu_1)^T \Sigma_1^{-1} (x - \mu_1) + \frac{1}{2} (x - \mu_2)^T \Sigma_2^{-1} (x - \mu_2) + \ln \frac{P(Y = 1)}{P(Y = 2)}

进一步简化,可以得出一个二次函数形式的判别条件,因此称为二次判别分析(QDA)

5、线性判别分析(LDA)

当两类的协方差矩阵相同时,即 \Sigma_1 = \Sigma_2 = \Sigma ,判别函数差值可进一步简化为线性形式:

        ​​​​​​​        ​​​​​​​        ​​​​​​​         f_1(x) - f_2(x) = (\mu_1 - \mu_2)^T \Sigma^{-1} x + b

其中,b为与x无关的常数项。此时,分类器被称为线性判别分析(LDA)

6、特殊情况:协方差矩阵为对角阵

在进一步简化的情况下,如果协方差矩阵是各向同性的,即  \Sigma_1 = \Sigma_2 = \sigma^2 I,判别函数可以更加简化。这样,决策边界是两个类别中心的垂直平分线。

7、高斯判别模型的训练

模型训练的过程就是估计类先验概率和类条件概率的过程,每个类的每个特征都符合高斯分布,所以需要对每个类别的每个特征的分布进行估计,就要计算相应的均值和方差。

在训练过程中,我们根据每一类的样本数据估计均值向量 \mu_c 和协方差矩阵 \Sigma_c​,其公式为:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        \mu_c = \frac{\sum_{i=1}^N \sum_{c=1}^C \mathbf{1}(Y_i = c) x_i}{\sum_{i=1}^N \sum_{c=1}^C \mathbf{1}(Y_i = c)}

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​      \Sigma_c = \frac{\sum_{i=1}^N \sum_{c=1}^C \mathbf{1}(Y_i = c) (x_i - \mu_c)(x_i - \mu_c)^T}{\sum_{i=1}^N \sum_{c=1}^C \mathbf{1}(Y_i = c)}

8、收缩估计(Shrinking Estimation)——正则化

当样本数较小或特征维度较高时,协方差矩阵的估计可能不稳定,会发生过拟合,也就是说,协方差会非常相信数据集,但数据集又非常小,因此需要加入正则化项,也就是需要加入一些先验,这里的先验就是高斯结构化矩阵。此时可以采用收缩估计,通过引入收缩因子 \delta 来调整协方差矩阵,提升其预测准确性:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​         \Sigma_c = (1 - \delta) S_c + \delta F

其中,F是高斯结构化矩阵,例如单位矩阵I

总结

高斯判别分析是一种强大的分类工具,通过假设数据分布符合高斯分布,计算后验概率实现分类。LDA和QDA是GDA的两种常见形式,分别适用于线性和非线性决策边界的情况。在高维小样本条件下,收缩估计可以提高协方差矩阵的估计稳定性。

七、⭐全文总结⭐

本文详细介绍了贝叶斯最优分类器、概率密度函数的参数估计、朴素贝叶斯分类器、高斯判别分析的内容。

1、对于贝叶斯分类器

        首先介绍了最小错误率决策,要让决策 P(c|x)的错误率最小,就要选择让 P(c|x)最大的类别,即 arg\ \underset{c}{max}P(c|x) 。使用了贝叶斯公式将 P(c|x)转化为了与类条件概率 P(x|c)和类先验概率 P(c)正比的一项,即 P(c|x)=\frac{P(x|c)\cdot P(c)}{P(x)},这里用不到 P(x),只需要让判别函数  P(x|c)\cdot P(c) 最大的类别。根据数据集计算样本属于各个类别的判别函数并选择判别函数最大的类别即是最终的决策类别。
        随后在最小错误率决策的基础上,为各个决策结果赋一个代价,不同的错误代价不同,在最小错误率决策中算出的各类的概率  P(c|x) 再乘以代价(或者选择各个类别判别函数值乘以代价),最终比较决策为各个类别的总代价,比较并选择代价最小的类别即为最小风险决策的类别。
        更进一步,当决策过程中,某个样本选择不同的两个类别的代价相近时,可以拒识(拒识代价是小于错判代价的)。

2、对于概率密度函数的参数估计

这部分内容主要就是最大似然估计、最大后验估计和贝叶斯估计了。其中最大似然估计是不考虑先验的估计,当样本量大或者先验均匀时选用,最大后验估计和贝叶斯估计是使用先验的,后验主要是根据样本对先验的更新。更重要的是,最大似然估计和最大后验估计是点估计,贝叶斯估计是对概率分布的估计,而且最大后验估计的值是贝叶斯估计后验分布的最大值。
本文中,对此部分的介绍主要是举例子,分别为对伯努利分布、多项分布、高斯分布、多元高斯分布进行三种参数估计。

3、对于朴素贝叶斯分类器

        朴素贝叶斯分类器的核心是贝叶斯公式,目的是求  arg\ \underset{c}{max}P(c|x) ,局限是假设了特征之间相互独立。训练过程是根据数据集利用最大似然估计(需要考虑先验的情况下可以是最大后验估计)来估计类先验概率 P(C)(是个向量),和类条件概率 P(X|C)(是个矩阵),连续高斯型特征的类条件概率的估计主要是寻找每个类下特征所属的高斯分布的参数,而这些参数仍然是从数据集中估计的。
最后再根据训练中估计的结果对新的样本属于各个类的概率进行计算,计算过程为
        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​         P(c|X)=P(c)\cdot \prod P(x_{i}|c)
最后再比较大小选定样本所属类别。
        本文中,对此部分内容先进行理论介绍,后举了两个例子,分别是多项式朴素贝叶斯估计和高斯朴素贝叶斯估计,文中对这两个例子进行了详细的分析和推导。

4、对于高斯判别分析

它属于二分类连续型多特征朴素贝叶斯分类,主要思想还是朴素贝叶斯分类器,文中给出了特殊情况下高斯判别分析的变化。最后又介绍了对高斯判别分析进行正则化的方式。

5、两个辨析

(1)本文《五》朴素贝叶斯分类器和《三》贝叶斯最优分类器的区别:

他们几乎是一样的,只不过对于贝叶斯最优分类器,类先验概率和类条件概率是已知信息,而朴素贝叶斯分类器的类先验概率和类条件概率需要从数据集中估计。

(2)高斯判别分析和朴素贝叶斯分类器的联系:

高斯判别分析属于两分类的朴素贝叶斯分类,且特征都是连续的,都符合高斯分布。即高斯判别分析属于朴素贝叶斯分类的一种。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2242769.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

游戏引擎学习第16天

视频参考:https://www.bilibili.com/video/BV1mEUCY8EiC/ 这些字幕讨论了编译器警告的概念以及如何在编译过程中启用和处理警告。以下是字幕的内容摘要&#xff1a; 警告的定义&#xff1a;警告是编译器用来告诉你某些地方可能存在问题&#xff0c;尽管编译器不强制要求你修复…

01.防火墙概述

防火墙概述 防火墙概述1. 防火墙的分类2. Linux 防火墙的基本认识3. netfilter 中五个勾子函数和报文流向 防火墙概述 防火墙&#xff08; FireWall &#xff09;&#xff1a;隔离功能&#xff0c;工作在网络或主机边缘&#xff0c;对进出网络或主机的数据包基于一定的 规则检…

express 从0-1如何创建一个项目 注册接口

内容参考&#xff1a; windos下安装mysql express 使用mysql 一、创建一个空项目 二、创建一个包管理工具 npm init -y三、安装需要的插件及app.js的部分实现 npm i express 安装express 框架 npm i cors 安装cors 用于跨域 npm install mysql2 安装mysql数据库 npm i b…

Shell基础(4)

声明&#xff01; 学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下&#xff0c;如涉及侵权马上删除文章&#xff0c;笔记只是方便各位师傅的学习和探讨&#xff0c;文章所提到的网站以及内容&#xff0c;只做学习交流&#xff0c;其他均与本人以及泷羽sec团…

(长期更新)《零基础入门 ArcGIS(ArcMap) 》实验一(下)----空间数据的编辑与处理(超超超详细!!!)

续上篇博客&#xff08;长期更新&#xff09;《零基础入门 ArcGIS(ArcMap) 》实验一&#xff08;上&#xff09;----空间数据的编辑与处理&#xff08;超超超详细&#xff01;&#xff01;&#xff01;&#xff09;-CSDN博客 继续更新 本篇博客内容为道路拓扑检查与修正&#x…

Python防检测之鼠标移动轨迹算法

一.简介 鼠标轨迹算法是一种模拟人类鼠标操作的程序&#xff0c;它能够模拟出自然而真实的鼠标移动路径。 鼠标轨迹算法的底层实现采用C/C语言&#xff0c;原因在于C/C提供了高性能的执行能力和直接访问操作系统底层资源的能力。 鼠标轨迹算法具有以下优势&#xff1a; 模拟…

3D编辑器教程:如何实现3D模型多材质定制效果?

想要实现下图这样的产品DIY定制效果&#xff0c;该如何实现&#xff1f; 可以使用51建模网线上3D编辑器的材质替换功能&#xff0c;为产品3D模型每个部位添加多套材质贴图&#xff0c;从而让3D模型在展示时实现DIY定制效果。 具体操作流程如下&#xff1a; 第1步&#xff1a;上…

Qt按钮类-->day09

按钮基类 QAbstractButton 标题与图标 // 参数text的内容显示到按钮上 void QAbstractButton::setText(const QString &text); // 得到按钮上显示的文本内容, 函数的返回就是 QString QAbstractButton::text() const;// 得到按钮设置的图标 QIcon icon() const; // 给按钮…

Cellebrite VS IOS18Rebooting

Cellebrite VS IOS18Rebooting我们想分享一些有关 iOS 18 重启“功能”的信息。在过去一周左右的时间里&#xff0c;人们对 iOS 18 中一项新的未记录功能产生了极大关注&#xff0c;该功能会导致设备在一段时间不活动后重新启动。 这意味着&#xff0c;如果设备在一定时间不活…

【Linux】:进程信号(详谈信号捕捉 OS 运行)

✨ 来去都是自由风&#xff0c;该相逢的人总会相逢 &#x1f30f; &#x1f4c3;个人主页&#xff1a;island1314 &#x1f525;个人专栏&#xff1a;Linux—登神长阶 ⛺️ 欢迎关注&#xff1a;&#x1f44d;点赞…

视觉SLAM相机——单目相机、双目相机、深度相机

一、单目相机 只使用一个摄像头进行SLAM的做法称为单目SLAM&#xff0c;这种传感器的结构特别简单&#xff0c;成本特别低&#xff0c;单目相机的数据&#xff1a;照片。照片本质上是拍摄某个场景在相机的成像平面上留下的一个投影。它以二维的形式记录了三维的世界。这个过程中…

MongoDB在现代Web开发中的应用

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 MongoDB在现代Web开发中的应用 MongoDB在现代Web开发中的应用 MongoDB在现代Web开发中的应用 引言 MongoDB 概述 定义与原理 发展…

OceanBase 分区表详解

1、分区表的定义 在OceanBase数据库中&#xff0c;普通的表数据可以根据预设的规则被分割并存储到不同的数据区块中&#xff0c;同一区块的数据是在一个物理存储上。这样被分区块的表被称为分区表&#xff0c;而其中的每一个独立的数据区块则被称为一个分区。 如下图所示&…

Linux(CentOS 7) yum一键安装mysql8

1、通过yum安装 &#xff08;1&#xff09;下载mysql 在Linux找个地方输入以下命令 wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm &#xff08;2&#xff09;安装mysql yum 仓库配置文件 [rootVM-8-15-centos ~]# sudo rpm -Uvh mysql80-c…

记一次预览USB摄像头并获取实时回调数据的过程(UVCAndroid集成)

背景 主工程是gradle4.8 jdk1.8 启用jetifier要接入的usb摄像头的库是UVCAndroid gradle8.7 jdk17 接入过程 看了下setCallbackActivity非常适合我们的需求&#xff0c;而且回调后的数据是RGB888&#xff0c;看到demo中用到了xml若干于是想到用aar打包&#xff0c;整个过程也…

shell脚本_永久环境变量和字符串操作

一、永久环境变量 1. 常见的环境变量 2. 设置永久环境变量 3.1.将脚本加进PATH变量的目录中 3.2.添加进环境变量里 3.2.修改用户的 shell 配置文件 二、字符串操作 1. 字符串拼接 2. 字符串切片 3. 字符串查找 4. 字符串替换 5. 字符串大小写转换 6. 字符串分割 7…

操作系统进程管理实验

父子进程 用系统调用fork()函数实现子进程的创建&#xff0c;熟悉进程创建的执行过程。 #include <stdio.h> #include <stdlib.h> #include <unistd.h>int main() {// 打印主进程的 PIDprintf("hello, world (pid: %d)\n", (int)getpid());// 创…

DB Type

P位 p 1时段描述符有效&#xff0c;p 0时段描述符无效 Base Base被分成了三个部分&#xff0c;按照实际拼接即可 G位 如果G 0 说明描述符中Limit的单位是字节&#xff0c;如果是G 1 &#xff0c;那么limit的描述的单位是页也就是4kb S位 S 1 表示代码段或者数据段描…

获取当前程序运行时的栈大小[C语言]

废话前言 一晃已经毕业了4年&#xff0c;也在某个时间点&#xff0c;从面试者转变成了面试官。 进行第一次面试的时候&#xff0c;我好像比候选人还慌张&#xff0c;压根不知道问什么&#xff0c;好在是同行业&#xff0c;看着简历问了一些协议内容以及模块设计思路&#xff0…

新160个crackme - 098-DueList.4

运行分析 需破解Name和Code PE分析 ASM汇编程序&#xff0c;32位&#xff0c;无壳 静态分析&动态调试 ida搜索找到关键字符串 ida动态调试&#xff0c;逻辑如上 算法分析 Name concealstr_1 SU7CSJKF09NCSDO9SDF09SDRLVK7809S4NF str_2 A1LSK2DJF4HGP3QWO5EIR6UTYZ8MXN…