5个必须了解的数据科学面试问题
为了不让自己在同一个地方失败两次,也为了让自己对他人有用,我的这篇文章献给那些想追随自己的激情,成为数据科学家的人。我坚信,即使你不想换工作,你也必须不断地接受面试,因为你在面试中学到了很多东西。没有比这更快的学习方法了。数据科学是一个需要你不断提高技能的领域,同时每天都在发展机器学习算法的基本概念。因此,废话不多说,让我们直接进入一些问题和答案,你可能在下次面试中有用。
问题1:你能解释一下决策树的损失函数吗?
答案: 在回答这个问题之前,需要注意的是,决策树是一种通用的机器学习算法,它可以执行分类和回归任务。因此,它们的损失函数也不同。
分类问题的损失函数:
在我们理解损失函数之前,Gini不纯度是一个很重要的概念,让我先解释一下。
式1:Gini不纯度
其中“p”为第i个节点上类k的实例与总的训练实例的比例。这是什么意思??我们通过下面的例子来理解。图一显示了深度为2的Iris决策树的简单可视化。顶层是根节点。将训练集划分为决策集的概念在算法中相当简单。例如,在这里,iris数据集根据根节点上一个称为“ petal width”的单一特征被分成两个子集。如果petal width小于或等于0.8,则算法进入深度1(左)。如果不是,就进入深度1的右边。它根据“petal width”的附加特征进一步划分实例。在深度1上,右节点有100个实例的样本,将0个实例应用于Iris-Setosa, 50个实例应用于Iris-Versicolor,其余50个应用于Iris-Virginica。
图1: Iris决策树
所以这个节点的基尼系数是0.5:
式2: Gini不纯度的计算
类似地,在深度1(左节点)处,Gini不纯度为0,因为所有的训练实例都应用于同一个类。节点本质上是“纯”的。
现在我们已经理解了什么是Gini不纯度,让我们进入问题的实质。决策树使用分类和回归树(CART)算法进行训练,基于一个简单的概念,即使用单个特征(k)和阈值(t)将数据集分成两个子集。iris数据集的特征为“petal width”,阈值为0.8。它是如何选择k和t的?它搜索产生最纯子集的对(k, t)。因此,算法试图最小化的代价函数如下式所示:
其中G左右代表子集的gini不纯度,m代表子集的实例。
回归型问题的损失函数:
对于回归树,损失函数是相当直观的。我们使用残差平方和(RSS),式(3)为回归型树的损失函数,其中y为ground truth, y-hat为预测值。
式3:残差的平方和
问题2:共线性会对模型有影响吗?
答案: 共线性是指两个或多个预测变量之间关系密切。下面的图2显示了共线变量的例子。变量2严格遵循变量1,Pearson相关系数为1。所以很明显,当这些变量被输入到机器学习模型中时,它们中的一个会表现得像噪音一样。
图2: 共线性变量的例子
共线性的存在在回归类型的问题中可能成为问题,因为很难分离出共线性变量对响应的个别影响。或者换句话说,共线性降低了回归系数估计值的准确性,导致误差增加。这将最终导致t统计量的下降,因此,在共线性存在的情况下,我们可能无法拒绝原假设。
检测共线性的一个简单方法是查看预测变量的相关矩阵。这个矩阵的一个元素的绝对值很大,表明了一对高度相关的变量,存在数据共线性的问题。不幸的是,并不是所有的共线性问题都可以通过检查相关矩阵来发现:即使没有一对变量具有特别高的相关性,三个或多个变量之间也可能存在共线性。这种情况称为多重共线性。对于这种情况,评估多重共线性的一个更好的方法是计算方差膨胀因子 (VIF),而不是检查相关矩阵。每个变量的VIF可以用公式计算:
式4: 方差膨胀因子
其中r平方项是变量X对所有其他预测因子的回归。如果VIF接近或大于1,则存在共线性。当遇到共线性问题时,有两种可能的解决方案。一种是删除冗余变量。这可以在不影响回归拟合的情况下完成。第二种方法是将共线变量合并成单个预测器。
问题3:给外行解释一下深度神经网络
答案:神经网络(NN)的概念最初起源于人类大脑,其目的是识别模式。神经网络是一套通过机器感知、标记和聚类原始输入数据来解释感知数据的算法。任何类型的现实世界数据,无论是图像、文本、声音甚至时间序列数据,都必须转换成包含数字的向量空间。
深度神经网络中的深度是指神经网络由多层构成。这些层是由节点组成的,在节点上进行计算。人脑中的一个类似节点的神经元在遇到足够的刺激时就会被激活。节点将原始输入的数据与其系数或权值组合在一起,这些系数或权值根据权值减弱或放大输入。输入和权重的乘积在图3所示的求和节点上求和,然后将其传递给激活函数,激活函数决定该信号是否应该在网络中进一步扩展并影响最终结果。节点层是一排类似神经元的开关,当输入通过网络输入时,这些开关就会打开或关闭。
图3: 神经网络中节点的可视化
深度神经网络不同于早期的神经网络,如感知器,因为它们是浅层的,只是由输入层和输出层以及一个隐含层组成。
图4: 深度神经网络包含多个隐含层
问题4:3分钟简单阐述一个可以让你回去解决的数据科学的项目
答案:一个典型的数据科学面试过程始于具体的数据分析项目。我做过两次,取决于项目的复杂度。第一次,我有两天的时间来解决一个问题,使用机器学习。而第二次,我有两个星期的时间来解决一个问题。不需要指出的是,当我第二次处理类别不平衡的数据集时,这是一个更加困难的问题。因此,3分钟的推销式面试问题可以让你展示你对手头问题的把握。请务必从你对问题的解释开始,你解决问题的简单方法,你在你的方法中使用了什么类型的机器学习模型,为什么?不要对模型准确性过多的吹嘘。
我相信这是你在面试中非常重要的一个问题,它可以让你证明你是数据科学领域的领导者,并且可以使用较新和较好的工具来解决复杂的问题。
问题5:模型正则化是什么意思?如何在线性模型中实现正则化?
答案: 正则化是一个用于约束机器学习模型的术语。在机器学习模型中约束或减少过度拟合的一个好方法是减少自由度。自由度越少,模型越难过度拟合数据。例如,正则化多项式模型的一种简单方法是减少多项式的自由度。然而,对于线性模型,正则化通常是通过限制模型的权值来实现的。因此,与线性回归不同,岭回归、lasso回归和弹性网络模型有三种不同的约束权重的方法。为了完整起见,我们先从线性回归的定义开始:
式5:线性回归和模型预测
线性回归模型的损失函数定义为均方误差:
岭回归:是线性回归的正则化版本,即,则在成本函数中增加一个额外的正则化项。这就迫使学习算法不仅要适应数据,还要使模型的权值尽可能小。注意,正则化术语只应在训练期间添加到损失函数中。一旦对模型进行了训练,你就需要使用非正则化的性能度量来评估模型的性能。
超参数alpha控制模型的正则化程度。如果是零,那么岭回归就是线性回归。
Lasso回归: Lasso回归是另一个正规化的线性回归,就像岭回归,它增加了损失函数的正则化项,但它使用L1范数的权向量,而不是L2范数的平方。
Lasso回归的一个重要特征是它倾向于完全消除最不重要特征(即最不重要特征)的权重,把它们设为零。换句话说,Lasso回归自动执行特征选择并输出一个稀疏模型(即,只有少数非零的特征权重)。