专题学习地图 · 第 2 / 27 篇
学习目标与先修知识
目标是读懂后续公式,而不是背完全部数学名词。你会区分标量、向量和矩阵,理解求和、均值、方差、导数与概率,并能把它们翻译为 NumPy 运算。先修只需要四则运算、一次函数,以及 Python 的变量和列表;下面也解释最常用的代码语法。
问题背景与使用时机
假设要根据面积和卧室数估计租金。一套房有多个属性,多套房又形成一张表。向量和矩阵就是组织这张表的语言;导数描述参数改一点会怎样;概率描述尚未知道的结果;统计量概括已经收集的数据。
遇到公式先问三件事:每个符号是什么、单位是什么、尺寸是否对得上。不要看到矩阵就先寻找求逆函数。
核心概念与符号
从一个数到一张表
标量是一个数,如面积 50。向量是一列或一排数,如一套房的特征 。矩阵按行放样本、按列放特征:
表示实数集合, 表示 3 行、2 列, 表示转置。 要求 有 2 个分量,结果有 3 个分量。矩阵乘法按“行与列对应相乘再相加”,不是逐元素相乘。
统计量与导数
表示把 个数相加; 是样本均值。描述一组数自身的离散程度可用 ;估计总体方差时常用分母 的样本方差 。标准差 与原数据单位一致,方差单位是原单位的平方。
导数 是局部变化率,微分 是一阶近似变化量。对多参数损失,每个偏导只改变其中一个参数,所有偏导组成梯度 。最小化时常向负梯度方向走。
概率与条件
是事件 A 的概率, 是已知 B 时 A 的概率。独立意味着 ;“相关小”一般不能推出独立。期望 是按概率加权的平均,不保证每次都出现这个数值。
, 是它的反函数,只对正数定义。对数把乘积变成加法,这会在概率模型中反复出现。
手算一个最小例子
取两个向量 、,内积为 ,欧氏长度为 。
对数据 ,均值为 4,离均差平方和为 ,总体式方差为 ,样本方差为 ,样本标准差为 2。两种分母服务不同目的,不能混着比较结果。
设损失 。链式法则给出 。在 处梯度为 -16,学习率 时:
原损失 16,新损失 。负梯度不是“参数一定减小”,而是让目标局部下降的方向。
建模步骤与完整案例
用三套房组织一个最小预测模型,暂不从数据学习系数,只验证计算过程。
假设单位统一:面积按平方米、卧室按间、租金按百元/月。模型为 。面积系数的单位是“百元/月/平方米”,卧室系数是“百元/月/间”,截距为“百元/月”。
将特征组织成 ,权重组织成长度 2 的向量,再加截距。此时模型参数是人为给定的演示值;后续回归课才学习如何从观测估计它们。
Python 实现与结果解释
配套文件:查看或下载本篇完整脚本。
import numpy as np
X = np.array([[50., 2.], [80., 3.], [100., 3.]])
w = np.array([0.4, 2.0])
prediction = X @ w + 5.0
print("形状:", X.shape, w.shape, prediction.shape)
print("预测租金(百元/月):", prediction)
assert np.allclose(prediction, [29., 43., 51.])
values = np.array([2., 4., 6.])
print("均值、样本方差:", values.mean(), values.var(ddof=1))
weight = 1.0
gradient = 4 * (2*weight - 6)
weight -= 0.1 * gradient
print("更新后的参数:", weight)
assert np.isclose(weight, 2.6)
# 条件概率:总共100人,20人带伞;其中12人遇到下雨。
print("已知带伞时下雨的样本比例:", 12/20)
array 将列表转成数值数组;@ 是矩阵乘法;shape 返回尺寸;allclose 判断浮点结果是否在容差内接近。ddof=1 把方差分母改为 。
Python 的 = 是赋值,== 是比较;for i in range(3) 依次产生 0、1、2。切片 a[:2] 取前两项,a[2:] 从第 3 项取到结尾。def 定义函数,return 返回结果。后续示例中的 random_state 或随机种子用于固定可复现的随机过程,不会使模型自动更准确。
方法选择与常见误区
- 数组
X * w按元素广播相乘,结果还是一张表;X @ w才是每行的加权和。 - 标准差与标准误不同:前者描述个体差异,后者描述估计量的抽样波动。例如均值的标准误常估计为 。
- 导数是局部量,学习率过大仍可能让损失上升。
- 通常不等于 。上例不能从“带伞者中 60% 遇雨”推出“下雨者中 60% 带伞”。
- 随机样本的实际平均数通常不会恰好等于理论期望。出现差异不等于计算错误,必须结合样本量看。
- 浮点数只保留有限精度,例如0.1加0.2可能不与0.3逐位相等。用合理绝对和相对容差检查数值;约为 的舍入差别不应解释为有业务意义的变化。
练习
- 为 、 为长度 3, 有几个数?
- 求 的均值、样本方差、样本标准差。
- ,从 、学习率 0.25 更新一步得到多少?
- 20 个带伞者中 12 人遇雨。如果不知道下雨者总人数,能否算出“雨天带伞比例”?
参考答案
- 5 个,每一行对应一个预测。若权重有 4 项,就无法完成这个矩阵乘法。
- 均值 3,离均差平方和 8,样本方差 4,样本标准差 2。
- 梯度 ,更新为 ,新损失为 4。
- 不能。还缺少“遇雨总人数”这个分母;条件概率必须先明确条件所限定的人群。
复习卡片与下一步
复习时检查:会看 的样本表;会按行列完成内积;会区分方差与标准误;会解释导数和条件概率。下一篇把这些量放进真实的数据清理流程,再在回归课中学习参数估计。
参考资料
- Datawhale《数学建模导论》第1章:用于建立知识目录,建议与本篇的手算和案例对照阅读。
- NumPy 初学者指南:数组、轴与形状。
- NumPy 方差:ddof 的定义。