朴素贝叶斯基础
基本概念:
条件概率: 指事件 A 在另外一个事件 B 已经发生条件下的概率
贝叶斯定理:
- P
- (
- A
- B
- )
- =
- P
- (
- A
∣
B
)
P
(
B)--->
先验概率: 先验概率 (Prior Probability) 指的是根据以往经验和分析得到的概率. 例如以上公式中的 P(A),P(B)P(A),P(B), 又例如: X 表示投一枚质地均匀的硬币, 正面朝上的概率, 显然在我们根据以往的经验下, 我们会认为 X 的概率 P(X)=0.5P(X)=0.5 . 其中 P(X)=0.5P(X)=0.5 就是先验概率.
后验概率: 后验概率 (Posterior Probability) 是事件发生后求的反向条件概率; 即基于先验概率通过贝叶斯公式求得的反向条件概率. 例如公式中的 P(B∣A) 就是通过先验概率 P(A)和 P(B)P(B)得到的后验概率, 其通俗的讲就是「执果寻因」中的「因」.
朴素贝叶斯:
朴素贝叶斯中的「朴素」, 即条件独立, 表示其假设预测的各个属性都是相互独立的, 每个属性独立地对分类结果产生影响, 对于预测数据, 求解在该预测数据的属性出现时各个类别的出现概率, 将概率值大的类别作为预测数据的类别
算法实现:
- """ 生成示例数据
- """
- import pandas as pd
- def create_data():
- data = {"x": ['r', 'g', 'r', 'b', 'g', 'g', 'r', 'r', 'b', 'g', 'g', 'r', 'b', 'b', 'g'],
- "y": ['m', 's', 'l', 's', 'm', 's', 'm', 's', 'm', 'l', 'l', 's', 'm', 'm', 'l'],
- "labels": ['A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B', 'B', 'B']}
- data = pd.DataFrame(data, columns=["labels", "x", "y"])
- return data
- data = create_data()
- data
参数估计
根据朴素贝叶斯的原理, 最终分类的决策因素是比较 P(类别 1∣特征),P(类别 2∣特征),...,P(类别 m∣特征)各个概率的大小, 根据贝叶斯公式得知每一个概率计算的分母 P(特征)P(特征) 都是相同的, 只需要比较分子 P(类别)和 P(特征∣类别)乘积的大小.
那么如何得到 P(类别), 以及 P(特征∣类别)呢? 在概率论中, 可以应用极大似然估计法以及贝叶斯估计法来估计相应的概率.
极大似然估计
设甲箱中有 99 个白球, 1 个黑球; 乙箱中有 1 个白球.99 个黑球. 现随机取出一箱, 再从抽取的一箱中随机取出一球, 结果是黑球, 这一黑球从乙箱抽取的概率比从甲箱抽取的概率大得多, 这时我们自然更多地相信这个黑球是取自乙箱的. 一般说来, 事件 A 发生的概率与某一未知参数 有关, 取值不同, 则事件 A 发生的概率 也不同, 当我们在一次试验中事件 A 发生了, 则认为此时的 值应是 t 的一切可能取值中使 达到最大的那一个, 极大似然估计法就是要选取这样的 t 值作为参数 t 的估计值, 使所选取的样本在被选的总体中出现的可能性为最大
目的就是利用已知样本结果, 反推最有可能造成这个结果的参数值.
极大似然估计提供了一种给定观察数据来评估模型参数的方法, 即:「模型已定, 参数未知」. 通过若干次试验, 观察其结果, 利用试验结果得到某个参数值能够使样本出现的概率为最大, 则称为极大似然估计.
来源: http://www.bubuko.com/infodetail-3132558.html