40个机器学习与数据迷信的面试成绩 (1)
作者头像
  • 吴晶晶
  • 2020-03-09 12:31:42 3

Q1:你有一个训练数据集,包含1000列和100万行,这是一个分类问题。你的经理要求你降低数据集的维度,以减少计算时间。你的机器有内存限制,你该如何操作?

回答: 在内存有限的情况下处理高维度数据是一项挑战,你的经理对此应该有所认识。以下是你可以采用的方法:

  1. 关闭所有不必要的应用程序,包括浏览器,以释放更多内存空间。你可以随机选取一部分数据,例如1000列和30万行,来进行计算。
  2. 将数值变量和分类变量分开处理,然后去除相关性高的变量。对于数值变量,可以通过相关性分析来筛选;对于分类变量,则可以使用卡方检验。
  3. 利用主成分分析(PCA)来挑选能够解释最大方差的主成分。
  4. 使用在线学习算法,如Vowpal Wabbit(在Python中可用)。
  5. 构建一个使用随机梯度下降的线性模型。
  6. 根据业务理解,评估哪些预测因子可能影响目标变量。然而,这种方法需要一定的直觉判断,如果无法识别有效预测因子,可能会导致信息损失。

Q2:在PCA中,转置是必要的吗?如果必要,为什么?如果不转置,会发生什么?

回答: 是的,转置(正交变换)是必要的,因为这能最大化成分间的方差差异,从而使成分更容易解释。PCA的目标就是选择较少的成分来解释数据集中的最大方差。通过转置,成分之间的相对位置不变,只是改变了数据点的实际坐标。

如果不进行转置,PCA的效果会大打折扣,我们需要选择更多的成分来解释数据集中的方差。

Q3:你有一个数据集,其中缺失值分布在中位数周围的一个标准差内。有多少百分比的数据不受影响?为什么?

回答: 这个问题提示我们缺失值集中在中位数附近,意味着数据分布可能接近正态分布。在正态分布中,大约68%的数据位于均值的一个标准差范围内,剩下的32%的数据不受影响。因此,约32%的数据不受缺失值的影响。

Q4:你正在处理一个癌症检测的数据集,已经建立了一个分类模型,达到了96%的准确率。你为什么对模型性能不满意?你能做些什么?

回答: 如果你处理过足够多的数据集,你应该意识到癌症检测通常会导致数据不平衡。在这种情况下,准确率不是一个好的评估指标,因为96%的准确率可能只是预测多数类的结果,而我们真正关心的是少数类(4%),即实际被诊断为癌症的人群。因此,为了评估模型性能,我们应该使用灵敏度(真正率)、特异性(真负率)和F1分数。如果少数类的性能不佳,可以采取以下措施:

  1. 使用欠采样、过采样或SMOTE来平衡数据。
  2. 通过概率校准调整预测阈值,利用AUC-ROC曲线找到最佳阈值。
  3. 对少数类赋予更高的权重。
  4. 使用异常检测。

Q5:为什么朴素贝叶斯如此“简单有效”?

回答: 朴素贝叶斯之所以简单有效,是因为它假设所有特征都是同等重要且相互独立的。然而,在现实生活中,这种假设通常是不成立的。

Q6:解释朴素贝叶斯算法中的先验概率、似然性和边缘似然性。

回答: 先验概率是指在没有任何其他信息的情况下,某个事件发生的概率。例如,在一个数据集中,某个类别的比例可以作为先验概率。例如,如果1(垃圾邮件)的比例是70%,0(非垃圾邮件)的比例是30%,那么我们可以估计新邮件被标记为垃圾邮件的概率是70%。

似然性是指在给定某些参数的情况下,观察到某个事件的概率。例如,“Free”这个词在垃圾邮件中出现的概率。

边缘似然性是指在任何邮件中,“Free”这个词出现的概率。

Q7:你正在处理一个时间序列数据集,经理要求你构建一个高精度的模型。你从决策树算法开始,因为它在各种数据上表现良好。然后你尝试了一个时间序列回归算法,发现其精度高于决策树模型。这种情况可能发生吗?为什么?

回答: 时间序列数据通常包含线性关系。另一方面,决策树算法擅长检测非线性关系。决策树无法提供稳定预测的原因在于它无法很好地描述线性关系。因此,如果事先知道数据集满足线性假设,线性回归模型可以提供更稳定的预测。

Q8:你需要完成一个项目,帮助一家食品公司节省成本。问题是他们的物流系统无法按时送达食物,导致客户不满。为了提高客户满意度,他们停止了免费送货服务。哪种算法可以帮助他们?

回答: 你可能会想到许多机器学习算法,但请暂停一下,这些问题实际上是在考验你对机器学习基础知识的理解。

这不是一个典型的机器学习问题,而是一个优化问题。一个机器学习问题包含三个要素: 1. 存在一个模式,但你无法用数学方法解决它(即使使用指数方程)。 2. 你拥有相关数据。

在考虑机器学习是否能解决问题时,要确认这三个要素。

Q9:你的模型有低偏差但高方差,你应该使用什么算法来解决这个问题?

回答: 低偏差意味着模型预测值接近实际值。换句话说,模型有足够的灵活性来模拟训练数据的分布。然而,一个过于灵活的模型缺乏泛化能力,这意味着在未知数据上的测试结果可能不尽人意。

在这种情况下,我们可以使用袋装算法(如随机森林)来解决高方差问题。袋装算法通过对数据集进行放回随机抽样生成多个子集,并使用这些子集生成一系列模型,最后通过投票(分类任务)或平均(回归任务)组合预测结果。

此外,为了对抗高方差,我们还可以: 1. 使用正则化技术,对较大的模型系数进行惩罚,从而降低模型复杂度。 2. 使用变量重要性图表中排名前n的特征。也许可以使用数据集中的所有变量,但算法难以识别出有意义的信号。

Q10:你有一个包含许多变量的数据集,其中一些变量高度相关。你的经理要求你做PCA,你会先移除相关的变量吗?为什么?

回答: 或许你会说不会,但这可能是不正确的。移除相关变量会对PCA产生显著影响,因为相关变量的存在会使某个成分解释的方差收缩。

例如,数据集中有3个变量,其中两个是相关的。如果你使用PCA,相较于不相关变量,主要成分之间的方差会减小。同样,相关变量的增加会让PCA更加关注这些变量,这可能会导致误导性的结果。

    本文来源:图灵汇
责任编辑: : 吴晶晶
声明:本文系图灵汇原创稿件,版权属图灵汇所有,未经授权不得转载,已经协议授权的媒体下载使用时须注明"稿件来源:图灵汇",违者将依法追究责任。
    分享
迷信面试机器成绩数据学习
    下一篇