机器学习——贝叶斯定理

目录

一、贝叶斯定理简介

二、贝叶斯定理

2.1基本概念

2.2计算公式

2.3推断与应用

三、朴素贝叶斯

3.1简介

3.2基本思想

3.3算法步骤

3.4算法优缺点

四、应用案例

4.1乳腺癌预测示例

1.数据准备

2.计算先验概率

3.计算条件概率

4.计算后验概率

5.预测结果分析

4.2贝叶斯定理优点与局限

五、总结


一、贝叶斯定理简介

人对某一事件未来会发生的认知,大多取决于该事件或类似事件过去发生的频率。这就是贝叶斯定理的数学模型,它最早由数学家托马斯·贝叶斯提出。

贝叶斯生活在18世纪,他是一位牧师。1763年,他发表了论文《论有关机遇问题的求解》,提出了一种解决问题的框架思路,即通过不断增加信息和经验,逐步逼近真相或理解未知。这种思想奠定了贝叶斯理论的基础。

贝叶斯定理的过程可以归纳为:“过去经验”加上“新的证据”得到“修正后的判断”。它提供了一种将新观察到的证据和已有的经验结合起来进行推断的客观方法。

二、贝叶斯定理

2.1基本概念

先验概率:在考虑任何新证据之前,对事件发生的概率的初始估计。这是根据以往的经验或先前的知识得出的概率。

后验概率:在考虑了新证据之后,对事件发生的概率的修正估计。这是通过将先验概率与新证据结合起来,使用贝叶斯定理得出的概率。

条件概率:表示事件A在另一个事件B已经发生的条件下发生的概率,通常写作P(A|B),读作“A在给定B的条件下发生的概率”。

2.2计算公式

假设有随机事件A和B,它们的条件概率关系可以用以下数学公式表达

P(A|B) = \frac{P(B|A) \times P(A)}{P(B)}

  1. 其中,事件A是要考察的目标事件,P(A)是事件A的初始概率,称为先验概率,它是根据一些先前的观测或者经验得到的概率。
  2. B是新出现的一个事件,它会影响事件A。P(B)表示事件B发生的概率。
  3. P(B|A)表示当A发生时B的概率,它是一个条件概率。
  4. P(A|B)表示当B发生时A的概率(也是条件概率),它是我们要计算的后验概率,指在得到一些观测信息后某事件发生的概率。

2.3理解与应用

过去没有大数据,所以先验概率很难获得。这些年来,很多数据被人们积累下来,贝叶斯模型的运用领域也越来越广泛。

比如在一些语言翻译的网站、医疗诊断的仪器中,就会用到贝叶斯的统计方法。还有在电子邮件软件中,也集成了基于贝叶斯方法的垃圾邮件过滤功能。

贝叶斯定理告诉我们,即便获得了新的证据,也不要完全放弃初始的信念。新的证据会让我们对某些结果更有信心,或帮助我们修正初始信念的错误。

也就是说,我们既要关注新的证据,又不能忽略初始信念。新的证据很重要,因为初始信念可能是错的,这些证据可以用于做出修正。但同时,初始信念仍然是重要的基础,不能只根据新证据就草率地做出判断。

   贝叶斯定理的应用,包括但不限于:

  1. 医学诊断:在医学中,贝叶斯定理可用于确定疾病的风险和诊断结果的准确性。医生可以根据患者的症状和检测结果,结合先验知识和条件概率,计算出患某种疾病的后验概率,从而做出更准确的诊断。
  2. 机器学习:在机器学习中,贝叶斯定理通常用于概率图模型和贝叶斯推断。例如,在朴素贝叶斯分类器中,我们使用贝叶斯定理来计算给定特征的情况下某个类别的后验概率,从而对新数据进行分类。
  3. 自然语言处理:在自然语言处理中,贝叶斯定理可以用于文本分类、情感分析等任务。通过将先验概率与文本中的单词或短语的出现频率结合起来,可以推断出文本所属的类别或情感倾向。
  4. 信号处理:在通信和信号处理领域,贝叶斯推断可用于解决噪声干扰下的信号恢复和通信问题。通过考虑先验概率和观测数据,可以推断出信号的真实值。
  5. 金融领域:在金融领域,贝叶斯定理可用于风险管理、投资组合优化和预测金融市场趋势。通过结合历史数据和先验知识,可以更准确地估计资产的风险和收益。
  6. 搜索引擎:贝叶斯推断在搜索引擎中也有应用,例如用于个性化搜索结果排序和相关性评分的计算。通过考虑用户的历史搜索行为和网页内容的特征,可以提高搜索结果的准确性和用户满意度。

这些只是贝叶斯定理在各个领域中的一些应用示例,它在实际问题中的应用非常广泛,并且不断在不同领域中发现新的应用场景。

三、朴素贝叶斯

3.1简介

贝叶斯定理研究的是条件概率,也就是在特定条件下发生的概率问题。基于这一数学思想,人们提出了一种叫作朴素贝叶斯的算法。

朴素贝叶斯(Naive Bayes)是基于贝叶斯定理和特征条件独立假设的一组简单且高效的分类算法。

朴素贝叶斯常用于解决分类问题,它的目的是把具有某些特征的样本划分到最可能属于的类别中。也就是说,样本属于哪个类别的概率最大,就认为它属于哪个类别。

3.2基本思想

1.特征条件独立性假设:朴素贝叶斯算法假设给定类别的情况下,特征之间是条件独立的。这意味着对于给定的类别,特征之间的存在或者不存在是不相关的。

朴素贝叶斯算法为何要设置条件独立的前提

这是因为,如果每个特征不是相互独立的,在计算条件概率时,就必须把这些特征的所有排列组合都考虑一遍。这样不仅计算量大,还会产生指数级的参数数量,实际执行起来难度很大。

2.贝叶斯定理:利用贝叶斯定理计算后验概率,即给定某个类别的情况下,某个样本属于这个类别的概率。

3.3算法步骤

  1. 数据预处理:对数据进行预处理,包括数据清洗、特征选择、特征提取等。
  2. 特征条件独立性假设:基于特征条件独立性假设,计算每个特征在每个类别下的条件概率。
  3. 贝叶斯分类:对于新样本,利用贝叶斯定理计算其属于每个类别的后验概率,选择后验概率最大的类别作为分类结果。

3.4算法优缺点

1.优点

(1)简单高效:朴素贝叶斯算法简单易懂,计算效率高,适用于大规模数据集。

(2)对小规模数据表现良好:在小规模数据集上表现良好,对缺失数据不敏感。

(3)适用于多分类问题:可以处理多分类问题。

2.缺点

(1)特征独立性假设过于简化:特征条件独立性假设在现实中并不总是成立,可能导致模型偏差。

(2)需要足够的训练数据:朴素贝叶斯算法对训练数据的质量和数量要求较高。

(3)处理连续型特征不够优秀:对于连续型特征,朴素贝叶斯通常会将其离散化处理,可能损失一些信息。

朴素贝叶斯算法在文本分类、垃圾邮件过滤、情感分析等领域有广泛的应用,尤其在自然语言处理领域表现突出。

四、应用案例

4.1乳腺癌预测示例

1.数据准备
import pandas as pd

data = {'年龄': [25, 30, 35, 40, 45, 50, 55, 60, 65, 70],
        '性别': ['女', '女', '女', '女', '女', '女', '女', '女', '女', '女'],
        '肿瘤大小': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
        '肿块性质': ['是', '是', '是', '是', '否', '否', '否', '否', '否', '否']}
df = pd.DataFrame(data)
print("数据准备:")
print(df)

运行结果:创建一个包含年龄、性别、肿瘤大小和肿块性质的数据框。

2.计算先验概率
# 2. 计算先验概率
prior_prob = df['肿块性质'].value_counts(normalize=True)
print("先验概率:")
print(prior_prob)

使用 value_counts(normalize=True) 函数计算肿块性质的先验概率。这里使用了 normalize=True 参数,以便得到概率值而不是计数值。

运行结果:肿块性质是否为恶性的概率

3.计算条件概率
# 3. 计算条件概率
conditional_prob = df.groupby(['肿块性质', '年龄']).size().unstack(fill_value=0)
conditional_prob = conditional_prob.div(conditional_prob.sum(axis=1), axis=0)
print("条件概率:")
print(conditional_prob)

使用 groupby 函数按照肿块性质和年龄进行分组,然后使用 size() 函数得到每个组的数量。接着使用 unstack(fill_value=0) 函数将数据重新排列成二维表格,确保每个年龄值都有对应的条件概率。最后使用 div() 函数计算每个条件概率。

运行结果:每个年龄值肿块性质对应的条件概率

4.计算后验概率
# 4. 计算后验概率
def posterior_prob(age):
    likelihood = conditional_prob.loc[('是', age)] / prior_prob['是']
    return likelihood * prior_prob['是']

age = 30
print("后验概率:")
print(posterior_prob(age))

定义了一个函数 posterior_prob(age),该函数根据年龄计算对应的后验概率。它首先通过索引 ('是', age) 来获取相应的条件概率,然后除以先验概率。最后返回计算得到的后验概率。

运行结果:

5.预测结果分析
# 5. 预测结果分析
if posterior_prob(age) > 0.5:
    print("预测结果分析:")
    print("患乳腺癌的概率大于50%。")
else:
    print("预测结果分析:")
    print("患乳腺癌的概率小于或等于50%。")

根据计算得到的后验概率,判断是否患有乳腺癌。如果后验概率大于0.5,则判断为患有乳腺癌。

这个案例主要目的是演示使用朴素贝叶斯分类器来进行二分类任务,即根据特征预测患者是否患有乳腺癌。

运行结果:

完整代码:

import pandas as pd

data = {'年龄': [25, 30, 35, 40, 45, 50, 55, 60, 65, 70],
        '性别': ['女', '女', '女', '女', '女', '女', '女', '女', '女', '女'],
        '肿瘤大小': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
        '肿块性质': ['是', '是', '是', '是', '否', '否', '否', '否', '否', '否']}
df = pd.DataFrame(data)
print("数据准备:")
print(df)

# 2. 计算先验概率
prior_prob = df['肿块性质'].value_counts(normalize=True)
print("先验概率:")
print(prior_prob)

# 3. 计算条件概率
conditional_prob = df.groupby(['肿块性质', '年龄']).size().unstack(fill_value=0)
conditional_prob = conditional_prob.div(conditional_prob.sum(axis=1), axis=0)
print("条件概率:")
print(conditional_prob)

# 4. 计算后验概率
def posterior_prob(age):
    likelihood = conditional_prob.loc[('是', age)] / prior_prob['是']
    return likelihood * prior_prob['是']

age = 30
print("后验概率:")
print(posterior_prob(age))

# 5. 预测结果分析
if posterior_prob(age) > 0.5:
    print("预测结果分析:")
    print("患乳腺癌的概率大于50%。")
else:
    print("预测结果分析:")
    print("患乳腺癌的概率小于或等于50%。")

4.2贝叶斯定理优点与局限

  1. 优点:能够自然地处理不确定性,能够利用先验知识有效地更新后验概率,尤其适用于小样本情况。
  2. 局限:需要给定先验概率,选择合适的先验可能会影响结果;在计算边际概率时可能需要求和或积分,计算复杂度较高。

五、总结

贝叶斯定理提供了一种理论框架,通过有效地结合先验知识和观测数据,可以对未知事件进行推断和预测,是统计学和机器学习中重要的工具之一。

贝叶斯定理虽然只是一个数学公式,但其内涵已远远超出了公式范畴。它告诉我们,要从不同角度去思考已有的想法,以不同的方式来检验它们,通过实践不断调整对问题的假设和看法。

它提供了一种看待事物的全新视角。在一个不确定的环境下,每条信息都会影响原来的概率假设,需要根据最新的信息更新和改进决策,直到决策者从一切都不确定的状态变成可以坚定信心的状态。

  • 26
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值