19. 机器学习——朴素贝叶斯

机器学习面试题汇总与解析——朴素贝叶斯

本章讲解知识点

    1. 什么是朴素贝叶斯


  • 本专栏适合于Python已经入门的学生或人士,有一定的编程基础。

  • 本专栏适合于算法工程师、机器学习、图像处理求职的学生或人士。

  • 本专栏针对面试题答案进行了优化,尽量做到好记、言简意赅。这才是一份面试题总结的正确打开方式。这样才方便背诵

  • 如专栏内容有错漏,欢迎在评论区指出或私聊我更改,一起学习,共同进步。

  • 相信大家都有着高尚的灵魂,请尊重我的知识产权,未经允许严禁各类机构和个人转载、传阅本专栏的内容。


  • 关于机器学习算法书籍,我强烈推荐一本《百面机器学习算法工程师带你面试》,这个就很类似面经,还有讲解,写得比较好。

  • 关于深度学习算法书籍,我强烈推荐一本《解析神经网络——深度学习实践手册》,简称 CNN book,通俗易懂。

  • B站机器学习视频:https://space.bilibili.com/10781175/channel/detail?cid=133301



1. 什么是朴素贝叶斯

1.1 基本概念

贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类。而朴素朴素贝叶斯分类是贝叶斯分类中最简单,也是常见的一种分类方法。

朴素贝叶斯(Naive Bayes)是一种基于贝叶斯定理和特征条件独立性假设的分类算法。它通过统计特征在不同类别下的条件概率,来进行分类任务。

1.2 算法流程

朴素贝叶斯算法的流程如下,每一步都列出了对应的公式:

1.准备训练数据集:包含多个样本和对应的类别标签:已知集合 C = ( y 1 , y 2 , . . . y n ) C=(y_1,y_2,...y_n) 和特征 X = ( x 1 , x 2 , . . . x n ) X=(x_1,x_2,...x_n) ,确定映射规则 y = f ( ) y = f(\cdot) ,使得任意 x i X x_i \in X 有且仅有一个 y i C y_i \in C 使得 y i f ( x i ) y_i \in f(x_i) 成立。其中 C C 叫做类别集合,其中每一个元素是一个类别,而 X X 叫做项集合(特征集合),其中每一个元素是一个待分类项, f ( ) f(\cdot) 叫做分类器。分类算法的任务就是构造分类器 f ( ) f(\cdot)

2.计算类别的先验概率: 先验概率 P ( Y = C ) P(Y = C) 表示类别 C C 在训练集中的出现频率。 公式: P ( Y = C ) = c o u n t ( Y = C ) c o u n t ( t o t a l ) P(Y = C) = \frac{count(Y = C)} {count(total)}

3.计算特征的条件概率: 条件概率 P ( X = x Y = C ) P(X = x | Y = C) 表示在给定类别 C C 的情况下,特征 X X 取值为 x x 的概率。 假设特征之间相互独立,可以通过计算每个特征的条件概率来估计整个特征向量的条件概率。 公式: P ( X = x Y = C ) = c o u n t ( X = x , Y = C ) c o u n t ( Y = C ) P(X = x | Y = C) = \frac{count(X = x, Y = C)}{count(Y = C)}

4.根据贝叶斯定理计算后验概率: 后验概率 P ( Y = C X ) P(Y = C | X) 表示在观测到特征 X X 的情况下,类别为 C C 的概率。 根据贝叶斯定理,可以通过先验概率和条件概率计算后验概率。 公式: P ( Y = C X ) = P ( Y = C ) P ( X Y = C ) P ( X ) P(Y = C | X) = P(Y = C) * \frac{P(X | Y = C)}{P(X)}

5.选择后验概率最大的类别作为预测结果: 将观测样本分类到后验概率最大的类别。 预测结果: Y p r e d = ( P ( Y = C X ) ) Y_{pred} = \argmax(P(Y = C | X))

公式总结为,即通过先验概率和条件概率计算后验概率

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

也即:

P ( ) = P ( ) P ( ) P ( ) P(类别|特征)=\frac{P(特征|类别)P(类别)}{P(特征)}

1.3 分类实例

假设我们有一个二元分类问题,需要根据两个特征( x 1 x_1 x 2 x_2 )将样本分为两类(正类和负类)。

训练数据如下:

样本 x1 x2 类别
1 1 0 正类
2 1 1 正类
3 0 1 负类
4 0 0 负类

首先,我们需要计算各个类别的先验概率。

P ( ) = 2 / 4 = 0.5 P(正类) = 2 / 4 = 0.5

P ( ) = 2 / 4 = 0.5 P(负类) = 2 / 4 = 0.5

接下来,我们计算在给定类别下的特征的条件概率。

对于正类: P ( x 1 = 1 ) = 1 / 2 = 0.5 P(x_1=1 | 正类) = 1 / 2 = 0.5

P ( x 1 = 0 ) = 1 / 2 = 0.5 P(x_1=0 | 正类) = 1 / 2 = 0.5

P ( x 2 = 1 ) = 1 / 2 = 0.5 P(x_2=1 | 正类) = 1 / 2 = 0.5

P ( x 2 = 0 ) = 1 / 2 = 0.5 P(x_2=0 | 正类) = 1 / 2 = 0.5

对于负类: P ( x 1 = 1 ) = 0 / 2 = 0 P(x_1=1 | 负类) = 0 / 2 = 0

P ( x 1 = 0 ) = 2 / 2 = 1 P(x_1=0 | 负类) = 2 / 2 = 1

P ( x 2 = 1 ) = 1 / 2 = 0.5 P(x_2=1 | 负类) = 1 / 2 = 0.5

P ( x 2 = 0 ) = 1 / 2 = 0.5 P(x_2=0 | 负类) = 1 / 2 = 0.5

现在,我们有一个新的样本,特征为 x 1 = 1 x_1=1 x 2 = 0 x_2=0 ,需要预测其类别。

计算样本属于正类的后验概率: P ( x 1 = 1 , x 2 = 0 ) P ( ) P ( x 1 = 1 ) P ( x 2 = 0 ) = 0.5 0.5 0.5 = 0.125 P(正类 | x_1=1, x_2=0) ∝ P(正类) * P(x_1=1 | 正类) * P(x_2=0 | 正类)\\ = 0.5 * 0.5 * 0.5\\ = 0.125\\

计算样本属于负类的后验概率: P ( x 1 = 1 , x 2 = 0 ) P ( ) P ( x 1 = 1 ) P ( x 2 = 0 ) = 0.5 0 0.5 = 0 P(负类 | x_1=1, x_2=0) ∝ P(负类) * P(x_1=1 | 负类) * P(x_2=0 | 负类)\\ = 0.5 * 0 * 0.5\\ = 0\\

归一化后验概率: P ( x 1 = 1 , x 2 = 0 ) = 0.125 / ( 0.125 + 0 ) = 1 P(正类 | x_1=1, x_2=0) = 0.125 / (0.125 + 0) = 1

P ( x 1 = 1 , x 2 = 0 ) = 0 / ( 0.125 + 0 ) = 0 P(负类 | x_1=1, x_2=0) = 0 / (0.125 + 0) = 0

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

- 本专栏适合于Python已经入门的学生或人士,有一定的编程基础。 - 本专栏适合于算法、机器学习求职的学生或人士。 - 本专栏特点: - 本专栏囊括了深度学习、机器学习、NLP、特征工程等一系列知识点的讲解,并且最后总结出了高频面试考点(附有答案)共301道,知识点讲解全面,事半功倍,为大家春秋招助力。不仅如此,教程还讲解了简历制作、笔试面试准备、面试技巧等内容。

全部评论

相关推荐

10-15 16:27
门头沟学院 C++
LeoMoon:建议问一下是不是你给他付钱😅😅
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务