机器学习面经其他系列
机器学习面经系列的其他部分如下所示:
机器学习-面经(part1)-初步说明
机器学习-面经(part2)-交叉验证、超参数优化、评价指标等内容
机器学习-面经(part3)-正则化、特征工程面试问题与解答合集
机器学习-面经(part4)-决策树共5000字的面试问题与解答
机器学习-面经(part5)-KNN以及SVM等共二十多个问题及解答
机器学习-面经(part6)-集成学习(万字解答)
机器学习-面经(part7、无监督学习)
12 概率模型
12.1 朴素贝叶斯
是一个生成模型,其次它通过学习已知样本,计算出联合概率,再求条件概率。
原理:基于贝叶斯定理与特征条件独立假设的分类方法。对于给定的待分类项X,通过学习到的模型计算后验概率分布,即:在此项出现的条件下各个目标类别出现的概率,将后验概率最大的类作为X所属的类别。
前提假设:
- 特征之间相互独立
- 每个特征同等重要
贝叶斯定理的公式表达式如下所示:
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
详细来讲,前者是生成式模型,后者是判别式模型,二者的区别就是生成式模型与判别式模型的区别。
- 首先,Navie Bayes通过已知样本求得先验概率P(Y), 及条件概率P(X|Y), 对于给定的实例,计算联合概率,进而求出后验概率。它尝试去找到底这个数据是怎么生成的(产生的),然后再进行分类。哪个类别最有可能产生这个信号,就属于那个类别。
- 优点:样本容量增加时,收敛更快;隐变量存在时也可适用。
- 缺点:时间长;需要样本多;浪费计算资源
- 相比之下,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 为什么属性独立性假设在实际情况中很难成立,但朴素贝叶斯仍能取得较好的效果?
首先独立性假设在实际中不存在,确实会导致朴素贝叶斯不如一些其他算法,但是就算法本身而言,朴素贝叶斯也会有不错的分类效果,原因是:
- 分类问题看中的是类别的条件概率的排序,而不是具体的概率值,所以这里面对精准概率值的计算是有一定的容错的。
- 如果特征属性之间的依赖对所有类别影响相同,或依赖关系的影响能相互抵消,则属性条件独立性假设在降低计算开销的同时不会对性能产生负面影响。
12.6 朴素贝叶斯可以做多分类吗?
可以,朴素贝叶斯是选出各个分类类别后验概率最大的作为最终分类
12.7 朴素贝叶斯中概率计算的下溢问题如何解决?
在朴素贝叶斯的计算过程中,需要对特定分类中各个特征出现的概率进行连乘,小数相乘,越乘越小,这样就造成下溢出。在程序中,在相应小数位置进行四舍五入,计算结果可能就变成0了。
为了解决这个问题,对乘积结果取自然对数。将小数的乘法操作转化为取对数后的加法操作,规避了变为0的风险同时并不影响分类结果。
12.8 朴素贝叶斯分类器对异常值和缺失值敏感吗?
回想朴素贝叶斯的计算过程,它在推理的时候,输入的某个特征组合,他们的特征值在训练的时候在贝叶斯公式中都是基于频数进行统计的。
所以一个值的异常(变成了别的数),只是贝叶斯公式里的计算概率的分子或者分母发生微小的变化,整体结果影响不大,就算微微影响最终概率值的获得,由于分类问题只关注概率的排序而不关注概率的值,所以影响不大,保留异常值还可以提高模型的泛化性能。
缺失值也是一样,如果一个数据实例缺失了一个属性的数值,在建模的时将被忽略,不影响类条件概率的计算,在预测时,计算数据实例是否属于某类的概率时也将忽略缺失属性,不影响最终结果。
12.9. 朴素贝叶斯中有没有超参数可以调?
朴素贝叶斯是没有超参数可以调的,所以它不需要调参,朴素贝叶斯是根据训练集进行分类,分类出来的结果基本上就是确定了的,拉普拉斯估计器不是朴素贝叶斯中的参数,不能通过拉普拉斯估计器来对朴素贝叶斯调参。
12.10 朴素贝叶斯有哪三个模型?
- 多项式模型 对应于离散变量,其中离散变量指的是category型变量,也就是类别变量,比如性别;连续变量一般是数字型变量,比如年龄,身高,体重。
- 高斯模型 对应于连续变量(每一维服从正态分布)
- 伯努利模型 文本分类 (特征只能是0或者1)
12.11 朴素贝叶斯是高方差还是低方差模型?
朴素贝叶斯是低方差模型。(误差 = 偏差 + 方差)
对于复杂模型来说,由于复杂模型充分拟合了部分数据,使得它们的偏差变小,但由于对部分数据过分拟合,这就导致预测的方差会变大。
因为朴素贝叶斯假设了各个属性之间是相互的,算是一个简单的模型。对于简单的模型来说,则恰恰相反,简单模型的偏差会更大,相对的,方差就会较小。
12.12 朴素贝叶斯有什么优缺点?
优点
- 朴素贝叶斯模型发源于古典数学理论,有稳定的分类效率。
- 对缺失数据和异常数据不太敏感,算法也比较简单,常用于文本分类。
- 分类准确度高,速度快。
- 对小规模的数据表现很好,能处理多分类任务,适合增量式训练,当数据量超出内存时,我们可以一批批的去增量训练(朴素贝叶斯在训练过程中只需要计算各个类的概率和各个属性的类条件概率,这些概率值可以快速地根据增量数据进行更新,无需重新全量计算)。
缺点
- 对训练数据的依赖性很强,如果训练数据误差较大,那么预测出来的效果就会不佳
- 理论上,朴素贝叶斯模型与其他分类方法相比具有最小的误差率。 但是在实际中,因为朴素贝叶斯“朴素,”的特点,导致在属性个数比较多或者属性之间相关性较大时,分类效果不好。而在属性相关性较小时,朴素贝叶斯性能最为良好。对于这一点,有半朴素贝叶斯之类的算法通过考虑部分关联性适度改进。
- 需要知道先验概率,且先验概率很多时候是基于假设或者已有的训练数据所得的,这在某些时候可能会因为假设先验概率的原因出现分类决策上的错误。
什么是深度学习?深度学习的训练过程是什么?
无监督预训练+有监督微调(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值越小,我们拒绝原假设的理由越充分。