随课讲义15 节 · 约 40 分钟

第二讲 · 机器学习核心思想

让机器「从经验中学习」,而不是「被告知怎么做」

第 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 元。机器学习必须回答两个问题:

  1. 错了多少?
  2. 下一步该怎么改?

第一个问题由损失函数(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 页。

一套网约车计费模型可以用十步讲清楚:

  1. 明确任务:预测新订单的预估车费,是回归任务。
  2. 收集数据:历史订单、真实车费、路线、天气、时段、供需状态。
  3. 清洗数据:处理取消订单、异常订单、缺失天气、明显错误记录。
  4. 构造特征:里程、时长、高峰、雨天、供需比、区域类型、交互特征。
  5. 划分数据:按时间或区域划分训练、验证、测试,避免泄漏。
  6. 建立基线:先用简单模型确认任务难度。
  7. 训练模型:尝试树模型或梯度提升树,比较验证集表现。
  8. 评估误差:看总体 MAE,也看机场、夜间、雨天等子场景。
  9. 上线使用:把模型接入计价服务,给新订单输出预估价。
  10. 监控维护:节假日、极端天气、城市施工、政策变化都会造成分布偏移,需要持续监控。

这十步的价值不是只属于网约车。它是一切机器学习项目的骨架。

把它迁移到教育,就是:

  1. 明确任务:是预测分数、预警风险,还是推荐资源?
  2. 收集数据:学习记录从哪里来,是否合规?
  3. 清洗数据:缺勤、补交、系统错误如何处理?
  4. 构造特征:哪些行为真正有教学含义?
  5. 划分数据:能否模拟“用过去预测未来”?
  6. 建立基线:不用 AI 的简单规则能做到什么程度?
  7. 训练模型:是否需要复杂模型?
  8. 评估误差:误判和漏判分别有什么后果?
  9. 落地使用:模型输出如何进入教师工作流?
  10. 监控维护:课程、学生群体、教学方式变化后是否仍有效?

如果一家公司说它有“智能学情分析系统”,你可以用这十步追问。能把这些问题讲清楚的团队,才可能真的理解机器学习;讲不清楚的团队,往往只是把“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 回归误差指标 平均每单差几元
精确率 / 召回率 分类任务中的两把尺子 预警是否靠谱、是否漏掉
分布偏移 未来数据和历史不同 节假日、暴雨、政策变化
教师边界 模型是辅助,不是裁决 学情预警必须人工复核

如果只记三句话,请记这三句:

  1. 机器学习 = 数据 + 模型 + 损失函数与优化。
  2. 泛化才是真本事,新数据上的表现才是最终考试。
  3. 越关乎人的发展,越不能把模型输出当成最终裁决。

第 15 节 · 2 分钟思考题与延伸

对应 PPT:第 41 页。

课后思考题

  1. 回想你第一次看到网约车预估价时的直觉:你觉得自己用了哪些特征判断它是否合理?这些特征哪些容易被机器记录,哪些很难?

  2. 如果一个价格预测模型在普通订单上平均只差 3 元,但在雨天机场订单上平均差 25 元,你会如何解释这个模型的优点和风险?

  3. 用本讲的框架设计一个学情分析任务:样本是什么?特征是什么?标签是什么?属于回归、分类、无监督学习还是其他范式?

  4. 假如学校要使用“学习风险预警模型”,你会要求开发者报告哪些指标?为什么不能只看准确率?

  5. 请举一个教育中的“相关不等于因果”的例子。模型可以帮助发现什么?又不能替代什么?

一个小练习:把你的教学经验写成机器学习问题

请选择一个你平时经常做的判断,例如“这位学生最近状态不对”“这个班对某个概念没有真正理解”“这次作业题目设计得太难”。按下面模板写下:

要素 你的填写
任务 T 我想判断或预测什么?
样本 一行数据代表谁或什么?
特征 X 我会看哪些线索?
标签 y 什么结果算答案?
指标 P 怎么判断判断得好不好?
风险边界 哪些事情不能交给模型直接决定?

这个练习的真正意义,不是马上训练模型,而是把教师的隐性经验变成可以讨论、可以改进、可以传承的显性框架。

写给学生的话

机器学习不是魔法。它没有凭空产生知识,也不会天然理解世界。它只是非常擅长在大量经验中寻找可迁移的规律。

但这已经足够重要。

因为人类社会里有太多问题,很难手写规则,却能积累经验:出行、医疗、金融、教学、科研、创作。机器学习让计算机第一次有能力从这些经验中学习。

下一讲,我们会进入深度学习。你会看到,当模型的“旋钮”从几十个变成几百万、几亿甚至更多,当特征不再完全由人设计,而由神经网络自己学习,AI 的能力会发生怎样的跃迁。

带着本讲的主线走进下一讲:

先理解机器如何从订单中学价格,再理解神经网络如何从更复杂的数据中学表示。

—— 本讲稿将随课程 PPT、课堂反馈和实验活动持续更新。