机器学习-面经(part8、贝叶斯和其他知识点)

机器学习面经其他系列

 机器学习面经系列的其他部分如下所示:

机器学习-面经(part1)-初步说明

机器学习-面经(part2)-交叉验证、超参数优化、评价指标等内容

机器学习-面经(part3)-正则化、特征工程面试问题与解答合集
机器学习-面经(part4)-决策树共5000字的面试问题与解答

机器学习-面经(part5)-KNN以及SVM等共二十多个问题及解答

机器学习-面经(part6)-集成学习(万字解答)

机器学习-面经(part7、无监督学习)

12 概率模型

12.1 朴素贝叶斯

        是一个生成模型,其次它通过学习已知样本,计算出联合概率,再求条件概率。

        原理:基于贝叶斯定理与特征条件独立假设的分类方法。对于给定的待分类项X,通过学习到的模型计算后验概率分布,即:在此项出现的条件下各个目标类别出现的概率,将后验概率最大的类作为X所属的类别。

前提假设:

  1. 特征之间相互独立
  2. 每个特征同等重要

贝叶斯定理的公式表达式如下所示:

12.1.1为什么朴素贝叶斯如此“朴素”?

        在计算条件概率分布P(X=x∣Y=Ck)时,NB引入了一个很强的条件独立假设,即,当Y确定时,X的各个特征分量取值之间相互独立,这个假设在现实世界中是很不真实的,因此,说朴素贝叶斯真的很“朴素”。

        利用贝叶斯定理求解联合概率P(XY)时,需要计算条件概率P(X|Y)。在计算P(X|Y)时,朴素贝叶斯做了一个很强的条件独立假设(当Y确定时,X的各个分量取值之间相互独立),即P(X1=x1,X2=x2,…Xj=xj|Y=yk) = P(X1=x1|Y=yk)P(X2=x2|Y=yk)…*P(Xj=xj|Y=yk)。 多个特征全是独立的,需要分别相乘

12.1.2 朴素贝叶斯的优缺点?

12.1.3 为什么引入条件独立性假设?

        1、朴素贝叶斯法对条件概率分布做了条件独立性的假设,由于这是一个较强的假设,朴素贝叶斯也由此得名!这一假设使得朴素贝叶斯法变得简单,但有时会牺牲一定的分类准确率

        2、同时为了避免贝叶斯定理求解时面临的组合爆炸、样本稀疏问。

12.1.4 在估计条件概率P(X|Y)时出现概率为0的情况怎么办?

        采用贝叶斯估计。即引入λ,当λ=1时,就是普通的极大似然估计;λ=1时称为拉普拉斯平滑。拉普拉斯平滑法是朴素贝叶斯中处理零概率问题的一种修正方式。在进行分类的时候,可能会出现某个属性在训练集中没有与某个类同时出现过的情况,如果直接基于朴素贝叶斯分类器的表达式进行计算的话就会出现零概率现象。为了避免其他属性所携带的信息被训练集中未出现过的属性值“抹去”,所以才使用拉普拉斯估计器进行修正。具体的方法是:在分子上加1,对于先验概率,在分母上加上训练集中label的类别数;对于特征i 在label下的条件概率,则在分母上加上第i个属性可能的取值数(特征 i 的unique())

12.1.5 为什么属性独立性假设在实际情况中很难成立,但NB仍能取得较好效果?

        使用分类器之前,首先做的第一步往往是特征选择,目的就是为了排除特征之间的共线性、选择相对较为独立的特征;对于与分类任务来说,只要各类别的条件概率排序正确,无需精准概率值就可以导致正确分类;

        如果属性间依赖对所有类别影响相同,或依赖关系的影响能相互抵消,则属性条件独立性假设在降低计算复杂度的同时不会对性能产生负面影响。

12.1.6 如何对贝叶斯网络进行采样?

  • 没有观测变量:采用祖先采样,核心思想是根据有向图的顺序,先对祖先节点进行采样,只有当某个节点的父节点都已经完成采样,才对该节点进行采样。
  • 只对非观测变量采样,但是最终得到的样本需要赋一个重要性权值,这种采样方法称作似然加权采样;
  • 还可以用MCMC采样法来进行采样

12.2 朴素贝叶斯 vs LR

详细来讲,前者是生成式模型,后者是判别式模型,二者的区别就是生成式模型与判别式模型的区别。

  1. 首先,Navie Bayes通过已知样本求得先验概率P(Y), 及条件概率P(X|Y), 对于给定的实例,计算联合概率,进而求出后验概率。它尝试去找到底这个数据是怎么生成的(产生的),然后再进行分类。哪个类别最有可能产生这个信号,就属于那个类别。
  • 优点:样本容量增加时,收敛更快;隐变量存在时也可适用。
  • 缺点:时间长;需要样本多;浪费计算资源
  1. 相比之下,Logistic回归不关心样本中类别的比例及类别下出现特征的概率,它直接给出预测模型的式子。设每个特征都有一个权重,训练样本数据更新权重w,得出最终表达式。虽然他是算条件概率,但是根据极大似然对数估计,直接写出目标概率函数,并变成对数损失函数,使用SGD算法去优化求解。
  • 优点:直接预测往往准确率更高;简化问题;可以反应数据的分布情况,类别的差异特征;适用于较多类别的识别。
  • 缺点:收敛慢;不适用于有隐变量的情况

12.3 先验概率和后验概率

        先验概率是指根据以往经验和分析得到的概率,如全概率公式,它往往作为"由因求果"问题中的"因"出现. 就是根据以往的经验或者现有数据的分析所得到的概率。如,随机扔一枚硬币,则p(正面) = p(反面) = 1/2,这是我们根据已知的知识所知道的信息,即p(正面) = 1/2为先验概率。

        后验概率是指依据得到"结果"信息所计算出的最有可能是那种事件发生,如贝叶斯公式中的,是"执果寻因"问题中的"因"。后验概率是基于新的信息,修正原来的先验概率后所获得的更接近实际情况的概率估计。

        先验概率和后验概率是相对的。如果以后还有新的信息引入,更新了现在所谓的后验概率,得到了新的概率值,那么这个新的概率值被称为后验概率。

        数学表达式为p(A|B), 即A在B发生的条件下发生的概率。以误喝牛奶的例子为例,现在知道了你今天拉肚子了(B),算一下你早上误喝了一瓶过期了的牛奶(A)的概率, 即P(A|B),这就是后验概率,后验概率是有果求因(知道结果推出原因)

12.4 生成模式和判别模式的区别(常见):

  • 生成模式:由数据学得联合概率分布,求出条件概率分布P(Y|X)的预测模型;比较在乎数据是怎么生成的

        常见的生成模型有:朴素贝叶斯、隐马尔可夫模型、高斯混合模型、文档主题生成模型(LDA)、限制玻尔兹曼机

  • 判别模式:由数据学得决策函数或条件概率分布作为预测模型,要关注在数据的差异分布上,而不是生成

        常见的判别模型有:K近邻、SVM、决策树、感知机、线性判别分析(LDA)、线性回归、传统的神经网络、逻辑斯蒂回归、boosting、条件随机场

12.5 为什么属性独立性假设在实际情况中很难成立,但朴素贝叶斯仍能取得较好的效果?

首先独立性假设在实际中不存在,确实会导致朴素贝叶斯不如一些其他算法,但是就算法本身而言,朴素贝叶斯也会有不错的分类效果,原因是:

  1. 分类问题看中的是类别的条件概率的排序,而不是具体的概率值,所以这里面对精准概率值的计算是有一定的容错的。
  2. 如果特征属性之间的依赖对所有类别影响相同,或依赖关系的影响能相互抵消,则属性条件独立性假设在降低计算开销的同时不会对性能产生负面影响。

12.6 朴素贝叶斯可以做多分类吗?

可以,朴素贝叶斯是选出各个分类类别后验概率最大的作为最终分类

12.7 朴素贝叶斯中概率计算的下溢问题如何解决?

在朴素贝叶斯的计算过程中,需要对特定分类中各个特征出现的概率进行连乘,小数相乘,越乘越小,这样就造成下溢出。在程序中,在相应小数位置进行四舍五入,计算结果可能就变成0了。

为了解决这个问题,对乘积结果取自然对数。将小数的乘法操作转化为取对数后的加法操作,规避了变为0的风险同时并不影响分类结果。

12.8 朴素贝叶斯分类器对异常值和缺失值敏感吗?

回想朴素贝叶斯的计算过程,它在推理的时候,输入的某个特征组合,他们的特征值在训练的时候在贝叶斯公式中都是基于频数进行统计的。

所以一个值的异常(变成了别的数),只是贝叶斯公式里的计算概率的分子或者分母发生微小的变化,整体结果影响不大,就算微微影响最终概率值的获得,由于分类问题只关注概率的排序而不关注概率的值,所以影响不大,保留异常值还可以提高模型的泛化性能。

缺失值也是一样,如果一个数据实例缺失了一个属性的数值,在建模的时将被忽略,不影响类条件概率的计算,在预测时,计算数据实例是否属于某类的概率时也将忽略缺失属性,不影响最终结果。

12.9. 朴素贝叶斯中有没有超参数可以调?

        朴素贝叶斯是没有超参数可以调的,所以它不需要调参,朴素贝叶斯是根据训练集进行分类,分类出来的结果基本上就是确定了的,拉普拉斯估计器不是朴素贝叶斯中的参数,不能通过拉普拉斯估计器来对朴素贝叶斯调参。

12.10 朴素贝叶斯有哪三个模型?

  • 多项式模型 对应于离散变量,其中离散变量指的是category型变量,也就是类别变量,比如性别;连续变量一般是数字型变量,比如年龄,身高,体重。
  • 高斯模型 对应于连续变量(每一维服从正态分布)
  • 伯努利模型 文本分类 (特征只能是0或者1)

12.11 朴素贝叶斯是高方差还是低方差模型?

朴素贝叶斯是低方差模型。(误差 = 偏差 + 方差)

对于复杂模型来说,由于复杂模型充分拟合了部分数据,使得它们的偏差变小,但由于对部分数据过分拟合,这就导致预测的方差会变大。

因为朴素贝叶斯假设了各个属性之间是相互的,算是一个简单的模型。对于简单的模型来说,则恰恰相反,简单模型的偏差会更大,相对的,方差就会较小。

12.12 朴素贝叶斯有什么优缺点?

优点

  1. 朴素贝叶斯模型发源于古典数学理论,有稳定的分类效率。
  2. 对缺失数据和异常数据不太敏感,算法也比较简单,常用于文本分类。
  3. 分类准确度高,速度快。
  4. 对小规模的数据表现很好,能处理多分类任务,适合增量式训练,当数据量超出内存时,我们可以一批批的去增量训练(朴素贝叶斯在训练过程中只需要计算各个类的概率和各个属性的类条件概率,这些概率值可以快速地根据增量数据进行更新,无需重新全量计算)。

缺点

  1. 对训练数据的依赖性很强,如果训练数据误差较大,那么预测出来的效果就会不佳
  2. 理论上,朴素贝叶斯模型与其他分类方法相比具有最小的误差率。 但是在实际中,因为朴素贝叶斯“朴素,”的特点,导致在属性个数比较多或者属性之间相关性较大时,分类效果不好。而在属性相关性较小时,朴素贝叶斯性能最为良好。对于这一点,有半朴素贝叶斯之类的算法通过考虑部分关联性适度改进。
  3. 需要知道先验概率,且先验概率很多时候是基于假设或者已有的训练数据所得的,这在某些时候可能会因为假设先验概率的原因出现分类决策上的错误。

什么是深度学习?深度学习的训练过程是什么?

无监督预训练+有监督微调(fine-tune)

过程:(1)自下而上非监督学习特征 (2)自顶向下有监督微调

深度学习与机器学习有什么区别?

机器学习在训练模型之前,需要手动设置特征,即需要做特征工程;

深度学习可自动提取特征;所以深度学习自动提取的特征比机器学习手动设置的特征鲁棒性更好;

13. 机器学习

13.1 你是怎么理解偏差和方差的平衡的?

        偏差是真实值和预测值之间的偏离程度;方差是预测值得分散程度,即越分散,方差越大;

  • 偏差是模型输出值与真实值的误差,也就是模型的精准度
  • 方差是预测值与模型输出期望的的误差,即模型的稳定性,也就是数据的集中性的一个指标

13.2 给你一个有1000列和1百万行的训练数据集,这个数据集是基于分类问题的。经理要求你来降低该数据集的维度以减少模型计算时间,但你的机器内存有限。你会怎么做?

处理方法:

  1.由于我们的RAM很小,首先要关闭机器上正在运行的其他程序,包括网页浏览器等,以确保大部分内存可以使用。

  2.随机采样数据集: 可以创建一个较小的数据集,比如有1000个变量和30万行,然后做计算。

  3.为了降低维度,可以把数值变量和分类变量分开,同时删掉相关联的变量。对于数值变量,将使用相关性分析;对于分类变量,可以用卡方检验(统计学)。

  4.另外,还可以使用PCA,并挑选可以解释在数据集中有最大偏差的成分。

  5.利用在线学习算法,如VowpalWabbit。

       6.利用 SGD 建立线性模型也很有帮助。

13.3 给你一个数据集,这个数据集有缺失值,且这些缺失值分布在离中值有1个标准偏差的范围内。百分之多少的数据不会受到影响?为什么?

约有32%的数据将不受缺失值的影响。由于数据分布在中位数附近,先假设这是一个正态分布。在一个正态分布中,约有68%的数据位于跟平均数(或众数、中位数)1个标准差范围内,那么剩下的约32%的数据是不受影响的。

13.4 模型受到低偏差和高方差问题时,应该使用哪种算法来解决问题呢?  

        可以使用bagging算法(随机森林)。低偏差意味着模型的预测值接近实际值,即该模型有足够的灵活性,以模仿训练数据的分布。

        bagging算法把数据集分成重复随机取样形成的子集。然后这些样本利用单个学习算法生成一组模型。接着,利用投票(分类)或平均(回归)把模型预测结合在一起。

另外,为了应对大方差,我们可以:

  1.使用正则化技术,惩罚更高的模型系数,从而降低了模型的复杂性。

  2.使用可变重要性图表中的前n个特征。可以用于当一个算法在数据集中的

所有变量里很难寻找到有意义信号的时候。

13.5 怎么理解偏差方差的平衡的?

偏差误差在量化平均水平之上,预测值跟实际值相差多远时有用。

高偏差误差意味着我们的模型表现不太好,因为没有抓到重要的趋势。

而另一方面,方差量化了在同一个观察上进行的预测是如何彼此不同的。

高方差模型会过度拟合你的训练集,而在训练集以外的数据上表现很差。

13.6 协方差和相关性有什么区别?

相关性是协方差的标准化格式。协方差本身很难做比较。如:计算工资($)和年龄(岁)的协方差,因为这两个变量有不同的度量,所以会得到不能做比较的不同的协方差。

为了解决这个问题,通过计算相关性来得到一个介于-1和1之间的值,就可以忽略它们各自不同的度量。

13.7 把分类变量当成连续型变量会更得到一个更好的预测模型吗?

只有在分类变量在本质上是有序的情况下才可以被当做连续型变量来处理。

“买了这个的客户,也买了......”亚马逊的建议是哪种算法的结果?

13.8 机器学习中分类器指的是什么?

  指输入离散或连续特征值的向量,并输出单个离散值或者类型的系统。

对统计这一块了解吗?p值是什么?

当原假设为真时所得到的样本观察结果或更极端结果出现的概率;

如果P值很小,说明bai原假设情况的发生的概率很小;

如果出现了,根据小概率原理,我们就有理由拒绝原假设,P值越小,我们拒绝原假设的理由越充分。

13.9 请简要说说一个完整机器学习项目的流程?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/438080.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

嵌入式驱动学习第二周——Linux休眠唤醒

前言 这篇博客来聊一聊Linux系统的休眠与唤醒。 嵌入式驱动学习专栏将详细记录博主学习驱动的详细过程,未来预计四个月将高强度更新本专栏,喜欢的可以关注本博主并订阅本专栏,一起讨论一起学习。现在关注就是老粉啦! 目录 前言1. …

爬虫实战——麻省理工学院新闻

文章目录 发现宝藏一、 目标二、 浅析三、获取所有模块四、请求处理模块、版面、文章1. 分析切换页面的参数传递2. 获取共有多少页标签并遍历版面3.解析版面并保存版面信息4. 解析文章列表和文章5. 清洗文章6. 保存文章图片 五、完整代码六、效果展示 发现宝藏 前些天发现了一…

Eclipse左边project框如何打开?

1、点击Eclipse顶端window 2、点击Show View 3、点击Project Explorer。 如下图(图片转自其他博主)。

Web自动化测试--selenium

🔥 交流讨论:欢迎加入我们一起学习! 🔥 资源分享:耗时200小时精选的「软件测试」资料包 🔥 教程推荐:火遍全网的《软件测试》教程 📢欢迎点赞 👍 收藏 ⭐留言 &#x1…

第五十二回 戴宗二取公孙胜 李逵独劈罗真人-飞桨AI框架安装和使用示例

吴用说只有公孙胜可以破法术,于是宋江请戴宗和李逵去蓟州。两人听说公孙胜的师傅罗真人在九宫县二仙山讲经,于是到了二仙山,并在山下找到了公孙胜的家。 两人请公孙胜去帮助打高唐州,公孙胜说听师傅的。罗真人说出家人不管闲事&a…

【java】后序遍历二叉树

采用递归方式实现 节点类 public class Node {private int value;//父节点private Node fNode;//左节点private Node left;//右节点private Node right;//是否已经打印过private boolean sign false;public Node() {}public boolean isSign() {return sign;}public void setS…

京东老矣,尚能饭否?

图片|《冰与火之歌》截图 ©自象限原创 作者丨程心 编辑丨罗辑 从2004年1月,京东正式涉足电商至今,整整二十年过去了。 2024年3月6日,京东发布了2023年第四季度及全年财报。数据显示,2023Q4京东收入3061亿元人民…

腾讯云服务器和阿里云服务器价格测评_2024年费用大PK

2024年阿里云服务器和腾讯云服务器价格战已经打响,阿里云服务器优惠61元一年起,腾讯云服务器61元一年,2核2G3M、2核4G、4核8G、4核16G、8核16G、16核32G、16核64G等配置价格对比,阿腾云atengyun.com整理阿里云和腾讯云服务器详细配…

分段线性化问题探析

目录 1 使用0-1变量将分段函数转换为线性约束 2 连续函数采用分段线性化示例 3 matlab程序测试 4 matlab测试结果说明 5 分段线性化应用 1 使用0-1变量将分段函数转换为线性约束 2 连续函数采用分段线性化示例 3 matlab程序测试 clc;clear all; gn10;tn1; x_pfsdpvar(1, t…

迷你内裤洗衣机排名前十名:推荐十款2024专业性高的内衣洗衣机

最近一段时间,关于内衣到底是机洗好,还是手洗好这个话题,有很多人都在讨论,坚决的手洗党觉得应该用手来清洗,机洗与其它衣物混合使用,会产生交叉感染,而且随着使用时间的推移,会变得…

一命通关前缀和

前缀和 简介 先来简单看一个场景。现在有一个公交车,第一站上了4个人,第二站上了7个人,第三站上了1个人,第四站上了5个人,问一共上了多少人? 答案很显而易见,只需要遍历这个数组,把…

DevEco-Studio 3.1.1 Release和DevEco Studio NEXT Developer Preview1同时安装在mac m2上

其实mas上支持同一个app的多个版本安装的,需要注意的是SDK的目录需要区分开,不能被覆盖。 HarmonyOS和OpenHarmony SDK配置 3.1.1 Release,HarmonyOS的SDK目录:/Users/zhongyili/Library/Huawei/Sdk_3.1 NEXT Developer Previ…

【2】SLoRa: A Systematic Framework for Synergic Interference Resilience In LPWAN

这一篇基于上一篇文章,仅记录我遗忘的知识点; 以较低的成本提供可靠的符号恢复; 符号恢复【振幅和频率】 为了避免环境噪声并提高可靠性,我们采用信号预处理和窗口滑动算法来检测幅度变化点; 信号处理:归一化和指数化…

如何查看前端的vue项目是vue2还是vue3项目

1. 检查package.json文件 在项目的根目录下,打开package.json文件,查找dependencies或devDependencies部分中的vue条目。版本号将告诉你是Vue 2还是Vue 3。例如: Vue 2.x: "vue": "^2.x.x"Vue 3.x: "vue": &…

Rust入门:C++和Rust动态库(dll)的相互调用

无论是C调用Rust动态库还是Rust调用C动态库,其操作基本都是一样地简单,基本和C调用C的动态库没什么区别,只需要列出所需要导入的函数,并链接到相应的lib文件即可。 这里,在windows中,我们以dll动态库为例说…

虽说主业搞前端,看到如此漂亮的网页UI,也是挪不开眼呀。

漂亮的网页UI能够吸引人的眼球,给人留下深刻的印象。作为前端开发人员,可以通过不断学习和掌握设计技巧和工具,提升自己的UI设计能力,为用户提供更好的视觉体验。 以下是一些提升网页UI设计能力的建议: 学习设计基础知…

外包干了一周,技术明显倒退。。。。。

先说一下自己的情况,本科生,2019年我通过校招踏入了南京一家软件公司,开始了我的职业生涯。那时的我,满怀热血和憧憬,期待着在这个行业中闯出一片天地。然而,随着时间的推移,我发现自己逐渐陷入…

【鸿蒙 HarmonyOS 4.0】解决:搜索无效问题

一、背景 页面包含搜索框和列表,列表默认展示所有数据并具有分页功能。然而,在输入关键字到搜索框时,列表未正确展示搜索结果。 二、功能实现 2.1、原代码及实现效果 import ChargeType from ../../viewModel/ChargeType import ChargeMo…

devc++8x8取模软件

这几天在搞arduino nano和单个max7219模块,涉及到16进制的取模,在网上转了一圈,没找到合适的取模软件,于是自己做了一个,试过,可以用,按esc退出并生成16进制的取模结果 源代码: #i…

liunx操作系统 环境变量

环境变量 main函数参数 命令行参数环境变量 环境变量的查看环境变量的获取 main函数参数 命令行参数 main函数是有参数的,只是我们一般不适用 这是main函数从bash中读取进程数据使用的一个基本入口。 下面进行简单演示。 o 好oo都是我们输入的命令行参数。其实&a…
最新文章