尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

2016数据挖掘笔试题深度解析:从概率统计到模型评估核心考点

2016数据挖掘笔试题深度解析:从概率统计到模型评估核心考点 2016年我准备跳槽的时候专门刷过360的数据挖掘笔试题。那会儿市面上能参考的真题不多网上能找到的回忆版也零零散散但恰恰是这份题让我把整个知识体系重新捋了一遍。现在回头看这份题的价值不在于题目本身而在于它非常典型地反映了那个年代数据挖掘岗位对候选人的要求——概率统计要扎实经典算法要理解到位特征工程要有实战感觉模型评估不能只会背公式。这份题适合谁看两类人。一类是正在准备数据挖掘、机器学习相关岗位面试的求职者另一类是刚入行、想系统补基础的数据从业者。即使题目是2016年的核心考点到今天依然是面试的主旋律只是问法更灵活、更深了。我会结合当年的题目风格把每个考点背后的原理、解题思路和面试官真正想听到的东西都拆开讲清楚。1. 2016年数据挖掘笔试到底在考什么整体考核维度解析先说结论这份笔试题的考察范围非常“正统”几乎没有偏题怪题。整体分为四个大块——概率统计、机器学习算法、特征工程、模型评估。这个结构在当时是主流放到现在依然是数据岗笔试的通用框架。为什么会是这四块因为数据挖掘的工作流本身就对应着这四块。拿到一份业务数据先要做描述性统计和分布分析这是概率统计的功底然后做特征清洗、变换、筛选这是特征工程接着选择合适的模型去训练这是机器学习算法最后评估模型效果、调参、防止过拟合这是模型评估。笔试题的出题逻辑不是随机拼凑而是模拟了一遍完整的建模流程。1.1 概率统计是绕不开的底座很多人在准备数据挖掘笔试时容易犯一个毛病——一上来就刷机器学习算法觉得概率统计随便看看就行。但360这份题里概率统计的分量一点都不轻。贝叶斯公式、条件概率、期望与方差、常见分布的性质这些都是高频考点。为什么概率统计这么重要因为数据挖掘本质上是在不确定性的前提下做决策。模型输出的不是“一定是A”而是“有多大概率是A”。如果你不理解概率论里的基本概念后面学损失函数、学极大似然估计、学贝叶斯优化都会觉得隔了一层纱。我记得当年有一道题是给了一个联合概率分布表要求计算条件概率和后验概率。这类题本身不难难的是很多人在考场上一紧张就把贝叶斯公式的分子分母搞混了。我的建议是不要死记公式而是理解它背后的逻辑后验概率 先验概率 × 似然度 / 归一化因子。分子部分很好理解——在某个类别下看到这个样本的可能性乘上这个类别本身的可能性分母的作用只是确保所有类别的后验概率加起来等于1。想通这一点不管题目怎么变形你都能应对。1.2 机器学习算法重点不是背公式而是理解“为什么”这份题里的机器学习算法部分覆盖面很广逻辑回归、SVM、决策树、朴素贝叶斯、K-Means、PCA基本把经典模型都过了一遍。但真正让很多人丢分的不是公式推导而是“为什么”层面的问题。举个例子逻辑回归的损失函数为什么不用均方误差而要用交叉熵如果只是背公式你永远答不上来。实际原因是逻辑回归的最终输出经过sigmoid函数压缩到(0,1)区间如果使用均方误差损失函数关于参数是非凸的梯度下降很容易陷入局部最优而交叉熵和sigmoid组合在一起损失函数是凸的并且梯度形式非常简洁不存在梯度消失的问题。面试官问这类问题不是想考你数学推导能力而是想确认你真正理解模型的内在机制。一个只会调包的人和一个理解原理的人在遇到模型效果不好、需要debug的时候表现是完全不同的。前者只能盲目试参数后者能根据损失函数的梯度信息、模型的假设条件快速定位问题出在哪里。2. 几类必考算法题型的拆解思路笔试中的算法题一般不会让你实现一个完整的模型更多是考察你对算法核心思想的理解和简单推导能力。我把当年这份题里出现频率最高、也最容易踩坑的几类题型单独拿出来拆一下。2.1 分类模型逻辑回归、SVM、决策树的高频问法逻辑回归、SVM、决策树是当年笔试的“三驾马车”几乎每家大厂都会出。但不同公司的出题风格不一样360的题偏实用喜欢考“在什么场景下选什么模型”这类问题。比如SVM高频考点包括什么是支持向量、软间隔和硬间隔的区别、核函数怎么选、为什么引入对偶问题。其中“为什么引入对偶问题”是很多人的盲区。表面答案是为了方便引入核函数但更深层的原因是原始问题是一个带约束的凸优化问题直接求解比较复杂通过拉格朗日对偶性把它转化为对偶问题后约束条件变得更简单而且目标函数中只涉及样本之间的内积运算这为核技巧打开了大门——把内积替换成核函数就能让SVM处理非线性问题。决策树的高频考点则集中在特征选择准则上信息增益、信息增益率、基尼系数分别对应ID3、C4.5、CART。当年有道题是给了一个小数据集要求手动计算信息增益并选择最优划分特征。这类题考察的是基本功但很多人在计算熵的时候容易漏掉“加权”这一步——不是简单地算每个子集的熵再求和而是要按照子集的样本量占比加权。这个细节我在后面实操部分会具体演示。2.2 聚类与降维K-Means、PCA的考察逻辑K-Means和PCA是笔试里比较“友好”的题目因为它们计算逻辑清晰、答案确定性强。但“友好”不代表容易拿满分关键在于你是否理解了算法的本质。K-Means常考的问题包括K值怎么选、初始中心点怎么定、算法一定会收敛吗、时间复杂度是多少。其中“为什么K-Means一定能收敛”这个问题很多人答不上来。答案在于K-Means的迭代过程实际上是在交替优化一个目标函数固定簇分配更新中心点使类内平方和最小固定中心点重新分配样本使类内平方和最小。每一步都在降低目标函数值而目标函数有下界最小为0所以算法一定收敛。能讲清楚这个逻辑面试官对你的评价会明显不一样。PCA的考察则集中在“为什么选最大特征值对应的特征向量”这个问题上。本质是因为PCA的目标是最大化投影后方差而投影后方差恰好等于协方差矩阵在对应特征向量方向上的特征值。特征值越大说明这个方向保留的信息越多。所以按特征值大小排序取前K个特征向量构成投影矩阵就是PCA的完整逻辑。2.3 朴素贝叶斯与手算推导从题面到答案的完整路径朴素贝叶斯是笔试中的“送分题”但也是“丢分题”。说它送分是因为公式简单、计算量小说它丢分是因为太简单导致很多人掉以轻心忽略了两个关键细节拉普拉斯平滑和连乘下溢。先看拉普拉斯平滑。如果在训练集中某个特征值在某个类别下从未出现过它的条件概率就是0乘到整个后验概率里结果直接变成0。这显然不合理——没出现过不代表不可能出现。解决办法就是在分子加1、分母加类别数或特征取值个数这就是拉普拉斯平滑。笔试中如果题目没有明确说不用平滑建议默认加上并说明理由反而会加分。再看连乘下溢。朴素贝叶斯要把所有特征的条件概率连乘起来如果特征很多每个概率都是0到1之间的小数连乘结果会非常小小到浮点数都表示不了。解决办法是取对数把连乘变成连加既不会下溢又不会改变概率的大小关系。这是工程实践中的常见操作出现在笔试题里时往往是考察你有没有实战经验。最后说手算路径。拿到一道朴素贝叶斯题目先理清题目给的是先验概率、似然概率还是需要自己从数据里统计然后按类别分别计算后验概率的分子部分最后比较大小不需要算分母因为分母对所有类别都一样。这个“只比分子不比分母”的技巧能帮你节省大量计算时间。3. 特征工程与数据预处理笔试里的隐藏大项很多人刷笔试题的时候容易忽略特征工程因为题目里没有大段篇幅来考它。但360这份题里特征工程是通过小题形式渗透在算法题和案例题里面的。比如给一个包含缺失值、异常值、量纲差异大的数据集问怎么处理——这种题看起来是开放性的实际上考察的是非常具体的工程能力。3.1 面试官想从特征处理题里看到什么面对“如何处理缺失值”这类题初级答法是“填均值、填中位数、删掉缺失行”。这个答案没错但不完整。面试官真正想听的是你能够根据缺失机制来区分处理方式。先判断缺失比例。如果某个特征缺失超过70%无论怎么填信息量都不够了建议直接删除。如果缺失比例在20%-70%之间要看特征重要性来决定是填充还是删除。如果缺失比例很低比如不到5%简单填充即可。再判断缺失机制。随机缺失和非随机缺失的处理方式完全不同。随机缺失可以用均值、中位数、众数填充也可以用模型预测填充非随机缺失比如高收入人群不愿意填写收入字段如果直接用均值填充会产生严重的偏差。这时候反而应该把“是否缺失”本身作为一个特征加入模型因为缺失状态本身就携带着信息。这套思路讲出来面试官就知道你不是只会调fillna而是真的在业务里处理过数据质量问题。3.2 特征选择的三种策略以及它们各自的应用场景特征选择是数据挖掘中极其重要的一环。特征太多会带来两个问题一是计算开销大二是容易过拟合——模型把训练集里的噪声也学进去了。笔试里常考的是三类特征选择方法过滤式、包裹式、嵌入式。过滤式方法最简单先对每个特征独立地计算与目标变量的相关性卡方检验、皮尔逊相关系数、互信息等设定阈值筛掉不重要的特征。优点是计算快缺点是没有考虑特征之间的交互作用——两个单独看都很弱的特征组合在一起可能非常强。包裹式方法直接以模型效果为目标来评估特征子集。典型代表是递归特征消除每次训练完模型把权重最小或重要性最低的特征去掉再重新训练直到达到指定特征数量。效果通常比过滤式好但是计算代价高特征多的时候基本跑不动。嵌入式方法是前两者的折中把特征选择融进模型训练过程中。L1正则化就是典型代表它会让一部分特征的权重变成0从而实现自动特征选择。树模型的特征重要性也是嵌入式方法。当年笔试有一道题问“L1正则化和L2正则化的区别”很多人只回答了“L1产生稀疏解、L2防止过拟合”但没说明白为什么会产生稀疏解。关键在于L1的约束区域是菱形尖角在坐标轴上最优解更容易落在坐标轴上L2的约束区域是圆形最优点一般不在坐标轴上所以L2不会让权重变成0只会让权重变小。3.3 数据标准化与归一化的选择逻辑这道题几乎是笔试必出什么时候用标准化Standardization什么时候用归一化Min-Max Scaling我直接给结论。如果数据符合正态分布或者模型假设数据服从正态分布比如线性判别分析用标准化。如果数据分布没有明显边界或者需要保留原始数据的分布形状也用标准化。如果数据有明确的上下界或者需要把数据压缩到特定区间比如图像像素0-255映射到0-1用归一化。对于树模型标准化和归一化都不需要因为树模型只关心特征值的排序关系不关心具体数值大小。还有一个容易被忽略的点标准化和归一化都应该在划分训练集和测试集之后用训练集的数据拟合scaler再分别对训练集和测试集做变换。如果对整个数据集先做标准化再划分会造成数据泄露——测试集的信息提前进入了训练过程。这个细节在笔试的判断题里出现过在实战中也是很多人容易犯的错误。4. 模型评估与交叉验证答好这部分的几个关键动作模型评估部分的分值占比不算低而且题目比较灵活既有概念题也有场景题。核心考察三件事第一评估指标是否选得对第二交叉验证是否会做第三过拟合能不能识别和处理。4.1 评估指标的选用什么场景看准确率什么场景看AUC准确率是最直观的指标但也是最容易误导人的指标。它只在正负样本比例均衡时才有参考价值。当正负样本比例严重失衡时准确率会变得毫无意义。我当年见过一个经典的例子某个风控场景99.9%的样本是正常用户0.1%是欺诈用户。如果一个模型把所有用户都判为正常准确率高达99.9%看起来非常漂亮但它一个欺诈用户都识别不出来完全是个废模型。所以在类别不平衡的场景下要关注精确率Precision、召回率Recall和F1值。那什么时候看AUCAUC衡量的是模型对正负样本的排序能力——随机抽一个正样本和一个负样本模型给正样本打分的概率大于负样本打分的概率。它不依赖于具体的分类阈值所以当你还没确定阈值、或者需要比较多个模型的整体排序能力时用AUC。精确率和召回率则依赖阈值适合在业务明确要求“宁可错杀不可放过”或“宁可放过不可错杀”时使用。我把几个指标的关系整理成一张速查表方便对照记忆。指标公式适用场景准确率 Accuracy(TPTN)/(TPTNFPFN)正负样本均衡、各类错误代价相同精确率 PrecisionTP/(TPFP)高误报代价高的场景如垃圾邮件误判为正常邮件召回率 RecallTP/(TPFN)高漏报代价高的场景如癌症筛查、欺诈检测F1值2PR/(PR)查准率和查全率都重要需取平衡AUCROC曲线下面积不依赖阈值比较模型整体排序能力4.2 交叉验证的几种方式和选择依据交叉验证是笔试里必考的概念但很多人只会背名字K折交叉验证、留一法、留出法。出题人稍微换个角度问“什么时候用留一法”就有一批人卡住。标准的做法是数据量充足时用K折交叉验证K通常取5或10。K越小每次训练集的样本越少模型偏差越大K越大训练集样本越多但计算量也越大且每次训练集之间的重叠越多验证结果的相关性越高。10折是实践中的常见选择偏差和方差比较平衡。数据量很小的时候比如几百条样本用留一法即每次只留一条样本做验证其余全部训练。留一法几乎用到了所有训练数据偏差最小但计算开销极大数据量大时完全不现实。还有一个特殊场景——时序数据。如果数据是按时间排序的不能用普通的K折随机切分因为未来信息不能用于预测过去只能用“前训练、后验证”的时间序列交叉验证把训练数据按时间切分永远用过去的数据预测未来的数据。4.3 过拟合的识别与处理从训练误差到泛化误差过拟合是数据挖掘面试中的必问题。最基本的答法是训练集表现很好、验证集表现很差说明模型把训练集中的噪声也学进去了。但深入一点的答法是过拟合的本质是模型复杂度超过了数据量能支撑的范围。模型的可学习参数太多或者特征维度太高模型就有能力“记住”训练集中的每一个样本而不是学习到背后的一般规律。理解了这一点处理过拟合的思路就有四条可走一是增加训练数据从根本上缓解二是降低模型复杂度比如决策树剪枝、神经网络减小层数三是加正则化让权重不要太大L2或让部分权重归零L1四是集成学习多个模型平均能有效降低方差。笔试中常考的一个判断题是“正则化系数越大模型越不容易过拟合”。这个判断题前面半句对但不够严谨。正则化系数过大的时候模型会走向另一个极端——欠拟合连训练集上的基本模式都学不到。所以正则化系数不是越大越好而是需要交叉验证来找到一个平衡点。能在答案里补充这一点说明你对偏差和方差的权衡有真实的体感。5. 从笔试真题看数据挖掘岗位的能力模型演变这份2016年的笔试题单独拿出来是一份备考资料但放在时间轴上来看它也记录了这个岗位的能力模型演变。2016年前后是数据挖掘岗位快速扩张的时期企业对这个岗位的预期是“能独立完成从数据到模型的全流程”所以笔试题覆盖面广、注重基础、强调工程意识。到了现在深度学习大行其道数据挖掘岗位的笔试题也发生了明显的变化。5.1 2016年的“标准答案”放到今天还成立吗大部分基础考点依然成立。概率统计、特征工程、模型评估的逻辑放到今天依然是基本功。逻辑回归和决策树仍然是工业界非常常用的模型SVM虽然在大规模数据场景下用得少了但它的理论价值和对优化思想的要求仍然让它在面试题中占有一席之地。变化最大的是深度学习的权重。2016年的笔试里深度学习相关内容极少即使有也是概念性的比如“CNN和DNN的区别”。而现在的笔试题Transformer、Attention、Embedding、预训练模型几乎是必考项甚至一些大模型相关的概念也已经进入面试范围。另外特征工程的考察方式发生了变化。以前是直接问“缺失值怎么处理”“类别特征怎么编码”现在更多是给一个具体业务场景让你自己判断怎么设计特征。这种变化说明企业更看重的是你在复杂场景下的问题拆解能力而不是背概念的能力。5.2 从做题到做事笔试题目背后的真实业务映射我当年刷完这份题之后有一个很深的感受笔试里每一道题几乎都能映射到真实工作中的某个场景。逻辑回归的参数更新公式映射到实际工作中就是你需要自己动手实现模型训练逻辑或者至少理解框架底层的梯度计算过程。特征选择的方法选择映射到实际工作中就是两个特征高度相关时你需要决定保留哪个、删除哪个。交叉验证的方式选择映射到实际工作中就是上线A/B测试前如何用历史数据验证模型稳定性。模型评估的指标选择映射到实际工作中就是和业务方对齐需求时要能够说清楚“为什么这个场景用召回率而不是准确率”。换句话说笔试不是终点而是你做事的底层支撑。那些刷题时理解透彻的原理会在真正的业务问题中反复用到。那些靠死记硬背蒙混过关的知识点也总会在某个加班的深夜以bug的形式回来找你。6. 给现在求职者的备考建议与避坑清单如果你正在准备数据挖掘相关的笔试面试最后这部分是我最想分享给你的实战经验。第一别只刷题要把每个算法的“为什么”搞明白。我当年复习的时候会把每个算法问自己三个问题它解决什么问题、它的核心假设是什么、如果假设不满足会怎样。这三个问题想通了不管题目怎么换角度你都能从原理层面给出有深度的答案。比如逻辑回归的核心假设是特征与对数几率之间存在线性关系如果这个假设不成立模型在训练集和测试集上的表现都会明显变差。第二手推公式的能力很重要但不要陷入纯数学推导的泥潭。笔试中出现推导类题目核心还是考察你对模型机制的理解。推导过程中要能说出每一步的动机为什么这里要对目标函数取对数、为什么这里要加正则项、为什么这里可以忽略常数项。能说清动机的推导比一步步写完整公式更有价值。第三做错题比做新题更重要。我当时刷题有一个习惯每道做错的题都会单独整理一份文档记录三件事我当时的答案是什么、正确答案是什么、为什么我会答错。是概念理解有偏差还是计算粗心还是对题目的场景理解有误这个复盘过程比刷十道新题还有效。第四有时间的话亲手写一遍主要算法的实现。不用写得很工程化只要能用Python把逻辑回归的梯度下降、决策树的特征划分、K-Means的迭代过程实现出来你对这些算法的理解就会产生质变。因为写代码的过程会逼你把每个细节都想清楚很多你以为自己理解了、但实际上一动手就卡住的地方会在写代码时全部暴露出来。最后再提一个容易忽略的点笔试时间分配。数据挖掘笔试题的题量通常不小而且越往后题目越综合。我的策略是先把所有题目快速扫一遍区分出“会做的”和“需要想一想的”先保证会做的拿满分再花时间啃难题。最忌讳的是一道选择题卡住十分钟导致后面的大题完全没有时间写。在评分标准相对宽松的行业里部分得分也是分先落袋为安。
返回列表