机器学习面试题汇总与解析——朴素贝叶斯
本章讲解知识点
-
本专栏适合于Python已经入门的学生或人士,有一定的编程基础。
-
本专栏适合于算法工程师、机器学习、图像处理求职的学生或人士。
-
本专栏针对面试题答案进行了优化,尽量做到好记、言简意赅。这才是一份面试题总结的正确打开方式。这样才方便背诵
-
如专栏内容有错漏,欢迎在评论区指出或私聊我更改,一起学习,共同进步。
-
相信大家都有着高尚的灵魂,请尊重我的知识产权,未经允许严禁各类机构和个人转载、传阅本专栏的内容。
-
关于机器学习算法书籍,我强烈推荐一本《百面机器学习算法工程师带你面试》,这个就很类似面经,还有讲解,写得比较好。
-
关于深度学习算法书籍,我强烈推荐一本《解析神经网络——深度学习实践手册》,简称 CNN book,通俗易懂。
-
B站机器学习视频:https://space.bilibili.com/10781175/channel/detail?cid=133301
1. 什么是朴素贝叶斯
1.1 基本概念
贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类。而朴素朴素贝叶斯分类是贝叶斯分类中最简单,也是常见的一种分类方法。
朴素贝叶斯(Naive Bayes)是一种基于贝叶斯定理和特征条件独立性假设的分类算法。它通过统计特征在不同类别下的条件概率,来进行分类任务。
1.2 算法流程
朴素贝叶斯算法的流程如下,每一步都列出了对应的公式:
1.准备训练数据集:包含多个样本和对应的类别标签:已知集合 C=(y1,y2,...yn) 和特征 X=(x1,x2,...xn),确定映射规则 y=f(⋅),使得任意 xi∈X 有且仅有一个 yi∈C 使得 yi∈f(xi) 成立。其中 C 叫做类别集合,其中每一个元素是一个类别,而 X 叫做项集合(特征集合),其中每一个元素是一个待分类项,f(⋅) 叫做分类器。分类算法的任务就是构造分类器 f(⋅)。
2.计算类别的先验概率:
先验概率 P(Y=C) 表示类别 C 在训练集中的出现频率。
公式:P(Y=C)=count(total)count(Y=C)
3.计算特征的条件概率:
条件概率 P(X=x∣Y=C) 表示在给定类别 C 的情况下,特征 X 取值为 x 的概率。
假设特征之间相互独立,可以通过计算每个特征的条件概率来估计整个特征向量的条件概率。
公式:P(X=x∣Y=C)=count(Y=C)count(X=x,Y=C)
4.根据贝叶斯定理计算后验概率:
后验概率 P(Y=C∣X) 表示在观测到特征 X 的情况下,类别为 C 的概率。
根据贝叶斯定理,可以通过先验概率和条件概率计算后验概率。
公式:P(Y=C∣X)=P(Y=C)∗P(X)P(X∣Y=C)
5.选择后验概率最大的类别作为预测结果:
将观测样本分类到后验概率最大的类别。
预测结果:Ypred=argmax(P(Y=C∣X))
公式总结为,即通过先验概率和条件概率计算后验概率:
P(B∣A)=P(A)P(A∣B)P(B)
也即:
P(类别∣特征)=P(特征)P(特征∣类别)P(类别)
1.3 分类实例
假设我们有一个二元分类问题,需要根据两个特征(x1 和 x2)将样本分为两类(正类和负类)。
训练数据如下:
样本 |
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(x1=1∣正类)=1/2=0.5
P(x1=0∣正类)=1/2=0.5
P(x2=1∣正类)=1/2=0.5
P(x2=0∣正类)=1/2=0.5
对于负类:
P(x1=1∣负类)=0/2=0
P(x1=0∣负类)=2/2=1
P(x2=1∣负类)=1/2=0.5
P(x2=0∣负类)=1/2=0.5
现在,我们有一个新的样本,特征为 x1=1 和 x2=0,需要预测其类别。
计算样本属于正类的后验概率:
P(正类∣x1=1,x2=0)∝P(正类)∗P(x1=1∣正类)∗P(x2=0∣正类)=0.5∗0.5∗0.5=0.125
计算样本属于负类的后验概率:
P(负类∣x1=1,x2=0)∝P(负类)∗P(x1=1∣负类)∗P(x2=0∣负类)=0.5∗0∗0.5=0
归一化后验概率: