多做练习。面试官的话:“有时人们在白板上写代码会有些紧张,尤其当他们面对的是不认识的人时…练习将思考和说话连接起来,写代码的同时解释你在做什么,为什么那样写。你可以讲错,然后认识到自己的错误并改正。我们宁愿看到你讲错了,而不愿看到你沉默不语。” 承认自己的弱点。面试官的话:“承认你有不懂的东西。这是加分项。同时也要了解自己的优势。” 不要让自己陷入困境。面试官的话:“向面试官提问以寻求提示是OK的,要让对话进行下去。” 附:机器学习面试常见十问 Q:朴素贝叶斯(naive Bayes)为何如此“naive”? A:朴素贝叶斯如此“naive”,是因为它假设一个数据集中的所有特征具有同等的重要性和独立性。在现实世界中这种假设很少成真。 Q:假设你正在处理一个时间序列数据集,你的上司要求你建一个高精度模型。你先是用了决策树算法,因为你知道它在各种数据类型上都运行得相当好。后来,你尝试了一个时间序列回归模型,并获得比决策树模型更高的准确度。这种情况可能发生吗?为什么? A:时间序列数据是线性的,而我们知道决策树算法在检测非线性交互上效果最好。决策树模型未能提供鲁棒预测是因为它在映射线性关系上不像回归模型那样好。因此,这是可能的,由于数据集满足其线性假设,线性回归模型能够提供鲁棒预测。 Q:你发现你的模型偏置低、方差高,开奖,应该使用那些算法来解决?为什么? A:当模型的预测值接近实际值时,会出现低偏置。换句话说,低偏置模型足够灵活,能模仿训练数据的分布。但灵活的模型缺乏泛化能力。这意味着,当用未知数据测试这个模型时,得出的结果会不如人意。在这种情况下,我们可以使用bagging算法(如随机森林)来降低方差。bagging算法能将数据集切分为用重复随机抽样的子数据集。然后,使用单个学习算法和这些子数据集生成一组新的模型,使用投票(分类)或平均(回归)来组合模型预测。 Q:KNN和kmeans聚类有什么区别? A:不要被它们名字中的“k”误导。这两种算法间的根本区别是,kmeans本质上是无监督的,而KNN本质上是有监督的。Kmeans是一种聚类算法,而KNN是分类(或回归)算法。 Q:在处理数据集时,如何选择重要变量? A:以下是可选择的方法: 在选择重要变量前删除相关变量 使用线性回归并根据p值选择变量 使用前向选择、后向选择、逐步筛选 使用随机森林、Xgboost并绘制变量重要性图 使用套索回归 测量可得的一组特征的信息增益,并选择n值高的特征。 Q:都是基于树的算法,随机森林和梯度boosting算法(GBM)有什么区别? A:根本的区别是,随机森林使用bagging技术做预测,GBM使用boosting技术进行预测。Bagging技术中,使用随机抽样将数据集分成n个样本,然后使用单个学习算法对所有样本建模,最后使用投票或回归来对得到的预测结果进行组合。Bagging是平行进行的。 Boosting(提升)则是在第一轮预测后,算法将错误分类的预测权重提高,使它们在下一轮预测中得到校正。这个过程会重复进行,知道达到标准精度才停止。 随机森林主要通过降低方差来提高模型精度,随机森林的树相互间没有相关性,能尽可能的降低方差。另一方面,GBM提高精度的同时可能同时降低模型的偏置和方差。 Q:假设你在处理分类问题,为了验证,你从训练数据集中随机抽样出子集用于训练和验证。因为验证得到的准确度很高,你确信你的模型在未见数据中也能运作得很好。但是,模型的测试精度非常低。是什么地方出了错? A:在分类问题中,应该使用分层抽样而不是随机抽样。随机抽样没有考虑目标类别的比例。而且,分层抽样也有助于保持目标变量在样本中的分布和数据集中的分布一致。 Q:假设我是个5岁小孩,请向我解释机器学习。 (责任编辑:本港台直播) |