第二讲 · 机器学习核心思想
让机器「从经验中学习」,而不是「被告知怎么做」
第 1 节 · 2 分钟导读:一条主线讲完整章
导读:为什么这次只讲一个例子?
对应 PPT:第 1-2 页。
第一讲我们搭好了 AI 的总地图:人工智能、机器学习、深度学习、大语言模型不是彼此孤立的概念,而是一层一层长出来的技术谱系。第二讲进入其中最关键的一层:机器学习(Machine Learning)。
机器学习的概念很多:样本、特征、标签、模型、损失函数、梯度下降、监督学习、无监督学习、强化学习、自监督学习、泛化、过拟合、评估指标、模型选型。若每个概念都换一个例子,学生会觉得信息很丰富,却很难把这些概念串成一条线。
所以这一讲换一种讲法:只用一个主例子讲到底。
这个例子是网约车计费。
你打开手机,输入起点和终点,平台很快给出一个预估价格:比如 48 元、63 元、112 元。它为什么能估?它并不是人工写了成千上万条规则,也不是临时问司机。它依靠的是历史订单:路线多长、行驶多久、是否高峰、是否下雨、供需是否紧张、最终真实车费是多少。模型看过许多这样的订单后,学出一套可以预测新订单价格的规律。
这正是机器学习的核心:不是人把规则逐条写死,而是机器从经验数据中学出规律,再把规律用于新情况。
本讲最后会从网约车迁移到教育:如果一笔订单可以被表示成样本,那么一个学生的一段学习记录也可以成为样本;如果车费可以成为预测目标,那么学情预警、学习支持、资源推荐也可以成为机器学习问题。关键不在于让机器替老师判断学生,而在于让老师学会用机器学习的思维整理数据、提问、评估和保持边界感。
阅读时请抓住一条主线:
一笔订单 -> 一张数据表 -> 一个模型 -> 一次训练 -> 一个新订单预测 -> 一个学情分析迁移。
后面出现公式时,不必害怕。公式只是把这条主线写得更精确。你可以先读白话,再回头看数学表达。
第 2 节 · 2 分钟从一笔订单开始
对应 PPT:第 3-5 页。
请先做一个小实验。
你从上海交通大学闵行校区出发,目的地是虹桥火车站。现在是周五下午五点半,天在下雨,路上有些拥堵。你打开网约车软件,它告诉你:预估车费 86 元。
你可能会马上产生一个直觉:这个价格不算离谱。因为你脑子里已经在综合很多信息:
- 距离不短;
- 时间正好接近晚高峰;
- 下雨时需求会上升;
- 到火车站的路线可能拥堵;
- 如果从学校到附近商圈,价格应该低得多;
- 如果半夜道路畅通,时间成本会下降。
也就是说,即使没有公式,你也在用经验估价。
传统编程的做法是让程序员把规则一条条写出来:
起步价 = 14
如果里程超过 3 公里,每公里加 2.7
如果时长超过 10 分钟,每分钟加 0.6
如果高峰,加价 20%
如果下雨,再加价 10%
如果供需紧张,再加价 ...
这种方法在规则很简单时可行。但真实世界的计费远比这复杂:不同区域、不同时间段、不同天气、不同路线、不同司机供给都会影响价格。更麻烦的是,这些因素并不是简单相加。晚高峰加下雨,影响可能不只是两个加价项相加,而是会产生更复杂的交互。
机器学习换了一个思路。
它不要求人先写出完整规则,而是先收集大量历史订单:
| 订单 | 起点区域 | 终点区域 | 里程 | 预计时长 | 时段 | 天气 | 供需指数 | 真实车费 |
|---|---|---|---|---|---|---|---|---|
| A | 闵行校区 | 虹桥火车站 | 24 km | 52 min | 晚高峰 | 雨 | 高 | 86 |
| B | 徐家汇 | 人民广场 | 8 km | 28 min | 平峰 | 晴 | 中 | 39 |
| C | 陆家嘴 | 浦东机场 | 36 km | 55 min | 夜间 | 晴 | 低 | 132 |
| D | 闵行校区 | 莘庄 | 9 km | 21 min | 平峰 | 晴 | 中 | 31 |
机器学习算法从这张表中反复练习:看到前面的信息,先猜一个价格;再和真实车费比较;错了就调整模型;反复很多次之后,它对新订单的估价越来越接近真实价格。
这就是范式翻转:
| 方式 | 输入 | 由谁提供规则 | 输出 |
|---|---|---|---|
| 传统编程 | 数据 + 人写规则 | 人 | 结果 |
| 机器学习 | 数据 + 历史答案 | 机器从数据中学 | 模型规则,再用于预测 |
请记住这句话:
传统编程把规则当输入;机器学习把规则当输出。
这句话非常重要。它解释了为什么机器学习能处理很多“人会做、但很难写清楚规则”的问题。估车费、推荐内容、识别图片、预测学情变化,都属于这个类型。
第 3 节 · 2 分钟机器学习的定义
对应 PPT:第 6-7 页。
用最朴素的话说:
机器学习就是让计算机从数据和经验中自动学习规律,并用学到的规律处理新问题。
这个定义里有三个关键词。
第一是经验。在网约车计费里,经验就是历史订单;在教育里,经验可能是过去学生的学习记录、作业表现、课堂互动、考试结果。
第二是自动改善。机器不是看一条订单就会了,而是在越来越多的订单中逐渐减少误差。它的表现如果不能随着经验增加而提高,就不能叫学习。
第三是新问题。模型的目标不是把旧订单背下来,而是遇到从未见过的新订单时,也能给出合理估计。
机器学习有一个经典定义,来自 Tom Mitchell:
如果一个程序在任务 T 上的表现 P,随着经验 E 的增加而提高,就说它从经验 E 中学习。
套到网约车计费里:
| Mitchell 要素 | 网约车计费中的含义 | 教育迁移中的含义 |
|---|---|---|
| 任务 T | 预测一笔新订单的车费 | 预测学生是否需要学习支持,或推荐学习资源 |
| 经验 E | 历史订单及真实车费 | 历史学习记录及后续学习结果 |
| 性能 P | 平均误差是否下降 | 预警是否更准,是否减少漏判和误判 |
数学上,我们常把带答案的数据写成:
$$\mathcal{D}={(\mathbf{x}i,y_i)}$$}^{N
这里的 $\mathbf{x}_i$ 是第 $i$ 个样本的输入特征,$y_i$ 是答案。对于网约车,$\mathbf{x}_i$ 可以包含里程、时长、时段、天气、供需指数等,$y_i$ 是真实车费。对于学情分析,$\mathbf{x}_i$ 可以包含出勤、作业、测验、互动等,$y_i$ 可以是后续是否达标、是否需要支持、下一次成绩区间等。
模型要学的是一个函数:
$$\hat{y}=f_{\theta}(\mathbf{x})$$
$\hat{y}$ 是预测值,$f_{\theta}$ 是带参数的模型,$\theta$ 是模型内部可以被调整的参数。训练的过程,就是找到一组更合适的 $\theta$,让 $\hat{y}$ 尽量接近真实的 $y$。
这也是机器学习和普通统计描述的区别。统计描述可能告诉我们“平均车费是多少”“雨天平均贵多少”;机器学习进一步追问:给我一笔新的具体订单,我能不能预测它大概多少钱?
第 4 节 · 4 分钟三个核心要素
对应 PPT:第 8-12 页。
无论模型多复杂,机器学习都可以拆成三个核心要素:
数据、模型、目标函数与优化。
1. 数据:把一条订单拆给机器看
机器看不见“闵行到虹桥很远”这种生活直觉。它只能处理被结构化后的信息。我们需要把一笔订单拆成样本、特征和标签。
| 术语 | 网约车计费 | 学情分析 |
|---|---|---|
| 样本 | 一笔历史订单 | 一个学生的一段学习记录 |
| 特征 | 里程、时长、时段、天气、供需指数 | 出勤、作业、测验、互动、学习节奏 |
| 标签 | 真实车费 | 是否达标、风险等级、后续表现 |
这一步看起来朴素,却极其关键。数据不是“越多越好”这么简单,而是要和任务有关、能在预测时获得、能代表未来使用场景。
比如预测车费时,不能把“真实车费”作为特征放进去,因为那就是答案。预测学生是否需要支持时,也不能用“期末成绩”预测“期末是否不达标”,因为预测发生时成绩还不存在。这种错误叫数据泄漏,它会让模型在实验里看起来很准,真正上线后却失效。
2. 模型:一台有旋钮的机器
模型可以想象成一台带很多旋钮的机器。输入一笔订单,它输出一个预测价格。
最简单的模型可以是一条公式:
$$\hat{y}=\theta_0+\theta_1 \cdot \text{里程}+\theta_2 \cdot \text{时长}+\theta_3 \cdot \text{高峰}+\theta_4 \cdot \text{雨天}$$
这里每个 $\theta$ 都是一个可调参数。训练之前,参数可能不合理;训练之后,模型会逐渐学到“里程通常更重要”“高峰确实会抬高价格”“雨天影响在某些区域更明显”。
真实计费会更复杂,因为价格并不只由几个因素线性相加决定。比如:
- 同样 10 公里,市中心拥堵路段和郊区快速路不同;
- 同样下雨,机场、火车站、校园周边的供需反应不同;
- 同样晚高峰,工作日和周末不同;
- 同样距离,绕路、等待、临时管制都会影响费用。
因此模型可能从线性回归升级到决策树、随机森林、梯度提升树,甚至神经网络。但不管形式多复杂,本质仍然是:
输入特征,调整参数,输出预测。
3. 目标函数与优化:错了多少,怎么改
模型第一次预测很可能会错。比如真实车费是 86 元,模型预测 73 元,少了 13 元。机器学习必须回答两个问题:
- 错了多少?
- 下一步该怎么改?
第一个问题由损失函数(loss function)回答。预测价格这种数值任务常用平均绝对误差(MAE)或均方误差(MSE):
$$\text{MAE}=\frac{1}{N}\sum_{i=1}^{N}|y_i-\hat{y}_i|$$
$$\text{MSE}=\frac{1}{N}\sum_{i=1}^{N}(y_i-\hat{y}_i)^2$$
MAE 的含义最直观:平均每笔订单差几元。MSE 会更严厉地惩罚大错,因为误差被平方了。
第二个问题由优化算法回答。最经典的方法叫梯度下降:
$$\theta_{t+1}=\theta_t-\eta \nabla_{\theta}\mathcal{L}(\theta_t)$$
不必被公式吓住。它的意思是:看当前损失往哪个方向上升最快,然后朝相反方向走一点。$\eta$ 是学习率,控制每一步走多大。
完整训练循环可以这样理解:
拿一批历史订单
模型先预测价格
和真实车费比较,计算损失
根据损失调整参数
再拿下一批订单继续练
直到模型在验证数据上表现稳定
这就是机器学习的三要素合体:
用数据提供经验,用模型承载规律,用损失函数和优化算法不断修正模型。
训练阶段需要真实答案;使用阶段只需要新输入。也就是说,训练时模型看“订单信息 + 真实车费”,使用时只看“订单信息”,然后给出预测车费。
第 5 节 · 5 分钟四种学习范式
对应 PPT:第 13-19 页。
学习范式的关键问题不是“名字是什么”,而是:
学习时,答案从哪里来?反馈是什么形式?
1. 监督学习:历史订单带真实价格
监督学习最像学生做有答案的练习题。每个样本都有标准答案,模型预测后可以马上对照。
网约车计费就是典型的监督学习。输入是一笔订单的特征,答案是真实车费:
$$\mathcal{D}={(\mathbf{x}i,y_i)}$$}^{N
目标是学出 $f_{\theta}$,使得:
$$f_{\theta}(\mathbf{x}_i)\approx y_i$$
监督学习又分为两类。
回归输出连续数值。预测车费、预测到达时间、预测学生下一次测验分数,都是回归。
分类输出类别。判断订单是否处于高峰、判断是否需要人工复核、判断学生是否需要关注,都是分类。
这也是第 15 页强调的区别:同样是监督学习,输出类型不同,评估指标就不同。预测车费不能问“准确率是多少”,而要问平均误差;判断风险类别才讨论准确率、精确率、召回率。
2. 无监督学习:没有价格标签,也能发现结构
无监督学习没有标准答案。模型只看到订单特征,不知道真实车费,它的任务是发现数据内部结构。
在网约车场景里,无监督学习可以做:
- 把订单自动分成“通勤型”“机场型”“夜间短途型”“节假日旅游型”;
- 把城市区域按出行模式聚类;
- 发现异常订单,比如里程很短但耗时极长;
- 把高维行为数据压缩成二维图,帮助运营人员观察模式。
无监督学习常见任务包括聚类、降维、异常检测。以 K-means 聚类为例,它试图把样本分成 $K$ 组,让每个样本尽量靠近自己的组中心:
$$\min_{{\mu_k},{C_k}}\sum_{k=1}^{K}\sum_{\mathbf{x}\in C_k}|\mathbf{x}-\mu_k|^2$$
它能告诉你“这些订单像一组,那些订单像一组”,但不能自动告诉你这组应该叫“通勤型”还是“机场型”。意义需要人来解释。
教育里也是如此。模型可以把学生学习行为分群,但“稳定型”“冲刺型”“拖延型”这些名字必须由老师结合教学经验来命名和判断,不能让模型直接给学生贴标签。
3. 强化学习:在试错和反馈中学习决策
强化学习不是预测一个固定答案,而是在环境中做动作,并根据奖励反馈学习策略。
网约车平台中可能有强化学习味道的问题:
- 当前供需状态下,是否需要动态调价?
- 订单应该派给哪位司机?
- 给司机推荐哪条路线?
- 如何平衡乘客等待时间、司机收益和平台效率?
它的基本结构是:
智能体观察状态 -> 采取动作 -> 环境反馈奖励 -> 更新策略
数学上,强化学习学习的是策略 $\pi(a|s)$,也就是在状态 $s$ 下采取动作 $a$ 的概率。目标是最大化长期奖励:
$$J(\pi)=\mathbb{E}{\pi}\left[\sum\gamma^t r_t\right]$$}^{T
强化学习难在“信用分配”:如果一天的整体效率提高了,到底是哪几次派单、哪几次调价起了作用?反馈常常延迟,且不是每一步都有标准答案。
教育里也存在类似问题。比如智能学习系统给学生推荐练习,学生一周后成绩提升了,究竟是推荐内容有效,还是学生本来就更努力?这类问题比简单预测更难,需要谨慎设计实验和反馈机制。
4. 自监督学习:答案藏在数据自己里面
自监督学习没有人工标签,但可以从数据内部构造“题目”和“答案”。
在文本里,常见做法是遮住一个词,让模型预测被遮住的词:
上海交通大学位于 ____。
原文中的词就是答案,不需要人工标注。这是大语言模型预训练的核心思想之一。
放到网约车场景,也可以构造类似任务:
- 遮住路线中的某一段,让模型预测下一段路;
- 遮住时段,让模型根据其他信息判断订单可能发生的时间;
- 遮住区域,让模型学习城市出行的空间结构。
自监督学习的价值在于:当人工标签昂贵时,它能利用大量未标注数据学到有用表示。到了后续监督任务,比如预测价格或风险时,这些表示可以成为更好的起点。
5. 延伸:主动学习
如果标注成本很高,还有一种实用思想叫主动学习(Active Learning)。它不是本讲主线,但和教育数据很相关。
主动学习的做法是:模型先在未标注数据上预测,然后挑出自己最不确定、最值得请人判断的样本,让专家标注。比如价格预测模型发现某类极端天气订单很拿不准,就优先请运营人员复核这类订单;学情模型对某些学生的风险判断不确定,就提示老师优先查看,而不是给出武断结论。
这个思想对教育尤其重要,因为教师时间珍贵。好的 AI 系统不应替老师做最终裁决,而应帮助老师把注意力放到最需要专业判断的地方。
6. 一张判断表
| 问题 | 学习范式 |
|---|---|
| 每个样本都有正确答案吗? | 监督学习 |
| 没有答案,只想看结构吗? | 无监督学习 |
| 需要连续决策,并根据奖励改进吗? | 强化学习 |
| 答案能从数据自身构造吗? | 自监督学习 |
| 标签贵,希望模型挑样本给人标吗? | 主动学习 |
第 6 节 · 3 分钟特征工程
对应 PPT:第 20-22 页。
模型看到的不是世界本身,而是我们给它的表示。
人看到一笔订单,会自然想到“这条路远不远”“堵不堵”“这个时间是不是高峰”“雨天是不是很难叫车”。机器看不到这些直觉。它只看到数字或类别。因此我们必须把真实世界翻译成模型可用的特征。
1. 好特征让规律更容易被学到
预测车费时,原始字段可能只是起点、终点、下单时间、完成时间、轨迹、天气记录。特征工程会把它们变成更有用的形式:
| 原始信息 | 特征工程后的表示 |
|---|---|
| 起点、终点 | 直线距离、预计路线距离、区域类型 |
| 下单时间 | 小时、星期几、是否工作日、是否高峰 |
| 天气 | 是否下雨、温度、能见度 |
| 轨迹 | 拥堵指数、红绿灯数量、路线复杂度 |
| 供需状态 | 附近司机数量、附近叫车人数、供需比 |
特征工程的关键不是把能拿到的都塞进去,而是问:
- 这个特征和目标有关系吗?
- 预测时能拿到吗?
- 会不会泄漏答案?
- 会不会引入不公平或敏感信息?
- 这个特征是否容易解释?
2. 特征构造的例子
有些好特征不是原始数据里现成的,需要构造。
比如“里程”和“时长”都重要,但“平均速度”可能更能反映拥堵:
$$\text{平均速度}=\frac{\text{里程}}{\text{时长}}$$
再比如“是否高峰”和“是否下雨”分别有用,但二者交互可能更关键。我们可以构造:
雨天高峰 = 是否下雨 × 是否高峰
它表达的是:下雨的晚高峰可能不是“雨天影响 + 高峰影响”的简单相加,而是更强的复合效应。
教育数据也类似。单看“作业提交率”有用,单看“最近测验成绩”也有用,但“近三周作业提交率持续下降”可能比某一次作业缺交更有意义。
3. 2012 分水岭:特征工程与表示学习
在传统机器学习时代,特征工程非常关键。结构化数据,如订单表、成绩表、日志表,到今天仍常常依赖人工设计特征。梯度提升树这类模型在这类数据上表现非常强。
深度学习崛起后,模型开始能从图像、文本、语音中自己学习特征,这叫表示学习(Representation Learning)。比如图像模型不再需要人手工设计“边缘”“纹理”“耳朵形状”,而是从像素中学出层层表示。
但不要把这句话误解成“特征工程过时了”。对于网约车订单、学校学习记录、医院病历、企业运营表格这类结构化数据,懂业务的人设计特征仍然非常重要。
一句话记忆:
深度学习能自动学表示,但结构化数据仍离不开领域理解。
第 7 节 · 3 分钟泛化能力
对应 PPT:第 23-24 页。
机器学习最重要的词之一是泛化(Generalization)。
泛化指的是:模型在从未见过的新样本上的表现。
如果模型只是在训练数据上表现好,却不能预测新订单,那它没有真正学会,只是背下了历史订单。学生学习也是一样:只会做原题,不会做变式题,不叫真正掌握。
1. 过拟合与欠拟合
欠拟合是模型太简单,连旧数据都学不好。比如车费模型只看“里程”,完全不看时间、拥堵、天气。它可能粗略有用,但会在很多场景里错得离谱。
过拟合是模型太复杂,把训练数据里的噪声和偶然性也学进去了。比如某天某条路线因为临时施工绕路,车费异常高;模型把这个异常当作长期规律,以后遇到类似路线都估得过高。
| 情况 | 训练数据表现 | 新数据表现 | 类比 |
|---|---|---|---|
| 欠拟合 | 差 | 差 | 没听懂 |
| 合适拟合 | 较好 | 较好 | 理解了方法 |
| 过拟合 | 极好 | 差 | 背下答案 |
数学上,有一个经典视角叫偏差-方差分解:
$$\text{预测误差}=\text{偏差}^2+\text{方差}+\text{不可约噪声}$$
高偏差对应欠拟合,模型假设太简单;高方差对应过拟合,模型对训练数据太敏感。好的模型不是越复杂越好,而是在二者之间找到平衡。
2. 训练集、验证集、测试集
为了判断泛化能力,数据必须分开用。
全部历史订单
├── 训练集:用来学习参数
├── 验证集:用来选模型和调超参数
└── 测试集:最后一次检验,训练过程中不能碰
训练集像平时练习,验证集像模拟考试,测试集像真正考试。验证集可以用来调整策略,但测试集必须保持“陌生”。如果训练过程中偷看了测试集,评估结果就会虚高。
在网约车计费里,一个更真实的划分方式常常是按时间划分:用过去几个月训练,用最近一个月测试。因为上线后的模型总是在用过去预测未来。
教育场景更要注意这一点。如果用同一个学生的多次作业随机散在训练集和测试集里,模型可能只是记住了学生个人风格,而不是学会了可迁移规律。学情分析要追求的是对未来学生、未来课程、未来任务的可靠支持。
3. 防止过拟合的常见办法
| 方法 | 网约车例子 | 教育类比 |
|---|---|---|
| 增加数据 | 覆盖更多区域、天气和时段 | 让学生见更多变式题 |
| 降低复杂度 | 不用过于复杂的模型 | 先掌握基本方法 |
| 正则化 | 限制参数过于极端 | 解法不要钻偏门 |
| 早停 | 验证集不再变好就停止训练 | 练到理解,不是机械刷题 |
| 交叉验证 | 数据少时轮流验证 | 多次小测取平均判断 |
泛化是机器学习真正的考试。训练集上的漂亮分数只说明“旧题做得好”,测试集上的稳定表现才说明“规律学得对”。
第 8 节 · 3 分钟评估指标
对应 PPT:第 25-26 页。
模型好不好,不能只问“准确率多少”。任务不同,指标也不同。
1. 预测车费是回归任务
车费是连续数值,所以应该看误差。
| 指标 | 公式 | 怎么读 |
|---|---|---|
| MAE | $\frac{1}{N}\sum | y_i-\hat{y}_i |
| RMSE | $\sqrt{\frac{1}{N}\sum (y_i-\hat{y}_i)^2}$ | 对大误差更敏感 |
| MAPE | $\frac{1}{N}\sum \left | \frac{y_i-\hat{y}_i}{y_i}\right |
如果模型 MAE = 4 元,意思是平均每笔订单预测偏差约 4 元。这个数字是否能接受,要看应用场景。用于给乘客展示预估价,可能可以接受;用于精细结算,就不够。
RMSE 会更重视大错。如果大多数订单只差 2 元,但少数机场订单差 50 元,RMSE 会明显升高,提醒我们不能只看平均表现。
2. 判断高峰或风险是分类任务
如果任务变成“判断这笔订单是否会高价”“判断学生是否需要关注”,输出就是类别。此时常见指标包括准确率、精确率、召回率和 F1。
准确率是:
$$\text{Accuracy}=\frac{\text{预测正确的样本数}}{\text{总样本数}}$$
但准确率会在类别不平衡时骗人。
假设 1000 名学生里只有 30 人真正需要紧急关注。一个模型永远预测“无需关注”,准确率也有 97%。看起来很高,却完全没有价值。
所以要看混淆矩阵:
| 真实有风险 | 真实无风险 | |
|---|---|---|
| 预测有风险 | TP | FP |
| 预测无风险 | FN | TN |
由此得到:
$$\text{Precision}=\frac{TP}{TP+FP}$$
$$\text{Recall}=\frac{TP}{TP+FN}$$
精确率问的是:模型报警时,有多少是真的?召回率问的是:真正有风险的,模型找到了多少?
在教育中,召回率往往很重要,因为漏掉真正需要帮助的学生代价很高。但精确率也不能太低,否则老师会被大量误报淹没。指标选择不是数学问题本身,而是价值和代价的权衡。
3. 同一批数据,任务不同,指标也不同
同样是网约车数据,可以有不同任务:
| 任务 | 类型 | 合适指标 |
|---|---|---|
| 预测具体车费 | 回归 | MAE、RMSE |
| 判断是否高峰 | 分类 | Accuracy、F1 |
| 找出异常订单 | 异常检测 | 人工复核通过率、召回率 |
| 优化派单策略 | 强化学习 | 长期奖励、等待时间、取消率 |
同样是学生数据,也可以有不同任务:
| 任务 | 类型 | 合适指标 |
|---|---|---|
| 预测下一次测验分数 | 回归 | MAE、RMSE |
| 判断是否需要学习支持 | 分类 | Recall、Precision、F1 |
| 发现学习行为群体 | 聚类 | 轮廓系数 + 教师解释 |
| 推荐下一题 | 序列决策 | 学习增益、完成率、长期效果 |
真正专业的提问不是“这个 AI 准确率多少”,而是:
它解决的是什么任务?标签是什么?错误代价是什么?指标是否匹配任务?
第 9 节 · 2 分钟模型家族
对应 PPT:第 27-29 页。
模型不是越复杂越好。实际项目里,通常先做简单基线,再决定是否增加复杂度。
1. 为什么先做基线模型
假设我们要预测车费。第一步不应该马上上复杂神经网络,而应该先做一个简单模型,比如线性回归:
$$\hat{y}=b+w_1 \cdot \text{里程}+w_2 \cdot \text{时长}$$
如果这个模型已经能把 MAE 做到 5 元,而复杂模型只能提升到 4.8 元,那复杂模型未必值得。因为它可能更难解释、更难维护、上线成本更高。
基线模型的意义是给项目一个诚实的参照:
- 简单方法能做到什么程度?
- 复杂方法到底提升了多少?
- 提升是否值得额外成本?
- 错误主要来自模型太简单,还是数据本身不够好?
2. 常见模型家族
| 模型 | 直觉 | 适合场景 |
|---|---|---|
| 线性回归 / 逻辑回归 | 用一条线或超平面拟合 | 基线、可解释性强 |
| 决策树 | 像一连串“是否”问题 | 教学演示、规则解释 |
| 随机森林 | 多棵树投票 | 稳健的结构化数据任务 |
| 梯度提升树 | 一棵树接一棵树改错 | 表格数据常用强模型 |
| K 近邻 | 找最像的历史样本 | 小数据、直觉演示 |
| 神经网络 | 多层参数网络学习复杂关系 | 图像、文本、语音、大规模数据 |
对于网约车计费这种结构化表格数据,线性模型、随机森林、梯度提升树往往是非常自然的起点。对于路线轨迹、地图图像、自然语言客服文本,深度学习会更有优势。
3. 选型心法
可以用这条顺序:
先问数据形态
├── 表格数据:线性基线 -> 树模型 -> 梯度提升树
├── 图像/语音/文本:深度学习或预训练模型
└── 连续决策:强化学习或规则+优化
再问约束条件
├── 要解释:优先简单模型、决策树、可解释方法
├── 要速度:优先轻量模型
├── 数据少:优先简单模型、迁移学习或主动学习
└── 风险高:保留人工复核
教育场景尤其要重视可解释性。模型说“这个学生有风险”并不够,老师还需要知道风险来自哪些线索:作业突然减少、连续缺勤、测验下滑,还是互动明显变少。没有解释的预测,很难转化为有温度的教学支持。
第 10 节 · 2 分钟完整项目流程
对应 PPT:第 30 页。
一套网约车计费模型可以用十步讲清楚:
- 明确任务:预测新订单的预估车费,是回归任务。
- 收集数据:历史订单、真实车费、路线、天气、时段、供需状态。
- 清洗数据:处理取消订单、异常订单、缺失天气、明显错误记录。
- 构造特征:里程、时长、高峰、雨天、供需比、区域类型、交互特征。
- 划分数据:按时间或区域划分训练、验证、测试,避免泄漏。
- 建立基线:先用简单模型确认任务难度。
- 训练模型:尝试树模型或梯度提升树,比较验证集表现。
- 评估误差:看总体 MAE,也看机场、夜间、雨天等子场景。
- 上线使用:把模型接入计价服务,给新订单输出预估价。
- 监控维护:节假日、极端天气、城市施工、政策变化都会造成分布偏移,需要持续监控。
这十步的价值不是只属于网约车。它是一切机器学习项目的骨架。
把它迁移到教育,就是:
- 明确任务:是预测分数、预警风险,还是推荐资源?
- 收集数据:学习记录从哪里来,是否合规?
- 清洗数据:缺勤、补交、系统错误如何处理?
- 构造特征:哪些行为真正有教学含义?
- 划分数据:能否模拟“用过去预测未来”?
- 建立基线:不用 AI 的简单规则能做到什么程度?
- 训练模型:是否需要复杂模型?
- 评估误差:误判和漏判分别有什么后果?
- 落地使用:模型输出如何进入教师工作流?
- 监控维护:课程、学生群体、教学方式变化后是否仍有效?
如果一家公司说它有“智能学情分析系统”,你可以用这十步追问。能把这些问题讲清楚的团队,才可能真的理解机器学习;讲不清楚的团队,往往只是把“AI”写在宣传页上。
第 11 节 · 2 分钟保持清醒
对应 PPT:第 31-32 页。
机器学习强大,但它不是魔法。尤其在教育中,模型输出永远应该是参考,而不是裁决。
1. 数据偏差:模型会学习历史,也会学习历史里的偏见
如果历史订单中某些区域长期供给不足,模型可能把“这里总是贵”当成自然规律,而忽视背后的服务不均衡。若直接把这种规律用于调价,可能进一步放大不公平。
教育中更要警惕。若历史数据里某些学生群体因为资源不足而表现较弱,模型可能把这种弱势学成“风险特征”,从而更频繁地预警他们。预警本意是帮助,但如果表达和使用不当,就会变成标签化。
2. 相关不等于因果
模型善于发现相关性,却不自动理解因果。
如果数据显示“雨天订单价格更高”,可能是雨导致需求增加,也可能是雨天道路拥堵,还可能是司机供给减少。机器学习模型能利用这种相关性预测价格,但不能直接证明因果机制。
教育里同样如此。模型发现“经常看回放的学生成绩较低”,不能马上得出“看回放导致成绩低”。也许是基础较弱的学生更需要看回放。若把相关当因果,教学干预就会走偏。
3. 分布偏移:世界会变
模型学的是历史数据。当世界变化时,模型可能失效。
网约车场景中,节假日、地铁停运、暴雨、道路施工、校园大型活动都会改变订单分布。教育中,新教材、新教师、新平台、新评价方式、线上线下切换,也会改变学习数据的意义。
因此上线不是结束,而是开始。任何真正使用的模型都需要监控:误差是否上升?某些群体是否表现变差?模型是否越来越不适配当前环境?
4. 黑箱与责任
复杂模型可能很准,却说不清为什么。对于推荐一首歌或估算一个价格,黑箱问题可能还能接受;对于影响学生机会、评价和心理感受的场景,黑箱就必须谨慎。
教育 AI 的底线是:
模型可以提示,不能定性;可以辅助,不能替代教师判断;可以提高注意力分配效率,不能把学生变成分数和标签。
第 12 节 · 4 分钟迁移到学情分析
对应 PPT:第 33-38 页。
现在把主线从“出行数据”迁移到“学生数据”。
网约车问题是:给定一笔订单,预测车费。
学情分析问题可以是:给定一个学生近期学习记录,判断他是否需要支持,或预测下一阶段可能遇到的困难。
请注意,目标不是给学生贴标签,而是帮助老师更早看见需要帮助的人,更好分配教学注意力。
1. 先想清楚任务是什么
很多 AI 教育项目失败,是因为一开始没有把任务说清楚。
“分析学情”太宽。它至少可以拆成多种任务:
| 任务 | 机器学习类型 | 输出 |
|---|---|---|
| 预测下一次测验分数 | 回归 | 一个数值 |
| 判断是否需要学习支持 | 分类 | 需要 / 暂不需要 |
| 发现学习行为类型 | 无监督学习 | 若干行为群体 |
| 推荐下一份练习 | 推荐或序列决策 | 学习资源 |
| 找出异常学习记录 | 异常检测 | 待复核样本 |
任务不同,数据、标签、模型、指标都不同。先定义任务,再谈 AI。
2. 把原始记录变成有用特征
学生数据常见原始记录包括登录、视频、作业、测验、讨论、课堂互动、问卷等。它们需要被转化成有教学含义的特征。
| 原始记录 | 可能特征 | 教学含义 |
|---|---|---|
| 作业提交 | 准时率、补交次数、连续缺交 | 学习节奏和执行稳定性 |
| 测验成绩 | 最近得分、变化趋势、错题类型 | 知识掌握与变化 |
| 视频学习 | 完成度、回看次数、暂停位置 | 学习投入和卡点 |
| 课堂互动 | 提问次数、参与频率 | 参与状态 |
| 讨论区 | 发帖、回复、关键词 | 协作与困惑表达 |
好特征要能帮助老师行动。比如“过去三周作业提交率下降 40%”比“登录次数 27 次”更有教学解释力,因为前者直接指向可能的学习节奏变化。
3. 准备数据并正确划分
学情模型不能只解释已经发生的记录,还要面对未来学生。因此数据划分要特别谨慎。
更真实的做法通常是按时间划分:
前几届或前半学期数据 -> 训练
后一届或后半学期数据 -> 测试
如果同一个学生的数据同时出现在训练和测试中,模型可能记住学生个人风格,评估会虚高。若把未来信息放进特征,比如“期末总评”预测“期末是否达标”,那就是严重泄漏。
教育数据还有合规和伦理边界:只收集必要数据,注意脱敏,避免使用敏感特征做不恰当判断,确保学生和教师知道系统的用途。
4. 训练、输出与落地
学情模型建议从简单、可解释的小模型开始。
例如逻辑回归或小型决策树可以输出:
学生 A:需要关注概率 0.72
主要线索:
- 近三周作业准时率下降
- 最近两次测验低于个人历史均值
- 视频回看集中在同一知识点
建议:
- 老师查看该知识点错题
- 安排一次短谈话或学习支持
这样的输出比一个冷冰冰的“风险分 72”更有价值。它把模型结果转化为教师可以理解、可以行动、可以复核的线索。
模型落地时要特别注意措辞。不要说“该学生会失败”,而说“系统发现近期记录中存在需要关注的变化”。不要把预测发给不该看到的人。不要让模型结果直接进入惩罚或评价流程。
5. 从网约车到学情分析的对应关系
| 网约车计费 | 学情分析 |
|---|---|
| 一笔订单 | 一个学生的一段学习记录 |
| 里程、时段、天气、供需 | 出勤、作业、测验、互动、节奏 |
| 真实车费 | 后续表现或支持需求 |
| 预测价格 | 预警、推荐或学习支持建议 |
| 高峰和雨天导致分布变化 | 新教材、新教师、考试方式变化 |
| 价格预测不能替代结算复核 | 学情预测不能替代教师判断 |
这就是本讲最重要的迁移:机器学习不是为了让教育变得冷冰冰,而是让教师更早看到复杂数据中的线索,再用人的理解、经验和责任去行动。
第 13 节 · 2 分钟全章复盘
对应 PPT:第 39 页。
现在把整章重新串起来。
我们从一笔网约车订单开始:你先凭经验估价,发现自己其实在综合里程、时段、天气、供需和拥堵。机器学习做的是同一件事,只是它用大量历史订单来学习这种经验。
接着,我们把订单拆成数据表:每一行是样本,每一列是特征,真实车费是标签。模型接收特征,输出预测价格。
然后,我们看到了训练循环:模型先预测,损失函数衡量错多少,优化算法调整参数,再继续练习。训练阶段需要答案,使用阶段只需要新输入。
再往后,我们区分了学习范式:
- 有真实车费,是监督学习;
- 没有价格标签,只想看订单结构,是无监督学习;
- 平台在派单和调价中试错,是强化学习;
- 从订单轨迹或文本中自动构造训练任务,是自监督学习;
- 让模型挑最值得人工标注的样本,是主动学习。
随后,我们讨论特征工程:模型看不到世界,只看到表示。好特征能让规律更容易被学到;坏特征会让模型带着偏见、泄漏和噪声。
再然后,我们讨论泛化:模型真正的考试不是旧订单,而是新订单。为了评估泛化,必须划分训练集、验证集和测试集,警惕过拟合和数据泄漏。
接着,我们讨论评估指标:预测车费看 MAE、RMSE;判断风险看精确率、召回率、F1。指标必须和任务及错误代价匹配。
最后,我们把整套方法迁移到学情分析:学生不是订单,教育也不是计价系统,但机器学习的问题结构可以帮助老师更清楚地定义任务、整理数据、评估模型、保持边界。
一句话复盘:
机器学习不是让机器拥有神秘直觉,而是让机器从经验数据中调出一套能迁移到新样本的规律。
第 14 节 · 2 分钟核心概念表
对应 PPT:第 40 页。
| 概念 | 一句话记忆 | 网约车例子 |
|---|---|---|
| 机器学习 | 从数据中学习规律,而不是手写规则 | 从历史订单学计费 |
| 样本 | 数据表中的一行 | 一笔订单 |
| 特征 | 描述样本的输入信息 | 里程、时段、天气、供需 |
| 标签 | 训练时的正确答案 | 真实车费 |
| 模型 | 承载规律的函数或结构 | 价格预测器 |
| 参数 | 模型内部可调整的旋钮 | 各特征权重或树的分裂规则 |
| 损失函数 | 衡量预测错多少 | 预测 73 元,真实 86 元,误差 13 |
| 优化 | 根据误差调整模型 | 让平均误差下降 |
| 监督学习 | 有答案,学输入到输出 | 历史订单带真实车费 |
| 回归 | 输出连续数值 | 预测具体价格 |
| 分类 | 输出类别 | 判断是否高峰 |
| 无监督学习 | 没有答案,发现结构 | 聚类出通勤、机场、夜间订单 |
| 强化学习 | 通过奖励反馈学策略 | 派单、调价、路线推荐 |
| 自监督学习 | 从数据自身构造答案 | 遮住轨迹片段让模型预测 |
| 主动学习 | 模型挑不确定样本请人标注 | 优先复核特殊订单 |
| 特征工程 | 把世界翻译成模型能用的表示 | 构造雨天高峰、供需比 |
| 泛化 | 在新样本上表现好 | 新订单也估得准 |
| 过拟合 | 背下旧数据,遇新数据变差 | 把临时施工当长期规律 |
| 数据泄漏 | 训练时偷看未来或答案 | 用真实车费预测真实车费 |
| MAE / RMSE | 回归误差指标 | 平均每单差几元 |
| 精确率 / 召回率 | 分类任务中的两把尺子 | 预警是否靠谱、是否漏掉 |
| 分布偏移 | 未来数据和历史不同 | 节假日、暴雨、政策变化 |
| 教师边界 | 模型是辅助,不是裁决 | 学情预警必须人工复核 |
如果只记三句话,请记这三句:
- 机器学习 = 数据 + 模型 + 损失函数与优化。
- 泛化才是真本事,新数据上的表现才是最终考试。
- 越关乎人的发展,越不能把模型输出当成最终裁决。
第 15 节 · 2 分钟思考题与延伸
对应 PPT:第 41 页。
课后思考题
-
回想你第一次看到网约车预估价时的直觉:你觉得自己用了哪些特征判断它是否合理?这些特征哪些容易被机器记录,哪些很难?
-
如果一个价格预测模型在普通订单上平均只差 3 元,但在雨天机场订单上平均差 25 元,你会如何解释这个模型的优点和风险?
-
用本讲的框架设计一个学情分析任务:样本是什么?特征是什么?标签是什么?属于回归、分类、无监督学习还是其他范式?
-
假如学校要使用“学习风险预警模型”,你会要求开发者报告哪些指标?为什么不能只看准确率?
-
请举一个教育中的“相关不等于因果”的例子。模型可以帮助发现什么?又不能替代什么?
一个小练习:把你的教学经验写成机器学习问题
请选择一个你平时经常做的判断,例如“这位学生最近状态不对”“这个班对某个概念没有真正理解”“这次作业题目设计得太难”。按下面模板写下:
| 要素 | 你的填写 |
|---|---|
| 任务 T | 我想判断或预测什么? |
| 样本 | 一行数据代表谁或什么? |
| 特征 X | 我会看哪些线索? |
| 标签 y | 什么结果算答案? |
| 指标 P | 怎么判断判断得好不好? |
| 风险边界 | 哪些事情不能交给模型直接决定? |
这个练习的真正意义,不是马上训练模型,而是把教师的隐性经验变成可以讨论、可以改进、可以传承的显性框架。
写给学生的话
机器学习不是魔法。它没有凭空产生知识,也不会天然理解世界。它只是非常擅长在大量经验中寻找可迁移的规律。
但这已经足够重要。
因为人类社会里有太多问题,很难手写规则,却能积累经验:出行、医疗、金融、教学、科研、创作。机器学习让计算机第一次有能力从这些经验中学习。
下一讲,我们会进入深度学习。你会看到,当模型的“旋钮”从几十个变成几百万、几亿甚至更多,当特征不再完全由人设计,而由神经网络自己学习,AI 的能力会发生怎样的跃迁。
带着本讲的主线走进下一讲:
先理解机器如何从订单中学价格,再理解神经网络如何从更复杂的数据中学表示。
—— 本讲稿将随课程 PPT、课堂反馈和实验活动持续更新。