一句话定义:独立同分布(independent and identically distributed,i.i.d.)指一组数据里每个样本互不影响(独立),而且都来自同一个概率分布(同分布)。
打个比方:掷一颗公平骰子,连掷十次,上一次是几点不影响下一次(独立),每次都是同一颗骰子、同样的概率(同分布)。机器学习几乎所有训练流程,都默认自己在掷同一颗骰子:训练集是从真实世界这个“骰子”里独立抽出来的,测试集、线上流量也从同一个“骰子”里抽。只有这个前提成立,训练集上的表现才能代表线上的表现——这就是“泛化”能成立的地基。
注意“独立”和“同分布”是两件事,它们可以只坏一半:
| 情形 | 独立? | 同分布? | 典型例子 |
|---|---|---|---|
| 掷骰子 | 是 | 是 | 理想假设 |
| 同一用户的多条行为 | 否 | 是 | 序列、会话数据 |
| 北京用户训练、成都用户上线 | 是 | 否 | 协变量偏移 |
| 老模型日志训练、新策略上线 | 否 | 否 | 反馈回路、曝光偏差 |
和相邻概念的区别:i.i.d. 说的是“采样方式”,分布偏移(distribution shift)说的是“这个假设被打破后的结果”。常见三种破坏方式——协变量偏移(covariate shift):输入分布 P(x) 变了,但 P(y|x) 没变,比如换城市、换渠道;标签偏移(label shift):类别比例变了,比如大促期间异常订单占比暴涨;概念漂移(concept drift):P(y|x) 本身随时间变,比如用户喜好、欺诈手法变了。时间序列里样本天然不独立,工程上一般退一步要求“平稳性”(stationarity),也就是分布别随时间剧烈变动。
对从业者的实际意义,最容易被忽视的有两点。第一,划分数据集时的随机切分隐含了 i.i.d. 假设。如果数据带时间顺序或按用户聚合,随机切分会让同一个人、同一段时间的样本同时落进训练集和验证集,验证分数虚高,上线就掉点。更稳的做法是按时间切、按用户或设备分组切(group split)。第二,训练数据往往来自历史日志,而日志只记录了旧策略曾经展示过的样本,这本身就是有偏采样,不是从目标分布里独立抽取——模型越用越偏,就是反馈回路。
对业务方和普通职场人:模型不是“学会了就永远会”,它学的是某一段时间的数据规律。改版、换投放渠道、大促、季节变化,都会让线上输入分布偏离训练分布,效果打折是常态而非故障。所以上线后要监控输入特征的分布变化(例如 PSI 之类的稳定性指标,具体口径以团队规范为准)、保留回滚方案、按周期重训。
一句话收尾:i.i.d. 不是数据的天性,而是建模时押的一个赌注;越早在数据切分和上线监控里验证这个赌注,越少在线上掉点。
