假设即将参加一家公司的面试,而朋友在之前已经完成了面试。原本估计自己被选中的机会很低,但当朋友告诉面试相当简单,并且他/她觉得自己有很大的机会被选中时,会不会重新评估自己的机会呢?这就是贝叶斯定理的精髓所在。
贝叶斯定理可能是概率论中最重要的定理之一。简而言之,贝叶斯定理帮助根据一些新的证据更新之前的信仰。这可能是贝叶斯定理的核心思想。相信心中一定有很多疑问,但不用担心,会为一一解答。
在深入贝叶斯定理之前,需要回顾一下条件概率的概念。传统的概率可以解释为有利事件数量与总事件数量的比率。利用这个概念,可以推导出条件概率公式,即在事件B发生的情况下事件A发生的概率。因此,上述公式将被修改为:
使用弹珠进行说明
袋子1 - 2个白色,3个黑色弹珠
袋子2 - 4个白色,2个黑色弹珠
现在,如果要计算从袋子1中抽取白色弹珠的概率,肯定能轻松计算出来,对吧?(2/5 = 40%) 另一方面,如果说抽到了白色弹珠,确定它来自袋子2的概率是多少。将如何计算呢?
进入‘托马斯·贝叶斯’。他发现,如果能估计P(A),P(B)和条件概率P(B|A)的值,可以计算条件概率P(A|B)。这就是为什么这个定理也被称为‘原因的概率’。
事件A - 抽到白色弹珠
事件E1 - 选择袋子1
事件E2 - 选择袋子2
P(选择袋子1) = P(E1) = P(选择袋子2) = P(E2) = 1/2
P(白色弹珠,假设它来自袋子1) = P(A|E1) = 2/5
P(白色弹珠,假设它来自袋子2) = P(A|E2) = 4/6
要找到,假设抽到的是白色弹珠,那么它来自袋子2的概率。借助贝叶斯定理,可以找到P(E2|A)。
在上述公式中填入值后,应该得到答案。
使用足球进行说明
为了更好地理解,来看一个教科书之外的例子。
穆罕默德·萨拉赫是一位世界级的足球运动员,他作为利物浦足球俱乐部的前锋。他主要是用左脚射门。因此,他用左脚射门的次数更多。
让找出他用右脚射门得分的机会。
注意:xG(预期进球)是衡量射门质量的指标;根据记录,从那个位置进球的机会有多大。
让事件如下:
A - 进球
E1 - 射门是用右脚完成的
E2 - 射门是用左脚完成的
如下图所示,萨拉赫在2021-22赛季总共有139次射门。因此,
P(射门是用右脚完成的) =
P(E1) = 15/139 = 0.1079
P(射门是用左脚完成的) =
P(E2) = 117/139 = 0.8417
现在对于条件概率,将等于该特定脚的xG/射门。
P(进球,假设射门是用右脚完成的) =
P(A|E1) = 0.27
P(进球,假设射门是用左脚完成的) =
P(A|E2) = 0.16
现在只剩下将值放入第一个例子中提到的公式中,然后就得到了答案。
所以萨拉赫用右脚射门,假设射门得分的机会是0.1779 ~ 18%。因此,
有18%的机会射门是用右脚完成的,假设它是一个进球。
同样,能确定萨拉赫用左脚射门,假设结果是进球的概率吗?在评论中告诉答案。
贝叶斯定理在机器学习中的应用
在理解了贝叶斯定理之后,让快速尝试理解其在机器学习中的用途。朴素贝叶斯定理是最快的机器学习算法之一,最好的部分是它很容易解释。
该模型用于分类,无论是二元分类还是多类分类。最终目标是获得类别的最大后验概率,并将该类别分配为预测类别。
如上图所示,可以计算每个类别给定特征的后验概率,并选择最大后验概率,也称为
最大后验概率(MAP)
每个类别的边际概率是恒定的,仅用于归一化结果。
朴素贝叶斯分类器快速,可以提供实时结果。它广泛用于文本分类进行情感分析。根据数据类型,有不同类型的朴素贝叶斯模型。
高斯
正态分布
连续值
多项式:
多项式分布
多项式分类变量
伯努利:
二项分布
二进制分类变量
朴素贝叶斯模型假设特征是独立的,这意味着数据没有多重共线性,这在现实世界问题中并非如此。尽管如此,该模型在各种分类问题中表现良好,如垃圾邮件过滤。
使用朴素贝叶斯模型的获胜预测器
让在python中实现朴素贝叶斯模型,以更好地理解该模型。首先导入数据和所需的库。数据是从fotmob.com抓取的;可以在这里查看教程。
# 首页 — 1
# 客场 — 2
# 平局 — 0
results = []
result = 0
for i in range(len(df)):
if df.home_team_score[i] > df.away_team_score[i]:
result = 1
results.append(result)
elif df.home_team_score[i] < df.away_team_score[i]:
result = 2
results.append(result)
else:
result = 0
results.append(result)
df['result'] = results
接下来,用数字替换了球队名称。
df.replace({'ATK Mohun Bagan FC':1, 'Bengaluru FC':2,
'SC East Bengal':3,'Mumbai City FC':4, 'Hyderabad FC':5,
'Odisha FC':6,'Northeast United FC':7, 'FC Goa':8,
'Jamshedpur':9,'Chennaiyin FC':10,'Kerala Blasters FC':11},inplace=True)
训练模型并预测结果。
X = df.drop(['result'],axis=1)
y = df['result']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
gnb = GaussianNB()
y_pred = gnb.fit(X_train, y_train).predict(X_test)
cf = confusion_matrix(y_test,y_pred)
sns.heatmap(cf, annot=True)
考虑到数据集中只有110个数据点,模型的输出相当不错。通过特征工程和训练更多的数据点,可以提高准确性。
结论
贝叶斯定理是最简单的但有益的概率定理之一。它为各种机器学习模型奠定了基础,如朴素贝叶斯模型。尽管要记住朴素贝叶斯模型假设特征之间没有相关性。
概率科学非常迷人,特别是对于数据爱好者来说。预测结果是一名数据科学家日常工作的一部分;因此,理解机器学习模型对于优化结果至关重要。
贝叶斯定理是一种科学的方法,用于在给定新证据的情况下更新先前的信仰。也就是说,如果事件A、B和(B给定A)的概率是可用的,那么可以计算P(A给定B)。
它在金融、体育和健康等多个领域中用于估计赔率。