1. 信息的度量
自信息: I(x) = -log₂ p(x)。越不可能发生的事件,信息越多。
2. 信息熵
H(X) = -Σ p(x) log₂ p(x)
物理意义:随机变量的平均不确定性;编码所需最少平均比特数。
性质:H(X)≥0;等概率时最大H(X)=log₂|X|;确定性变量H=0。
熵与决策树: 信息增益 = H(Y) - H(Y|X) = 互信息I(X;Y)
3. 条件熵与互信息
H(Y|X) = Σ p(x) H(Y|X=x):已知X后Y仍有的不确定性
互信息: I(X;Y) = H(X)-H(X|Y) = H(Y)-H(Y|X)
含义:X和Y共享的信息量。I(X;Y)≥0,=0当且仅当X,Y独立。
ML应用:特征选择(选互信息最大的特征)、聚类评估
4. KL散度与交叉熵
KL散度: D_KL(P‖Q) = Σ p(x) log(p(x)/q(x))
性质:D_KL≥0(吉布斯不等式);不对称(不是距离!);=0当且仅当P=Q
交叉熵: H(P,Q) = -Σ p(x) log q(x) = H(P) + D_KL(P‖Q)
分类损失函数: L = -Σ yᵢ log ŷᵢ = H(y, ŷ) → 这就是为什么交叉熵是分类标准损失!
KL散度应用:VAE、知识蒸馏、TRPO/PPO
5. 信息论与ML统一视角
| 信息论 | ML对应 |
| 熵 | 决策树分裂准则 |
| 交叉熵 | 分类损失函数 |
| KL散度 | 正则化/约束 |
| 互信息 | 特征选择/聚类评估 |
Python代码实现与验证
💡 代码说明:以下代码使用 Python / Scikit-learn 实现,已实机运行验证。
完整代码
import numpy as np
from sklearn.metrics import mutual_info_score
np.random.seed(42)
print("=== 信息熵验证 ===")
for name, probs in [("公平硬币",[0.5,0.5]),("不公平硬币",[0.9,0.1]),("骰子",[1/6]*6)]:
H = -sum(p*np.log2(p) for p in probs)
print("{}: H={:.4f} bit".format(name, H))
print("\n=== KL散度验证 ===")
p = np.array([0.3, 0.5, 0.2])
q = np.array([0.25, 0.55, 0.2])
kl_pq = np.sum(p * np.log(p/q))
kl_qp = np.sum(q * np.log(q/p))
print("KL(P||Q)={:.6f}".format(kl_pq))
print("KL(Q||P)={:.6f}".format(kl_qp))
print("不对称: KL(P||Q)!=KL(Q||P)")
print("\n=== 交叉熵验证 ===")
H_p = -np.sum(p * np.log2(p))
CE = -np.sum(p * np.log2(q))
print("H(P)={:.6f} H(P,Q)={:.6f}".format(H_p, CE))
print("\n=== 互信息验证 ===")
n = 1000
x = np.random.randint(0, 3, n)
y = (x + np.random.randint(0, 2, n)) % 3
mi = mutual_info_score(x, y)
print("I(X;Y)={:.4f} nat = {:.4f} bit".format(mi, mi/np.log(2)))
运行结果
=== 信息熵验证 ===
公平硬币: H=1.0000 bit
不公平硬币: H=0.4690 bit
骰子: H=2.5850 bit
=== KL散度验证 ===
KL(P||Q)=0.007041
KL(Q||P)=0.006840
不对称: KL(P||Q)!=KL(Q||P)
=== 交叉熵验证 ===
H(P)=1.485475 H(P,Q)=1.495634
=== 互信息验证 ===
I(X;Y)=0.4059 nat = 0.5856 bit
✅ 验证通过
补充内容:关键概念深入
本节补充本课的核心概念、常见误区和实践建议,帮助建立更深入的理解。
实践案例与深入分析
统计思维在日常ML工作中的体现
统计思维不仅是理论工具,更是ML工程师的核心素养。以下是一些日常工作中的统计思维应用:
数据质量检查:在建模前,始终检查数据的分布、异常值和缺失模式。一个异常值可能导致模型完全失效。用箱线图和直方图做第一道关卡,用Z-score和IQR做第二道关卡,用业务逻辑做第三道关卡。
实验设计:每次模型改进都需要统计验证。仅看测试集指标是不够的——你需要置信区间和假设检验来确认改进不是随机波动。使用配对t检验比较两个模型的交叉验证分数,比单次比较更可靠。
结果解读:永远不要只报告点估计。R2=0.85和95%CI[0.82,0.88]比单独的0.85更有信息量。p值<0.05不意味着效果显著——还需要看效应量。
概率论的工程应用
在推荐系统中,贝叶斯平滑是处理冷启动问题的经典方法。例如,一个商品只有3个评分(5,5,4),均值4.67可能不可靠。贝叶斯平滑公式:smoothed = (n*mean + m*global_mean)/(n+m),其中m控制先验的强度。当m=10时,这个商品的平滑评分变为(3*4.67+10*4.0)/13=4.15,更接近全局均值,更稳健。
常见统计错误与防范
- p-hacking:反复尝试不同分析直到p<0.05。防范:预先注册分析计划,报告所有尝试的检验次数。
- 选择性报告:只报告显著结果,忽略不显著的。防范:报告所有分析结果,使用森林图展示完整画面。
- 忽略多重比较:20个特征中可能1个"显著"纯属偶然。防范:Bonferroni/BH校正。
- 样本量不足:小样本下的"显著"结果不可靠。防范:预先计算所需样本量。
统计学习理论概览
VC维是衡量模型复杂度的理论工具。VC维越高,模型能拟合的函数越复杂,但也越容易过拟合。结构风险最小化(SRM)在经验风险和模型复杂度之间取得平衡:SRM = 经验风险 + 复杂度惩罚。这解释了为什么正则化能防止过拟合——它在做结构风险最小化。
补充:关键概念与面试要点
核心直觉
- 正则化 = 给模型加"约束",防止过度拟合噪声
- 交叉验证 = "用数据的不同部分反复检验模型"
- 特征选择 = "选择携带最多目标信息的特征"
- 集成学习 = "三个臭皮匠顶个诸葛亮"
- 降维 = "抓住主要矛盾"
常见面试问题
- L1正则化为什么产生稀疏解?(几何:菱形与等高线在角上相交)
- 逻辑回归为什么用交叉熵而不用MSE?(MSE导致梯度消失)
- 随机森林为什么不容易过拟合?(Bagging降方差,特征随机降相关性)
- K-Means为什么收敛到局部最优?(目标函数非凸)
- PCA为什么需要中心化?(否则第一主成分指向均值方向)
补充:关键概念与面试要点
核心直觉
- 正则化 = 给模型加"约束",防止过度拟合噪声
- 交叉验证 = "用数据的不同部分反复检验模型"
- 特征选择 = "选择携带最多目标信息的特征"
- 集成学习 = "三个臭皮匠顶个诸葛亮"
- 降维 = "抓住主要矛盾"
常见面试问题
- L1正则化为什么产生稀疏解?(几何:菱形与等高线在角上相交)
- 逻辑回归为什么用交叉熵而不用MSE?(MSE导致梯度消失)
- 随机森林为什么不容易过拟合?(Bagging降方差,特征随机降相关性)
- K-Means为什么收敛到局部最优?(目标函数非凸)
- PCA为什么需要中心化?(否则第一主成分指向均值方向)
补充:关键概念与面试要点
核心直觉
- 正则化 = 给模型加"约束",防止过度拟合噪声
- 交叉验证 = "用数据的不同部分反复检验模型"
- 特征选择 = "选择携带最多目标信息的特征"
- 集成学习 = "三个臭皮匠顶个诸葛亮"
- 降维 = "抓住主要矛盾"
常见面试问题
- L1正则化为什么产生稀疏解?(几何:菱形与等高线在角上相交)
- 逻辑回归为什么用交叉熵而不用MSE?(MSE导致梯度消失)
- 随机森林为什么不容易过拟合?(Bagging降方差,特征随机降相关性)
- K-Means为什么收敛到局部最优?(目标函数非凸)
- PCA为什么需要中心化?(否则第一主成分指向均值方向)
补充:关键概念与面试要点
核心直觉
- 正则化 = 给模型加"约束",防止过度拟合噪声
- 交叉验证 = "用数据的不同部分反复检验模型"
- 特征选择 = "选择携带最多目标信息的特征"
- 集成学习 = "三个臭皮匠顶个诸葛亮"
- 降维 = "抓住主要矛盾"
常见面试问题
- L1正则化为什么产生稀疏解?(几何:菱形与等高线在角上相交)
- 逻辑回归为什么用交叉熵而不用MSE?(MSE导致梯度消失)
- 随机森林为什么不容易过拟合?(Bagging降方差,特征随机降相关性)
- K-Means为什么收敛到局部最优?(目标函数非凸)
- PCA为什么需要中心化?(否则第一主成分指向均值方向)
补充:关键概念与面试要点
核心直觉
- 正则化 = 给模型加"约束",防止过度拟合噪声
- 交叉验证 = "用数据的不同部分反复检验模型"
- 特征选择 = "选择携带最多目标信息的特征"
- 集成学习 = "三个臭皮匠顶个诸葛亮"
- 降维 = "抓住主要矛盾"
常见面试问题
- L1正则化为什么产生稀疏解?(几何:菱形与等高线在角上相交)
- 逻辑回归为什么用交叉熵而不用MSE?(MSE导致梯度消失)
- 随机森林为什么不容易过拟合?(Bagging降方差,特征随机降相关性)
- K-Means为什么收敛到局部最优?(目标函数非凸)
- PCA为什么需要中心化?(否则第一主成分指向均值方向)
补充:关键概念与面试要点
核心直觉
- 正则化 = 给模型加"约束",防止过度拟合噪声
- 交叉验证 = "用数据的不同部分反复检验模型"
- 特征选择 = "选择携带最多目标信息的特征"
- 集成学习 = "三个臭皮匠顶个诸葛亮"
- 降维 = "抓住主要矛盾"
常见面试问题
- L1正则化为什么产生稀疏解?(几何:菱形与等高线在角上相交)
- 逻辑回归为什么用交叉熵而不用MSE?(MSE导致梯度消失)
- 随机森林为什么不容易过拟合?(Bagging降方差,特征随机降相关性)
- K-Means为什么收敛到局部最优?(目标函数非凸)
- PCA为什么需要中心化?(否则第一主成分指向均值方向)
补充:关键概念与面试要点
核心直觉
- 正则化 = 给模型加"约束",防止过度拟合噪声
- 交叉验证 = "用数据的不同部分反复检验模型"
- 特征选择 = "选择携带最多目标信息的特征"
- 集成学习 = "三个臭皮匠顶个诸葛亮"
- 降维 = "抓住主要矛盾"
常见面试问题
- L1正则化为什么产生稀疏解?(几何:菱形与等高线在角上相交)
- 逻辑回归为什么用交叉熵而不用MSE?(MSE导致梯度消失)
- 随机森林为什么不容易过拟合?(Bagging降方差,特征随机降相关性)
- K-Means为什么收敛到局部最优?(目标函数非凸)
- PCA为什么需要中心化?(否则第一主成分指向均值方向)
补充:关键概念与面试要点
核心直觉
- 正则化 = 给模型加"约束",防止过度拟合噪声
- 交叉验证 = "用数据的不同部分反复检验模型"
- 特征选择 = "选择携带最多目标信息的特征"
- 集成学习 = "三个臭皮匠顶个诸葛亮"
- 降维 = "抓住主要矛盾"
常见面试问题
- L1正则化为什么产生稀疏解?(几何:菱形与等高线在角上相交)
- 逻辑回归为什么用交叉熵而不用MSE?(MSE导致梯度消失)
- 随机森林为什么不容易过拟合?(Bagging降方差,特征随机降相关性)
- K-Means为什么收敛到局部最优?(目标函数非凸)
- PCA为什么需要中心化?(否则第一主成分指向均值方向)
补充:关键概念与面试要点
核心直觉
- 正则化 = 给模型加"约束",防止过度拟合噪声
- 交叉验证 = "用数据的不同部分反复检验模型"
- 特征选择 = "选择携带最多目标信息的特征"
- 集成学习 = "三个臭皮匠顶个诸葛亮"
- 降维 = "抓住主要矛盾"
常见面试问题
- L1正则化为什么产生稀疏解?(几何:菱形与等高线在角上相交)
- 逻辑回归为什么用交叉熵而不用MSE?(MSE导致梯度消失)
- 随机森林为什么不容易过拟合?(Bagging降方差,特征随机降相关性)
- K-Means为什么收敛到局部最优?(目标函数非凸)
- PCA为什么需要中心化?(否则第一主成分指向均值方向)
补充:关键概念与面试要点
核心直觉
- 正则化 = 给模型加"约束",防止过度拟合噪声
- 交叉验证 = "用数据的不同部分反复检验模型"
- 特征选择 = "选择携带最多目标信息的特征"
- 集成学习 = "三个臭皮匠顶个诸葛亮"
- 降维 = "抓住主要矛盾"
常见面试问题
- L1正则化为什么产生稀疏解?(几何:菱形与等高线在角上相交)
- 逻辑回归为什么用交叉熵而不用MSE?(MSE导致梯度消失)
- 随机森林为什么不容易过拟合?(Bagging降方差,特征随机降相关性)
- K-Means为什么收敛到局部最优?(目标函数非凸)
- PCA为什么需要中心化?(否则第一主成分指向均值方向)
补充:关键概念与面试要点
核心直觉
- 正则化 = 给模型加"约束",防止过度拟合噪声
- 交叉验证 = "用数据的不同部分反复检验模型"
- 特征选择 = "选择携带最多目标信息的特征"
- 集成学习 = "三个臭皮匠顶个诸葛亮"
- 降维 = "抓住主要矛盾"
常见面试问题
- L1正则化为什么产生稀疏解?(几何:菱形与等高线在角上相交)
- 逻辑回归为什么用交叉熵而不用MSE?(MSE导致梯度消失)
- 随机森林为什么不容易过拟合?(Bagging降方差,特征随机降相关性)
- K-Means为什么收敛到局部最优?(目标函数非凸)
- PCA为什么需要中心化?(否则第一主成分指向均值方向)
补充:关键概念与面试要点
核心直觉
- 正则化 = 给模型加"约束",防止过度拟合噪声
- 交叉验证 = "用数据的不同部分反复检验模型"
- 特征选择 = "选择携带最多目标信息的特征"
- 集成学习 = "三个臭皮匠顶个诸葛亮"
- 降维 = "抓住主要矛盾"
常见面试问题
- L1正则化为什么产生稀疏解?(几何:菱形与等高线在角上相交)
- 逻辑回归为什么用交叉熵而不用MSE?(MSE导致梯度消失)
- 随机森林为什么不容易过拟合?(Bagging降方差,特征随机降相关性)
- K-Means为什么收敛到局部最优?(目标函数非凸)
- PCA为什么需要中心化?(否则第一主成分指向均值方向)
📝 课后练习
- 实现本课核心算法并用Scikit-learn验证
- 调优关键超参数并记录性能变化
- 用交叉验证评估模型稳定性
- 与之前学过的方法对比分析
- 分析本课方法的失效条件