机器学习算法理论:贝叶斯

发布时间:2024年01月17日

? ? ? ? 贝叶斯定理对于机器学习来说是经典的概率模型之一,它基于先验信息和数据观测来得到目标变量的后验分布。具体来说,条件概率(也称为后验概率)描述的是事件A在另一个事件B已经发生的条件下的发生概率,公式表示为P(A|B),读作“在B条件下A的概率”。

最常用的贝叶斯机器学习模型

  • 朴素贝叶斯模型:这是一个基于贝叶斯定理的分类算法,其核心思想是:对于给定的输入特征,假设每个特征之间都是独立的。尽管这个假设在实际应用中可能不成立,但朴素贝叶斯模型在许多场景下都表现出了很好的性能。

  • 贝叶斯网络模型:这是一个用于表示变量之间复杂关系的概率图模型。贝叶斯网络可以用于推断、学习和推理,广泛应用于各种机器学习任务中。

基本原理

公式:

eq?P%28A%7CB%29%20%3D%20%5Cfrac%7BP%28B%7CA%29%5Ccdot%20P%28A%29%7D%7BP%28B%29%7D

?其中:

  • eq?P%28A%7CB%29:表示在B发生的情况下,A发生的概率,即得自B的取值而被称作A的后验概率
  • eq?P%28B%7CA%29:表示在A发生的情况下,B发生的概率,即得自A的取值而被称作B的后验概率
  • eq?P%28A%29:表示A发生的概率,也称A的先验概率
  • eq?P%28B%29:表示B发生的概率,也称B的先验概率

例1

? ? ? ? 现分别有 A、B 两个容器,在容器 A 里分别有 7 个红球和 3 个白球,在容器 B 里有 1 个红球和 9 个白球,那么从这两个容器里任意抽出了一个红球,问这个球来自容器 A 的概率是多少?

?首先我们先定义事件:

  • A:为选中A容器 ?
  • B:为抽出红球

已知:

  • eq?P%28B%29:抽中红球的概率为8/20
  • eq?P%28A%29:选中A容器的概率1/2
  • eq?P%28B%7CA%29:在A容器内抽中红球的概率为7/10

求:从这两个容器里任意抽出了一个红球,问这个球来自容器 A 的概率是多少?

套入公式:

20%7D%3D%200.875

解得:?从这两个容器里任意抽出了一个红球,这个球来自容器 A 的概率87.5%

?

例2

? ? ? ? 假设新冠状病毒测试,用于检测是否感染了新冠状病毒。这个测试不是100%准确,会有假阳性和假阴性的情况。那么,测试结果为阳性的概率(阳性率)是98%,测试结果为阴性的概率(阴性率)是95%,实际感染新冠状病毒的人的概率(患病率)是1%,现在,有一个人的测试结果为阳性,根据以上信息判断这个人是否真的感染了新冠状病毒。

阳性率阴性率患病率
98%95%1%

首先我们先定义事件:

  • eq?A:测试结果为阳性
  • eq?B:实际感染了病毒
  • eq?B_1:未感染病毒

根据以上信息已知:

  • eq?P%28A%7CB%29:在实际感染病毒患病的情况下,测试结果为阳性的概率,即真阳性率。这个值是98%
  • eq?P%28A%7CB_1%29:在未感染病毒患病的情况下,测试结果为阳性的概率,即假阳性率。这个值是2%(100%-98%)
  • eq?P%28B%29:实际感染病毒患病率为1%
  • eq?P%28B_1%29:实际未感染新冠状病毒的概率,即99%
  • eq?P%28A%29:测试为阳性的总概率

使用全概率公式计算eq?P%28A%29

eq?P%28A%29%3D%5Csum%20P%28A%7CB_i%29P%28B_i%29%3DP%28A%7CB%29P%28B%29+P%28A%7CB_1%29P%28B_1%29

eq?%3D0.98%5Ctimes%200.01+0.99%5Ctimes%200.02%3D0.0296

其中,eq?P%28A%29表示事件A发生的概率,eq?%5Csum表示对所有可能的状态eq?B_i求和,eq?P%28B_i%29表示状态eq?B_i的概率,eq?P%28A%7CB_i%29表示在状态eq?B_i下事件eq?A发生的概率。

代入贝叶斯公式计算eq?P%28B%7CA%29

即测试结果为阳性,是否真的感染了新冠状病毒的概率

%200.0296%20%5Capprox%200.3333

解得:?测试结果为阳性,确认感染了新冠状病毒的概率约为33%。

?

朴素贝叶斯?

? ? ? ? 朴素贝叶斯是一种基于贝叶斯定理的分类算法,它假设特征之间相互独立。朴素贝叶斯在文本分类、垃圾邮件过滤、情感分析等领域有广泛应用。朴素贝叶斯的基本原理是:对于给定的训练数据集,计算每个类别的概率,然后根据输入的特征计算属于每个类别的概率,最后选择概率最大的类别作为预测结果。

示例

使用sklearn库的朴素贝叶斯分类器

from sklearn.datasets import fetch_openml  # 导入fetch_openml函数,用于加载Fashion MNIST数据集
from sklearn.model_selection import train_test_split  # 导入train_test_split函数,用于将数据集划分为训练集和测试集
from sklearn.naive_bayes import GaussianNB  # 导入GaussianNB类,用于创建朴素贝叶斯分类器
from sklearn.metrics import accuracy_score  # 导入accuracy_score函数,用于计算预测准确率

# 加载Fashion MNIST数据集
fashion_mnist = fetch_openml('fashion_mnist', version=1)
X = fashion_mnist.data  # 获取数据集的特征
y = fashion_mnist.target  # 获取数据集的标签

# 将数据集划分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 创建朴素贝叶斯分类器
gnb = GaussianNB()

# 训练模型
gnb.fit(X_train, y_train)

# 预测测试集结果
y_pred = gnb.predict(X_test)

# 输出预测准确率
print("朴素贝叶斯分类器预测准确率:", accuracy_score(y_test, y_pred))

?

文章来源:https://blog.csdn.net/lymake/article/details/135650820
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。