贝叶斯定理及其在机器学习中的应用

假设即将参加一家公司的面试,而朋友在之前已经完成了面试。原本估计自己被选中的机会很低,但当朋友告诉面试相当简单,并且他/她觉得自己有很大的机会被选中时,会不会重新评估自己的机会呢?这就是贝叶斯定理的精髓所在。

贝叶斯定理可能是概率论中最重要的定理之一。简而言之,贝叶斯定理帮助根据一些新的证据更新之前的信仰。这可能是贝叶斯定理的核心思想。相信心中一定有很多疑问,但不用担心,会为一一解答。

在深入贝叶斯定理之前,需要回顾一下条件概率的概念。传统的概率可以解释为有利事件数量与总事件数量的比率。利用这个概念,可以推导出条件概率公式,即在事件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)。

它在金融、体育和健康等多个领域中用于估计赔率。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485