数据分析面试【机器学习】总结之-----主要的常见面试题整理

您当前的位置:首页 > 职业规划 > 面试经验
2021-03-29    人浏览 加入收藏 (0)   
简介 

数据分析面试【机器学习】总结之-----主要的常见面试题整理

1.简述方差和偏差的概念

在进行模型训练的时候,模型的误差是由偏差和方差相加而成的。


偏差(bias):反映了模型在训练集样本上的期望输出与真实结果之间的差距,即模型本身的精确度,反映的是模型本身的拟合能力。偏差过高说明模型存在欠拟合现象,说明模型过于简单,需要提高模型的复杂度。


方差(variance): 反映了模型在不同的训练集下得到的结果与真实结果之间的误差的波动情况,即模型的稳定性。模型过于复杂时,会学习模型中的噪声,造成过拟合现象。


2.简述参数模型和非参数模型的区别和优缺点

参数模型有:线性回归模型、逻辑回归、朴素贝叶斯等。


优点:

具有很强的可解释性、模型学习和训练速度相对快速,对数据量的要求比较低。

缺点

需要对目标函数做出假设,对于复杂问题,无法用参数模型得到很好的训练。参数模型的复杂度偏低,容易产生欠拟合现象。

非参数模型,对目标函数的形式不做过多的假设,学习算法可以自由地从训练数据中学习任意地函数。

常见地非参数模型有:SVM模型,决策树模型,随机森林等


优点:

数据量大时,非参数模型可以逼近任意复杂地真实模型,因此在数据量大,逻辑复杂地问题中效果好于参数模型。

缺点

很多超参数需要选择,模型复杂,可解释性弱,计算量大。

3.简述生成模型和判别模型地概念

生成模型由数据学习联合概率分布P ( X , Y ) P(X,Y)P(X,Y),然后求出条件概率密度分布P ( Y ∣ X ) P(Y|X)P(Y∣X)作为预测的方法。


之所以称为生成方法,是因为模型表示了给定输入X产生输出Y的生成关系。


典型的生成模型有:朴素贝叶斯法和隐马尔科夫模型


判别模型是由数据直接学习决策函数f ( X ) f(X)f(X)或者条件概率分布P ( Y ∣ X ) P(Y|X)P(Y∣X)作为预测的模型。

判别模型关注的是给定的输入X,应该预测什么的输出Y


典型的判别模型有:k近邻法、感知机、决策树、logistic回归,支持向量机等


优缺点:

生成模型可以还原出联合概率分布,而判别方法不能。

生成方法的学习收敛速度更快,即当样本容量增加的时候,学到的模型可以更快收敛于真实模型。

存在隐变量时,仍然可以使用生成模型方法学习,此时判别方法不能用


判别方法直接预测决策函数,学习准确率更改,可以对数据进行各种成都上的抽象、定义特征并使用特征,因此可以简化学习问题。适用范围更广,计算量小一些,常用的还是判别模型。


4.如何解决样本类别不均衡的问题

a.过采样/上采样:增加类别少的样本数量实现样本数量的均衡。具体是通过复制类别上的样本构成多条数据。此方法的缺点是当样本的特征很少时,容易出现过拟合。需要对过采样方法进行改进,改进的方法是:在类别少的样本中加入噪声、干扰数据或通过一定的规则产生新合成的样本,如smote算法。

b.欠采样/下采样:减少类别多的样本数量,一般的方法是随机地去掉一些类别多的样本。

c.调整正负样本的惩罚权重:对类别少的样本赋予高的权重,对类别多的样本赋予低的权重。

d.通过集成学习的方法:每次生成训练集时,使用所有类别少的样本,同时从类别多的样本中随机抽取数据与类别少的样本合并起来,构成一个新的训练集。

e.使用特征选择:一般样本不均衡也会导致特征不均衡。但如果类别少的样本量具有一定的规模时,则意味着其特征的分布较为均匀,可以选择出具有显著特征配合参与解决样本不均衡的问题。

5.L1和L2范数的区别

L1 norm:向量中各个元素绝对值之和,也称为稀疏规则算子,L1范数可以使权重稀疏,方便特征提取;L1正则化先验服从拉普拉斯分布

L2 norm:向量中各个元素平方和的1/2次方,又称为Frobenius范数,L2范数可以防止过拟合,提升模型的泛化能力;L2正则化先验服从高斯分布

6.机器学习中,为什么经常需要对数据进行归一化?

归一化能提高梯度下降算法求解的速度

归一化有可能提高精度

7.请问怎么处理特征向量的缺失值

一方面,缺失值较多.直接将该特征舍弃掉,否则可能反倒会带入较大的noise,对结果造成不良影响。


另一方面缺失值较少,其余的特征缺失值都在10%以内,我们可以采取很多的方式来处理:


把NaN直接作为一个特征,假设用0表示;

用均值填充;

用随机森林等算法预测填充。

8.xgboost怎么给特征评分?

在训练的过程中,通过Gini指数选择分离点的特征,一个特征被选中的次数越多,那么该特征评分越高。


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

答:这个问题给了你足够的提示来开始思考!由于数据分布在中位数附近,让我们先假设这是一个正态分布。


我们知道,在一个正态分布中,约有68%的数据位于跟平均数(或众数、中位数)1个标准差范围内的,那样剩下的约32%的数据是不受影响的。


因此,约有32%的数据将不受到缺失值的影响。


10.给你分配了一个新的项目,是关于帮助食品配送公司节省更多的钱。问题是,公司的送餐队伍没办法准时送餐。结果就是他们的客户很不高兴。 最后为了使客户高兴,他们只好以免餐费了事。哪个机器学习算法能拯救他们?

你的大脑里可能已经开始闪现各种机器学习的算法。但是等等!这样的提问方式只是来测试你的机器学习基础。这不是一个机器学习的问题,而是一个路径优化问题。


机器学习问题由三样东西组成:

1.模式已经存在。

2.不能用数学方法解决(指数方程都不行)。

3.有相关的数据。


11.你意识到你的模型受到低偏差和高方差问题的困扰。应该使用哪种算法来解决问题呢?为什么?

低偏差意味着模型的预测值接近实际值。换句话说,该模型有足够的灵活性,以模仿训练数据的分布。貌似很好,但是别忘了,一个灵活的模型没有泛化能力。这意味着,当这个模型用在对一个未曾见过的数据集进行测试的时候,它会令人很失望。


在这种情况下,我们可以使用bagging算法(如随机森林),以解决高方差问题。bagging算法把数据集分成重复随机取样形成的子集。然后,这些样本利用单个学习算法生成一组模型。接着,利用投票(分类)或平均(回归)把模型预测结合在一起。


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

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

2.使用可变重要性图表中的前n个特征。可以用于当一个算法在数据集中的所有变量里很难寻找到有意义信号的时候。


12.给你一个数据集。该数据集包含很多变量,你知道其中一些是高度相关的。 经理要求你用PCA。你会先去掉相关的变量吗?为什么?

你可能会说不,但是这有可能是不对的。丢弃相关变量会对PCA有实质性的影响,因为有相关变量的存在,由特定成分解释的方差被放大。

例如:在一个数据集有3个变量,其中有2个是相关的。如果在该数据集上用PCA,第一主成分的方差会是与其不相关变量的差异的两倍。此外,加入相关的变量使PCA错误地提高那些变量的重要性,这是有误导性的。


13.真阳性率和召回有什么关系?写出方程式。

答:真阳性率=召回。是的,它们有相同的公式(TP / TP + FN)。 注意:要了解更多关于估值矩阵的知识。


14.什么时候Ridge回归优于Lasso回归?

答:你可以引用ISLR的作者Hastie和Tibshirani的话,他们断言在对少量变量有中等或大尺度的影响的时候用lasso回归。在对多个变量只有小或中等尺度影响的时候,使用Ridge回归。


从概念上讲,我们可以说,Lasso回归(L1)同时做变量选择和参数收缩,而ridge回归只做参数收缩,并最终在模型中包含所有的系数。在有相关变量时,ridge回归可能是首选。此外,ridge回归在用最小二乘估计有更高的偏差的情况下效果最好。因此,选择合适的模型取决于我们的模型的目标。


15.如何在一个数据集上选择重要的变量?给出解释。

答:以下是你可以使用的选择变量的方法:

1.选择重要的变量之前除去相关变量

2.用线性回归然后基于P值选择变量

3.使用前向选择,后向选择,逐步选择

4.使用随机森林和Xgboost,然后画出变量重要性图

5.使用lasso回归

6.测量可用的特征集的的信息增益,并相应地选择前n个特征量。


16.给你一个缺失值多于30%的数据集?比方说,在50个变量中,有8个变量的缺失值都多于30%。你对此如何处理?

答:我们可以用下面的方法来处理:


1.把缺失值分成单独的一类,这些缺失值说不定会包含一些趋势信息。

2.我们可以毫无顾忌地删除它们。

3.或者,我们可以用目标变量来检查它们的分布,如果发现任何模式,我们将保留那些缺失值并给它们一个新的分类,同时删除其他缺失值。


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

答:这种推荐引擎的基本想法来自于协同过滤。


协同过滤算法考虑用于推荐项目的“用户行为”。它们利用的是其他用户的购买行为和针对商品的交易历史记录、评分、选择和购买信息。针对商品的其他用户的行为和偏好用来推荐项目(商品)给新用户。在这种情况下,项目(商品)的特征是未知的。


18.你怎么理解第一类和第二类错误?

答:第一类错误是当原假设为真时,我们却拒绝了它,也被称为“假阳性”。第二类错误是当原假设为是假时,我们接受了它,也被称为“假阴性”。


在混淆矩阵里,我们可以说,当我们把一个值归为阳性(1)但其实它是阴性(0)时,发生第一类错误。而当我们把一个值归为阴性(0)但其实它是阳性(1)时,发生了第二类错误。


参考:

1.《百面机器学习》

2.【BAT机器学习面试题】前100题汇总及勘误(上)

3.李航《统计学习方法》



注:内容来源于各大面经网、论坛等,如果侵犯了您的权益,请联系我们处理