导语:
本文提到的40个问题需三思而后答,它将直接检验你在机器学习/数据科学方面的基础功。
目前看来,机器学习是下一次工业革命的驱动力。这意味着有许多创业公司正在寻找数据科学家。还有什么比这个职位称得上是一个更好的职业开端呢?
然而,成为数据科学家并非易事。显然你需要为自己的想法、团队和公司的梦想感到激动不已,你也需要知道在前路上需要解决的困难技术问题。你需要先询问:这个创业公司做什么,他们提供咨询吗?他们做机器学习产品吗?在准备面试前找出这些问题的答案。
为帮助你准备下一次面试,我准备了也许会在面试中遇到的40个问题的列表,如果你能回答并理解这些问题,你会在面试中打一个漂亮仗。
注意:回答这些问题的关键是-对机器学习和相关统计概念有坚固扎实的理解
机器学习的面试问题
Q1:某训练数据集拥有1000列和1百万行,该数据集基于一个分类问题。你的经理要求你对数据集进行降维处理以减少计算时间。电脑也具有内存限制。你会怎么做?你可以自由做出实际假设。
回答:在有限的内存中处理高维数据是一个费力的工作,你的面试官对此应该有深刻的认识。依照以下方式,你可以解决这个问题:
因为RAM比较小,电脑上其他应用程序应该关闭,包括浏览器,以便大多数内存可以得到应用。
随机抽取一些数据集样本,得到一个更小的数据集,例如,1000列和30万行的大小,以此进行计算。
为了降维,数值变量和分类变量可以被分开,然后移除相关变量。对于数值变量,进行关联性分析;对于分类变量,做卡方检验。
使用PCA,挑选可以解释最大方差的成分。
使用在线学习算法,比如Vowpal Wabbit (在Python中可用)是一个可行的选项。
构造一个使用随机梯度下降的线性模型也很有用。
利用商业理解去估计哪些预测器可以影响到因变量。但是这依赖于直觉,如果不能找到有用的预测器,能会造成信息的大量丢失。
Q2:在PCA中,转置是必要的吗?如果是,为什么?如果你不转置,会发生什么?
回答:是的,转置(正交)是必须的,因为可以最大化成分方差的差值,使得成分更容易解释。PCA的目的就在于此:选择更少的成分或者特征来解释数据集的最大方差。通过转置,成分之间的相对位置不改变,只改变数据点的实际坐标。
如果不转置成分,PCA的效果减弱,我们需要选择更多的成分来解释数据集中的方差。
Q3:现有数据集,里面有遗失数据,处于平均值左右1个标准差范围。请问多少百分比数据未受影响,为什么?
回答:本题提供了足够的线索。数据围绕着均值分布。假设为正态分布,在该分布中,68%左右的数据分布在1个标准差范围内,其余32%数据未受影响。所以32%的数据未受影响。
Q4:分析一个癌症检测的数据集,你已经建立了分类模型,达到96%的精度,你为何对你的模型性能不满意?你可以做什么?
回答:如果已经处理了足够的数据集,你应该能够从非均衡数据中推论出癌症结果。在非均衡数据集中,精度不应该是性能的评判标准。因为96%可能仅仅是预测多数类的准确度,但我们感兴趣的是少数类(4%),人们实际被确诊为癌症的那部分类。因此,为了评估模型的性能,我们应该使用灵敏度(真正率)、特效度(真负率),F 指标来衡量分类器的分类性能。如果少数类效果被认为不好,我们可以采取以下措施:
使用欠采样,过采样或者SMOTE使数据均衡。
通过做可能性校准调整预测的临界值,通过AUC-ROC曲线找到最优临界值。
对类加权重所以少数类可以获取更大的权重。
使用异常检测。
Q5: 为什么朴素贝叶斯这么“简单幼稚”?
回答:朴素贝叶斯这么“幼稚”是因为假设所有数据集中的特征都一样重要且相互独立。但在实际生活中假设不成立。
Q6:解释朴素贝叶斯算法中的先验概率,似然和边际似然。
回答:先验概率是数据集中相关变量(两个之间)比率。这是不依靠其他信息,对类做出的最可能猜想,比如,在一个数据集中,相关数据是成对的(1或者0),1(垃圾邮件)的百分比是70%,0(不是垃圾邮件)的百分比是30%。因此,我们可以估算有70%概率新的邮件会被标记为垃圾邮件,这就是先验概率。
似然是指在其他一些参数存在条件下,将给定观察分类为1 的可能性。例如,似然是指单词“Free”在垃圾邮件中被使用的概率。边际似然是指单词“Free”在任何邮件中被使用的概率。
Q7:处理一个时间序列数据,你的经理要求你构造一个高精度的模型。你从决策树算法开始,因为它可以在多种数据上工作非常好。然后尝试了一个时间序列回归算法,得到了比决策树模型更高的精度。这可能吗,为什么?
回答:时间序列数据已知包含线性关系。从另一个方面来说,一个决策树算法已知在检测非线性关系上工作效果最好。决策树不能提供稳定预测的原因是不能像回归模型那样描述线性关系。因此我们知道:如果事先告知一个数据集满足线性假设,那么线性回归模型可以提供稳定的预测。
Q8: 目前你需要完成一个项目,帮助食品公司节省更多的资金。问题是食品公司的物流系统不能按时送到食物,因此使得顾客不满意。为了提高满意度,他们停止免费运输食物,请问哪种算法可以帮助他们?
回答:你或许已经在脑海中默默浏览机器算法的列表,但请稍等,这些问题是来衡量你机器学习的基础的。
这不是一个机器学习问题,这是一个常规的优化问题。一个机器学习算法包含三个要素:
该系统存在一个模式
你不能用数学解决它(即便使用指数方程)。
你拥有相关的数据
在考虑机器学习是否能够解决问题的时候,确定这三个因素。
Q9:你的模型拥有低偏差但高方差,应该用什么算法解决这一问题?
回答:低偏差是指模型预测值与实际值相近。换句话说,模型拥有足够的弹性来模拟训练数据分布。当这听起来似乎很成功时,请不要忘记,一个弹性的模型没有泛化性。这意味着当这个模型在未知数据上测试时,结果令人失望。
在这样的情况下,我们利用Bagging 算法(例如随机森林)来处理高方差问题。Bagging算法利用放回随机抽样将数据集分为多个子集,这些样例使用学习算法生成一系列模型。模型使用投票(分类)或平均(回归)用于组合预测。
同样,为了与高方差做斗争,我们可以:
使用正则化技术,较高模型系数被惩罚,降低模型复杂度。
使用变量重要性图表中前n个特征。也许使用数据集中的所有变量,算法很难识别出有意义的信号。
Q10:一个数据集包含很多变量,其中一些高度相关。你的经理让你做PCA,你会先移除关联的变量吗,为什么?
回答:或许,你会说NO。但是那可能不正确。移除关联变量对PCA有一个重大的影响,由于关联变量的存在,由某个成分解释的方差会膨胀。
例如,数据集中有3个变量,其中2个之间是相关的。如果你使用PCA,相比较于不相关变量,主要成分之间会显示2倍方差。同样,相关变量的相加让PCA对于相关变量更加重视,这具有误导性。
剩余30个问题请访问www.bigquant.com。
若您对这篇文章有更多意见,欢迎到BigQuant社区中与我们讨论。