学习目标
学习本课后,你将能够:
- 解读相关性的方向与强度,并说明 Pearson 和 Spearman 系数分别衡量什么。
- 识别非线性关系,并解释为什么零相关不等于相互独立。
- 区分统计关联与因果关系,识别混杂因素。
- 发现目标泄漏、时间泄漏、分组/重复记录泄漏和预处理泄漏。
- 判断信息在模型必须作出预测的时点是否真正可用。
1. 相关性:两个变量如何共同变化
假设有一张表,记录建筑每小时的室外温度和能耗。如果温度较高的时段通常能耗也较高,就存在正向关联。如果温度升高时能耗通常下降,则是负向关联。如果散点没有明显方向,线性关系可能较弱。
相关性描述变量共同变化的情况,但不能解释这种变化为什么发生。它有助于发现规律、形成假设和识别异常观测。然而,相关性本身不能说明哪个变量影响另一个变量,也不能保证这种规律在新数据中仍然成立。
请把三个问题分开:是否存在关联?关联有多强、方向如何?它能否支持预测或因果结论?一个相关系数无法同时回答这三个问题。
2. Pearson 与 Spearman:观察关联的两种方式
Pearson 相关系数衡量线性关系的方向和强度,取值范围为 −1 到 +1。正负号表示方向,绝对值反映数据点与直线趋势的吻合程度。+1 表示完全正线性关系,−1 表示完全负线性关系。接近 0 表示线性关联较弱,并不意味着不存在任何依赖关系。
Spearman 相关系数使用秩,也就是数值的相对顺序。它衡量单调关系:随着 X 增大,Y 总体朝一个方向变化,即使变化速度并非线性。例如,工作年限增加时经验通常也会增加,但并不是每一年都增加相同的程度。
两种系数都有局限。异常值可能显著影响 Pearson;Spearman 对某些尺度变化不那么敏感,但也不是万能方法。对于有序类别、复杂关系和时间序列,还需要其他分析方法。
| 方法 | 衡量内容 | 适用情况 | 局限 |
|---|---|---|---|
| Pearson | 线性关联 | 散点大致呈直线趋势的定量变量 | 可能遗漏非线性模式;容易受异常值影响 |
| Spearman | 秩的单调关联 | 有序数据,或非线性但单调的关系 | 不能描述所有关系形态,也不能证明因果 |
实践建议:先绘制数据图,检查异常值和分布形态,再选择符合研究问题的系数。不要仅仅因为某种方法计算方便就使用它。
3. 混杂因素与因果推理
当两个变量存在关联时,可能有多种解释:X 影响 Y;Y 影响 X;第三个变量同时影响两者;关联只是偶然;或者关系比简单的直接作用更复杂。混杂因素与两个变量都有关,可能造成、增强、削弱甚至反转观察到的关联。
例如,冰淇淋销量和晒伤人数都可能在夏季上升,因为人们在户外活动的时间更长。如果忽略季节和天气,就可能错误地把一个变量的变化归因于另一个变量。分析数据时应追问:还有什么因素可能产生这种模式?
因果结论需要更充分的依据:合理的研究设计、明确的时间顺序、有依据的控制因素,以及对其他解释的检验。随机实验通常很有帮助,但并非总能实施。观察性数据也可以用于因果分析,但必须明确假设并采用合适的方法。
4. 非线性关系与“零相关”陷阱
假设建筑能耗在舒适温度下最低,但在极热天气时因空调而上升,在严寒天气时因供暖而上升。这会形成 U 形关系。温度处于中间范围和两端时,能耗的变化方式不同,因此 Pearson 系数可能接近 0,尽管规律十分明显。
所以,“Pearson 相关系数为零”只表示在所选样本中没有明显的线性关联。它不代表统计独立、没有规律或特征没有用。还应使用图表、分组分析,以及能够表达非线性效应的模型。
反过来也有问题:很强的相关性可能由少数极端点造成。应检查结果是否依赖某个对象、某个时间段或少量错误测量。
5. 机器学习中的相关特征
特征表中可能包含几乎重复的测量:摄氏温度和华氏温度、以不同单位记录的面积,或安装位置很近的两个传感器。这些特征携带了部分重复的信息。
对于线性模型,预测变量之间的强相关可能导致多重共线性:系数变得不稳定、难以解释,数据稍有变化就可能明显改变估计值。对于树模型和部分集成模型,表现形式不同:重要性可能分散到多个相似特征上,使单个特征看起来不如整个特征组重要。
不要自动删除所有相关特征。首先判断它们是否重复、哪个更可靠且更容易获得,以及是否有领域理由保留两者。应在正确的验证流程中检查决策,并记住不同人群或时期中的相关性可能发生变化。
6. 数据泄漏:模型提前看到了答案
数据泄漏(Data leakage)是指训练或评估使用了真实预测场景中不可获得的信息,或者评估数据影响了模型准备过程。模型因此获得不公平的优势:指标看起来很高,但面对新数据时性能可能急剧下降。
假设要提前 24 小时预测水泵故障。表格中包含温度、振动、维护计划、事故代码和实际停机时间。温度和振动可能在预测前就能获得;事故代码和准确的停机时间则是在事件发生后才出现。如果把它们作为特征,模型学到的不是预测故障,而是识别已经发生的故障。
对每个字段都要提出一个问题:系统在必须作出预测的那个时刻,真的能获得这个值吗? 历史表格中存在某一列,并不意味着它是合法的模型特征。
7. 常见的数据泄漏类型及识别方法
目标泄漏。 特征直接包含答案,或由答案计算而来。例如,预测配送延误,却意外使用了实际送达日期。应追溯每个特征的数据来源和计算逻辑。
时间泄漏。 特征在预测时点之后才变得可知。这在医疗、金融、工业和需求预测中很常见。除了记录事件的时间戳,还应记录该值何时真正提供给系统。
重复记录或分组泄漏。 同一记录的副本、同一患者的测量或同一设备的数据可能同时进入训练集和测试集。模型实际上识别的是已经见过的对象。必要时应按患者、客户、建筑、设备或源文档分组划分。
预处理泄漏。 如果在划分数据之前,就使用完整表格进行标准化、缺失值填补、特征选择或降维,那么测试集统计信息已经影响了训练。所有需要从数据中学习参数的转换,都必须只在训练集上拟合,并放在 pipeline 中执行。
模型选择阶段也可能发生泄漏:如果反复查看测试结果并据此修改模型,测试集就逐渐成为开发数据。模型选择应使用验证集或交叉验证;测试集应留给最终的独立评估。
8. 如何建立可信的模型评估流程
- 描述任务。 要预测什么、针对什么对象、预测时间跨度是多少?
- 固定预测时点。 系统究竟应在什么时候给出答案?
- 审查特征可用性。 记录每个字段的来源、可用时间和可能的延迟。
- 选择合适的数据划分。 只有观测相互独立且符合部署场景时才使用随机划分;预测未来时使用时间划分;预测新对象时使用分组划分。
- 只在训练集上拟合转换。 使用 pipeline,避免缺失值填补、缩放和特征选择看到验证集或测试集。
- 使用验证集调参。 不要根据测试指标选择参数。
- 对冻结后的方案进行最终测试。 保存数据版本、划分规则和评估局限。
9. 实践:审计设备故障预测模型
某公司希望提前一天预测风机故障。数据表包含电机温度、振动、负载、上次维护日期、已登记的事故代码、实际停机时间和最终维修状态。
完成以下审计:
- 写出预测时点,例如每天 09:00,以及 24 小时的预测跨度。
- 判断每个字段在 09:00 是否可用。检查维护日期是否可能事后补录。
- 决定是否需要按时间或风机编号划分数据。
- 说明缺失值填补和缩放操作应在哪个数据子集上拟合。
- 解释为什么事故代码与目标高度相关,并不能使它成为合法特征。
好的答案不只是列出“保留/删除”的字段,而是要说明预测时点、数据来源,以及实验如何模拟真实部署过程。