数学如何真正流到机器学习
本节定位
这不是一篇新的数学课,也不是一篇具体算法课。它的任务只有一个:把第三阶段学过的数学,真正接到第四阶段的机器学习建模流程里。
学习目标
- 看懂线性代数、概率统计、微积分在机器学习里各自负责什么
- 建立“数据矩阵 -> 预测 -> 损失 -> 梯度 -> 更新”的统一视角
- 不再把数学、代码、模型看成三套互不相干的东西
- 为后面的线性回归、逻辑回归、评估与优化做桥接
零、先建立一张地图
很多新人学完第三阶段,到了第四阶段还是会觉得像换了一门课。
原因通常不是数学没学,而是没有把数学对象和建模动作对上。
更稳的理解方式是先记住这一张图:
如果你先抓住这张图,后面看到公式时就不容易慌,因为你知道:
- 它到底属于哪条数学主线
- 它在建模流程里到底负责什么
一、线性代数:把数据和参数组织起来
第三阶段里你已经见过:
- 向量
- 矩阵
- 矩阵乘法
- 线性变换
到了机器学习里,它们最直接的用途就是:
- 用向量表示一个样本
- 用矩阵表示一批样本
- 用参数向量表示模型要学的权重
1.1 一个样本为什么会被写成向量?
比如一个房子,我们可能用这些特征描述它:
- 面积
- 房间数
- 楼层
那它就可以写成一个向量:
x = [120, 3, 15]
这不是为了写得高级,而是为了让模型能统一处理各种特征。
1.2 一批样本为什么会被写成矩阵?
当有很多房子时,我们会把它们堆成一个矩阵 X:
import numpy as np
# 3 个样本,3 个特征
X = np.array([
[120.0, 3.0, 15.0],
[80.0, 2.0, 8.0],
[150.0, 4.0, 20.0],
])
print("X 的形状:", X.shape)
print(X)
这时:
- 行 = 样本
- 列 = 特征
这就是后面你在 sklearn 里总会看到 X.shape = (n_samples, n_features) 的原因。
1.3 参数为什么也会写成向量?
如果模型认为每个特征都有一个权重,那参数也能写成向量 :
w = np.array([2.5, 30.0, 2.0]) # 每个特征一个权重
b = 50.0 # 截距
pred = X @ w + b
print("预测值:", pred)
这里最关键的不是代码,而是意识到:
X是数据w是模型学出来的参数X @ w + b就是在把“特征影响”加总成一个预测
1.4 线性代数在第四阶段后面会出现在哪?
| 数学对象 | 在第四阶段里会出现在哪 |
|---|---|
| 向量 | 一个样本的特征表示 |
| 矩阵 | 整个训练集 X |
| 矩阵乘法 | 线性回归、逻辑回归、PCA |
| 特征值 / 特征向量 | PCA 降维 |
所以线性代数在机器学习里最核心的作用,不是推导,而是:
给数据和模型参数一个统一、可计算的表示方式。
二、概率统计:描述不确定性,定义好坏
如果线性代数负责“把东西摆好”,那概率统计负责的是:
- 怎么描述模型输出的可信度
- 怎么定义预测错得多不多
- 怎么评估模型到底好不好
2.1 为什么逻辑回归会输出概率?
在线性回归里,我们预测的是连续值。
但在分类里,我们更关心:
- 这个样本属于正类的概率有多大?
一个最小例子可以这样理解:
import numpy as np
z = np.array([-2.0, -0.5, 0.0, 1.0, 3.0])
prob = 1 / (1 + np.exp(-z))
print("线性打分 z:", z)
print("概率输出:", np.round(prob, 4))
这里的 prob 就是在把“线性打分”压到 0~1 之间。
所以你可以把概率统计在这里的作用理解成:
- 帮我们把模型输出变成“可解释的不确定性”