zl程序教程

您现在的位置是:首页 >  硬件

当前栏目

【数据挖掘】2022年2023届秋招宏瓴科技公司机器学习算法工程师 笔试题

2023-09-14 09:13:06 时间

1 简介

公司:宏瓴科技有限公司
岗位:机器学习算法工程师
笔试时间:2022-9-28
以下答案全是自己总结,这些点对于我来说太难了,我对自己总结的答案也没有信心,题目中说要用公式去表示,我都不知道如何去写。

2 题目

请在题目下方作答。

1. 什么是贝叶斯误差?什么是贝叶斯最优分类器?(以如下的二分类问题为例尽量用公式作答)- (10分)
二分类器:f:X -> Y={0,1}

答:
(1)是指在现有特征集上,任何可以基于特征输入进行随机输出的分类器所能达到的最小误差。
(2)贝叶斯最优分类器为最小化总体风险,只需在每个样本上选择某个条件使得条件风险最小的类别标记时的判定准则。

2. 当我们拿到一个新的(之前没有参考文献)监督学习问题的训练数据的时候,在开始训练之前,为什么需要关心这个问题的贝叶斯误差?有可能通过理论分析直接得到贝叶斯误差的真实值么?如果能,请把计算公式写下来;如果不能,如何用工程办法大致去估计一个贝叶斯误差的替代值? - (10分)

答:
(1)因为理想模型是假设预先知道生成数据的真实概率分布的,但是实际的数据分布中存在一些噪声扰动的,与理想状态并不符合,在监督学习中x到y的映射可能内在是随机的,或者y可能是包括x在内还有其他变量的确定性函数。使用贝叶斯误差,就是能从预先知道的真实分布中预测出现的误差。
(2)不能通过理论分析直接得到贝叶斯误差的真实值,因为这是一个理论值。工程办法是用人类误差当做贝叶斯误差的替代值。

3. 假设我们拿到了训练集和测试集两个标定好的数据集,其中测试集的数据分布与(落地场景中)真实分布一致,但是数据量不大,训练集的数据量大,但是不能保证其分布跟真实分布一致(往后的所有问题中出现的训练集和测试集都做以上假设)。
为了利用好这两个数据集训练出在落地场景中表现尽可能好的深度学习模型,我们应该用以下哪一种数据集划分方式进行训练,为什么?(把一个数据集一分为二的时候,无论两个子集各自占比多少,都假设其数据分布与原数据集一致)- (10分)

a) 训练集 | 测试集
训练集用于训练模型参数,测试集用于测试模型准确率,同时根据测试集上的表现来选择网络超参,比如学习率,网络深度等

b) 9/10的训练集 | 1/10的训练验证集 || 测试集
在训练集上使用留一交叉验证的方式,划分出训练集和训练验证集,在训练集上训练模型参数,用训练验证集上的错误率来选择网络超参

c) 训练集 | 训练验证集 || 测试验证集 | 测试集
把训练集拆分成两部分:大部分用于训练网络参数,少部分保留出来作为训练验证集;测试集也拆分成两部分:测试验证集和最终的测试集

答:选择c,因为当训练集和测试集分布不一致时,构造和测试集分布近似相同的验证集,保证线下验证根线上测试分数不会出现抖动。

还有三个问题忘了