:概述篇——术语、建模流程与拟合问题)
系列第二篇。总览篇里说过每篇都以它要在面试里回答什么开篇。概述这一章没有公式推导但它定义了后面所有篇章的语言体系——术语不清楚后面每个算法都听不懂。本篇要正面回答的三个面试题描述一下机器学习的建模流程归一化和标准化有什么区别什么是欠拟合、过拟合分别怎么解决一、AI、ML、DL三个概念到底是什么关系这三个缩写面试里经常拿来做开场题答案其实就两句话AI人工智能让计算机模拟、代替人类的思考和行动去完成任务ML机器学习实现人工智能的一种途径DL深度学习机器学习的一种方法也叫深度神经网络通过设计一层一层的神经元来模拟万事万物三者的关系是层层包含深度学习 ⊂ 机器学习 ⊂ 人工智能。机器学习是实现 AI 的途径之一深度学习又是机器学习里发展出来的一支。还有一组容易被忽略的对比基于规则的学习 vs 基于模型的学习。基于规则程序员把自己的经验写成 if-else机器照着执行基于模型从数据中自动学出规律问题来了——图像识别、语音识别、自然语言处理这类问题规则根本写不出来。你没法用 if-else 描述怎样算一张猫的照片。这就是机器学习存在的意义规则写不出来的地方让模型从数据里自己学。房价预测就是一个最小例子用一条直线yaxby ax byaxb去拟合面积和房价的关系这条直线就是模型aaa、bbb就是训练要学的参数。二、AI 发展三要素数据、算法、算力三者相互作用是 AI 发展的基石。我自己的记法是一个比喻人是大模型数据是我们吃的饭算法是把饭转化成能吸收的蛋白质的酶算力是整个转化过程需要的能量。算力这块展开一下三种处理器面试可能问到CPU适合 I/O 密集型任务GPU适合计算密集型任务TPU张量处理单元专门针对大型网络训练设计优化张量矩阵运算三、核心术语一张表看懂术语部分是纯粹的定义题背下来就行但要用一张真实的表来理解。想象一份同学就业薪资表每一行是一名同学列有学科、作业考试分数、学历、工作经验、工作地点最后一列是就业薪资现在要用前几列预测最后一列。术语定义在表里对应样本 sample一行数据就是一条样本一名同学的全部信息特征 feature一列数据一个特征影响目标值的因素一般多列学科、分数、学历、地点标签 label模型要预测的那一列只有一列就业薪资数据集 dataset多个样本组成整张表数据集划分是术语部分的面试常客训练集用来训练模型记作x_trainx\_trainx_train、y_trainy\_trainy_train测试集用来测试评估模型记作x_testx\_testx_test测试集的标签是考试答案只用来评分常见划分比例7:3 或 8:2这个划分的本质是模型必须在没见过的数据上接受检验否则就是考前看原题分数再高也不代表学会了。这个思想在后面泛化一节还会回来。四、算法分类有标签还是没标签按学习方式分四类判断标准就一条数据有没有标签。有监督学习数据有特征、有标签。标签是连续值就是回归问题预测房价是离散值就是分类问题判断好瓜坏瓜、二分类/多分类。无监督学习有特征、没标签。利用样本之间的相似性进行聚类发现数据的内部结构。半监督学习有特征只有少量样本有标签。工作流程是专家标注少量数据 → 训出一个模型 → 用模型给未标注数据打标 → 再和专家结果对比修正。目的就一个标注太贵了用少量人工标注带动大量无标注数据大幅降低标注成本。强化学习构建四个要素——agent智能体、环境状态、行动、奖励。agent 根据环境状态执行行动目标是获得最多的累计奖励。AlphaGo、游戏 AI、无人驾驶都是这个思路。记忆锚点有监督是有老师批改作业无监督是自己找规律半监督是老师只批改几本剩下的自己对照强化学习是没人教对错但赢棋有奖励。五、建模流程面试标准答案这题几乎是送分题按顺序背下来共五步有些资料拆成六步本质一样获取数据搜集与任务相关的数据集数据基本处理缺失值处理、异常值处理特征工程特征提取、预处理、降维等把数据变成模型吃得好的样子模型训练根据任务选算法——有监督、无监督、半监督还是强化学习模型评估效果好上线服务效果不好回到前面的步骤迭代一个容易被追问的细节这五步里最耗时、耗精力的是第 2、3 步数据处理和特征工程不是模型训练。工业界的普遍共识是数据质量对模型效果的影响远大于算法选择本身。六、特征工程让模型变聪明的手艺特征工程的定义利用专业背景知识和技巧来处理数据让模型达到最好的效果。它包含五个子领域1. 特征提取从原始数据中提取与任务相关的特征转成特征向量。比如把一段文本变成一串数字。2. 特征预处理解决量纲问题。量纲就是特征的单位——工资 15000 元和工龄 3 年放在一起数值范围差了四个数量级直接丢给模型工资列会天然压过工龄列。预处理要做的就是把所有特征拉到同一量纲下。两大手段归一化Normalization把数值压缩到固定区间常见[0,1][0, 1][0,1]核心是缩放到固定范围。x′x−xminxmax−xminx \frac{x - x_{min}}{x_{max} - x_{min}}x′xmax−xminx−xmin标准化Standardization让数据均值为 0、方差为 1核心是按均值方差做分布对齐。x′x−μσx \frac{x - \mu}{\sigma}x′σx−μ两者怎么选是本篇面试题之二标准答案归一化对异常值极其敏感——一个离谱的最大值会把其他所有数据压到很小的一区间里标准化受异常值影响小且更适合梯度下降类算法。所以绝大多数场景优先标准化。公式细节和代码实战放在 KNN 篇特征预处理在那里是刚需。3. 特征降维减少特征数量用更少、更核心的新特征保留原始数据的大部分有效信息。注意它会改变原始数据生成新特征。4. 特征选择从原始特征里挑出与任务相关的子集。和降维的区别选择不改变原数据只是挑降维是造新的。5. 特征组合把多个特征通过乘法或加法合并成一个特征。降维和选择这对概念面试里会放在一起问区分点就一句话降维生成新特征选择只是筛选原有特征。七、拟合问题面试重灾区先记住三种状态的判断标准——看训练集和测试集两边的表现状态训练集测试集原因欠拟合差差模型过于简单学习能力不足正好拟合好好模型复杂度适配特征选择合适过拟合好差模型过于复杂、数据不纯噪声多、训练数据太少课件里的经典例子是识别天鹅欠拟合模型学到的特征太少区分标准太粗糙——只学了有翅膀、会游结果把鸭子也认成天鹅过拟合模型学到的特征太多太死——训练数据里的天鹅全是白色的模型把白色也当成了天鹅的必要特征来一只黑天鹅就翻车了解决方法面试要求能对照着原因说欠拟合——学得太少就让它多学增加模型复杂度增加特征挖掘更多有效特征延长训练时间减少正则化强度过拟合——学得太死就给它松绑增加训练数据冲淡噪声降低模型复杂度特征筛选剔除无用噪声特征、减少冗余正则化L1 / L2线性回归篇重点展开两个收尾概念泛化Generalization模型在没见过的新数据上的表现能力。前面数据集划分的思想在这里闭环——测试集存在的意义就是模拟新数据衡量泛化能力奥卡姆剃刀原则两个泛化能力相同或相近的模型选更简单的那个。理由有三成本低、简单模型不容易过拟合、可解释性强线性回归、浅层决策树能直接看懂特征怎么影响结果八、开发环境整个系列用 scikit-learn它建立在 NumPy、SciPy 和 matplotlib 之上pip install scikit-learn验证安装python -c import sklearn; print(sklearn.__version__)我本地的版本环境是 Python 3.13 scikit-learn 1.x。提前预警一个坑网上大量教程用的load_boston波士顿房价数据集在 sklearn 1.2 之后已被官方移除线性回归篇会改用fetch_california_housing走完同样的流程。九、知识清单正文没展开、但可能被问到的点兜底收录发展史三个节点1950 年图灵设计国际象棋程序、1997 年 IBM 深蓝战胜国际象棋世界冠军卡斯帕罗夫、2016 年 AlphaGo 战胜李世石中间 2012 年 AlexNet 是深度学习的开山之作2017 年 Transformer 提出NLP 进入大规模预训练模型时代——这条线可以直接接到大模型AI 三要素各自的分工数据是原料、算法是方法、算力是保障强化学习四要素agent、环境状态、行动、奖励数据集划分比例7:3 ~ 8:2scikit-learn简单高效的数据挖掘与数据分析工具开源、BSD 许可证、可商业使用十、面试高频问答Q1描述一下机器学习的建模流程五步获取数据 → 数据基本处理缺失值、异常值→ 特征工程 → 模型训练按任务选算法→ 模型评估不达标则迭代。可以补一句亮点实际工作中最耗时的是数据处理和特征工程而不是训练本身。Q2归一化和标准化有什么区别归一化把数据缩放到固定区间如 [0,1]受最大最小值影响对异常值敏感标准化把数据变成均值 0、方差 1 的分布对异常值更稳健更适合配合梯度下降使用。优先标准化除非需要固定取值范围比如图像像素处理。Q3什么是欠拟合、过拟合分别怎么解决欠拟合训练集和测试集表现都差模型过于简单。解决增加模型复杂度、增加特征、延长训练、减弱正则化。过拟合训练集好、测试集差模型过于复杂或数据噪声大、样本少。解决增加数据、降低复杂度、特征筛选、正则化L1/L2。Q4追问泛化是什么奥卡姆剃刀在机器学习里指什么泛化是模型在新数据上的表现能力测试集就是用来估计泛化能力的。奥卡姆剃刀泛化能力相近的模型里选更简单的因为简单模型成本低、不易过拟合、可解释性强。下一篇进入第一个真正的算法线性回归——损失函数怎么定义、正规方程和梯度下降怎么求最优解、L1 和 L2 正则化到底差在哪。案例部分会用加州房价数据集把流程完整跑一遍代码先跑通再贴出来。