理论--贝叶斯算法笔记

以下内容笔记出自‘跟着迪哥学python数据分析与机器学习实战’,外加个人整理添加,仅供个人复习使用。


导入

正向概率:
假设口袋里N个白球,N个黑球,你伸手随便拿一个球,拿出黑球的概率多大?

逆向概率:
如果事先不知道袋子里面黑白球的比例,而是闭着眼睛摸出一个(或几个)球,观察这些取出来的球的颜色后,袋子里面的黑白球比例是多大?


假设一个学校男生占比60%,女生占比40%,并且男生总是穿长裤,女生一半穿长裤,一半穿裙子。
**正向概率:**随机选取一个学生,穿长裤和穿裙子的概率是多大?
**逆向概率:**迎面走来一个穿长裤学生,只看得见穿的是否是长裤,但无法确定性别,能够推断是女生的概率吗?

小例计算:

假设总人数为:U
穿长裤男生个数:U x P(Boy) x P(Pants | Boy)
-------其中,P(Boy)=60%,P(Pants | Boy)=100%为条件概率
穿长裤女生个数:U x P(Girl) x P(Pants | Girl)
-------其中,P(Girl)=40%,P(Pants | Girl)=50%为条件概率

重新分析逆向概率的问题:走来一个穿长裤的学生,他(她)是女生的概率是多少?首先是穿长裤,然后是性别为女,也就是求穿长裤的人里面有多少女生。
1.首先要算穿长裤的有多少人:
U * P(Boy) * P(Pants | Boy) + U * P(Girl) * P(Pants | Girl)

2.然后算穿长裤的人有多少女生:
可以用穿长裤的女生人数占穿长裤的学生总数来计算
U * P(Girl) * P(Pants | Girl) / 穿长裤总数

可以看到,这里总人数U可以消去,计算结果与总人数无关,因此,穿长裤的人里面女生占比:

再化简,上式的分母是穿长裤的总人数(消U前),性别只有2种,去掉总数U对结果的影响,就是穿长裤的概率,化简得:
P(Girl | Pants)=P(Girl) * P(Pants | Girl) / P(Pants)
即:
P(B | A)=P(B) x P(A | B) / P(A)

以上是贝叶斯模型的介绍。


我们建立贝叶斯模型,依赖于上方的贝叶斯公式与条件独立概率公式。条件独立概率公式是将上述的朴素贝叶斯理论扩展到多维情况:

首先我们建模的样本是包含多个特征的向量,如有样本(输入变量) X={x1 , x2 , x3 , … ,xn},其中,每一个 x 为 X 的一个特征属性,有类别结合(输出变量)Y={y1 , y2 , … , ym}

我们建模的目的是计算 p(y1 | X),p(y2 | X),…,p(ym | X),选出在已知样本 X 的情况下(条件),类别y1,…,ym出现概率最大(条件概率最大)的那个类别 y 。此时我们判断该样本属于该类别。

扫描二维码关注公众号,回复: 11701427 查看本文章

因此,计算p(y1 | X),p(y2 | X),…,p(ym | X)是我们的重点!

根据贝叶斯公式,要计算p(y1 | X),我们可以通过p(y1 | X)=P(y1) * P(X | y1) / P(X),在这个师资中,P(y1) 与 P(X)在已知数据中是可以计算的,那么如何计算P(X | y1) ?

我们知道X={x1 , x2 , x3 , … ,xn},因为 X 是多维向量,直接计算不可行,但通过P(X | y1) =P({x1 , x2 , x3 , … ,xn} | y1) ,在X的特征相互独立条件下,有

P(X | y1) =P(x1 | y1) * P(x2 | y1) * P(x3 | y1) * … * P(xn | y1)

而上面的式子是可以根据数据集计算出来的。

因此:
p(y1 | X)=P(y1) * P(X | y1) / P(X)

            • =P(y1) * [P(x1 | y1) * P(x2 | y1) * P(x3 | y1) * … * P(xn | y1) ] / P(X)

整体流程为:

  1. 原始数据集准备
  2. 对每个类别计算 p(yi)
  3. 每个特征属性 xi 计算条件概率 p(xi | yi)
  4. 计算样本条件下的类别概率(条件概率) P(X | yi)
  5. 计算p(yi | X)=P(yi) * P(X | yi) / P(X) 并选出最大值,其对应类别即为最终的预测类别。

猜你喜欢

转载自blog.csdn.net/qq_43165880/article/details/107148115