因果机器学习:提升时序预测鲁棒性的数据驱动与知识融合实践
1. 项目概述与核心价值
在数据中心运维、供应链管理、金融风控这些领域,我们每天都在和数据打交道,核心任务就是预测未来。比如,预测服务器机房的温度会不会过热,或者预测下个月的能源消耗成本。传统机器学习模型,像XGBoost、LSTM这些,在历史数据上往往能跑出漂亮的分数,但一旦遇到没见过的工况,比如突然调整了空调设定温度,或者外部天气剧烈变化,模型的预测就可能“翻车”,偏差大得离谱。这背后的根本原因,是模型学到的可能只是数据中的“虚假关联”,而非真正的“因果机制”。
我最近深度实践并复盘了一个将因果机器学习落地到数据中心能耗与温度预测的项目。这个项目的核心目标,不是追求在静态测试集上的那零点几个百分点的提升,而是解决一个更本质的问题:如何让预测模型在面对系统干预和未知变化时,依然保持稳健和可靠。简单说,就是让模型不仅“知其然”(相关),更能“知其所以然”(因果)。
我们采用的方法论可以概括为“数据驱动发现,知识驱动修正”。具体路径是:首先利用时间序列因果发现算法(如PC算法)从海量时序数据中自动挖掘出变量间潜在的因果网络图;然后,邀请领域专家(比如数据中心的热力学工程师)介入,基于物理原理和业务常识对这个初步的因果图进行审查和修正;最后,从修正后的因果图中,提取出与预测目标有直接因果关系的变量及其滞后项,作为特征去训练传统的监督学习模型。
实测下来,这套方法的效果非常显著。在预测服务器设备能耗和机房内部温度的任务中,基于因果特征训练的模型,其预测精度与传统特征选择方法(如递归特征消除RFE、Lasso)相当甚至更优。但真正的分水岭出现在干预场景下:当我们模拟改变空调设定值(Cool_set)时,因果模型的预测误差(MAE)平均比传统方法低了约17%,在80%的模拟实验中表现最佳。这意味着,基于因果关系的模型,能更好地回答“如果我把温度设定调高一度,能耗会怎样变化”这类决策者关心的“假设性”问题。
这篇文章,我将为你彻底拆解这个项目的完整流程:从因果发现的理论基础、算法选型与调参,到如何与领域专家高效协作修正因果图,再到特征工程的具体策略和多种机器学习模型的对比实验。我会分享其中踩过的坑、参数选择的经验,以及如何将这套方法论复用到你自己的时序预测问题中。无论你是数据科学家、算法工程师,还是业务分析师,只要你的工作涉及在变化环境中做可靠预测,这篇文章都能给你带来直接可用的思路和工具。
2. 核心思路拆解:为什么是“因果发现+领域知识”?
在深入技术细节之前,我们必须先想清楚:为什么传统的特征选择方法在干预场景下容易失灵?而“因果发现+领域知识”这套组合拳,又强在哪里?
2.1 传统方法的瓶颈:相关性与因果性的鸿沟
传统的特征选择方法,无论是基于过滤式(如相关系数)、包裹式(如递归特征消除RFE)还是嵌入式(如Lasso回归),其核心逻辑都是寻找与目标变量统计相关性最强的特征。这在数据分布稳定的情况下没有问题。然而,相关性不等于因果性。一个经典的例子是:冰淇淋销量和溺水人数高度相关,但二者并无直接因果联系,它们都受第三个变量“夏季高温”的影响。在预测任务中,如果我们错误地将“溺水人数”作为特征来预测“冰淇淋销量”,模型在夏季可能表现良好,但一旦政策干预(比如强制关闭海滩),这个特征就会完全失效,导致预测崩溃。
在我们的数据中心场景中,类似的问题同样存在。例如,室外湿度(Out_Hum)和IT设备能耗(ITE_Ener)可能显示出一定的时序相关性,但这可能是因为它们都受到昼夜周期或季节性变化的共同影响,而非彼此直接因果作用。一个仅依赖相关性的模型,在空调系统进行除湿干预后,其预测就可能产生重大偏差。
2.2 因果特征选择的优势:瞄准真正的驱动因子
因果特征选择的目标,是找到目标变量的马尔可夫毯——即最小的一组变量,在给定这些变量的条件下,目标变量与系统中所有其他变量条件独立。这组变量包含了预测目标所需的全部因果信息。相比于相关性筛选,因果筛选具有两大核心优势:
- 预测鲁棒性:因果特征反映的是数据生成过程的内在机制。当系统受到外部干预或数据分布发生变化时,真正的因果关系通常保持稳定,而虚假的相关关系可能断裂。因此,基于因果特征的模型更有可能将训练中学到的规律泛化到新的、未见过的环境。
- 可解释性与决策支持:因果模型清晰地指出了哪些变量是目标的“因”。这不仅能让我们理解模型为何做出某个预测,更重要的是,它允许我们进行反事实推理和干预效果评估。管理者可以问:“如果我把冷却设定点提高1°C,预计能节省多少能源?”因果模型能给出基于机制推理的答案,而不仅仅是历史数据的拟合外推。
2.3 人机协作的必要性:算法局限与专家智慧的互补
然而,完全依赖数据驱动的因果发现算法也存在局限。算法基于一系列统计假设(如因果马尔可夫条件、无隐变量、平稳性等),现实数据很难完美满足这些假设,导致发现的因果图中可能存在错误边(假阳性)或缺失边(假阴性)。
这时,领域专家的知识就变得至关重要。专家知道:
- 物理上的不可能性:例如,“室外湿度”不可能导致“一天中的小时数”,这是时间维度的固有属性。
- 已知的因果机制:例如,机房内部温度(In_Temp)升高必然导致IT设备风扇耗能(ITE_Ener)增加,这是半导体物理特性决定的;室外温度(Out_Temp)会影响空调系统能耗(HVAC_Ener),这是热力学基本原理。
- 因果作用的合理滞后时间:算法可能发现一个因果链接,但滞后阶数不准。专家可以根据系统惯性(如热容)判断,温度设定点的改变影响到室内温度,其滞后时间通常在1-2个小时内,而不是10个小时。
因此,我们的核心思路是建立一个迭代式的人机协作闭环:算法负责从高维、复杂的时序数据中快速挖掘出初步的因果假设图,大大缩小了专家需要审查的范围;专家则基于深厚的领域知识,对这张图进行“精修”,删除不合理的边,补充遗漏的边,并校准滞后时间。这个过程将数据驱动的效率与知识驱动的可靠性完美结合。
3. 方法论详解:从数据到稳健预测的完整流水线
我们的方法分为三个清晰的阶段,构成了一个完整的建模流水线。下面我将逐一拆解每个阶段的技术选型、操作步骤和背后的考量。
3.1 第一阶段:时间序列因果发现
这个阶段的目标是从原始时序数据中自动生成一个初步的因果图。
3.1.1 数据准备与平稳性检验
因果发现算法对数据的平稳性有要求。我们首先对每个时间序列进行增强迪基-富勒检验。如果序列非平稳(p值 > 0.01),则对其进行一阶差分处理,直到通过检验。这一步至关重要,因为非平稳数据中的趋势会导致虚假的因果关联。
实��心得:对于有明显周期性的数据(如以24小时为周期的IT负载),差分后可能仍存在周期性,这不一定违反平稳性定义,但需要关注。我们通常同时观察序列的自相关图,并结合统计检验做综合判断。
3.1.2 算法选择:为什么是PC1算法?
因果发现算法家族众多,我们选择了PC算法的变种PC1算法,并将其应用于时间序列场景。主要基于以下几点考量:
- 适用性:PC算法属于约束性方法,基于条件独立性检验,对数据分布假设相对宽松,适合我们这种多变量混合型数据(包含温度、湿度、能耗等)。
- 效率:原始的PC算法在处理时间序列时,会将每个变量在不同时间滞后(lag)的观测视为独立变量。如果有V个变量,最大滞后为L,则变量数膨胀为V*L,计算复杂度极高。PC1算法进行了优化,它只对最相关的滞后变量进行条件独立性检验,显著降低了计算开销。
- 可解释性:PC算法输出的因果图结构清晰,每条边都对应一次统计检验的结果(p值),便于专家后续审查。
我们使用Python的Tigramite库来实现PC1算法。这是一个专门为时间序列因果发现设计的优秀工具包。
3.1.3 关键参数设置与调参经验
tau_max(最大滞后):这是最重要的参数之一。我们通过计算所有变量间滞后互相关的平均值来确定。在我们的数据中,这个值被确定为9(小时)。设置过大计算量剧增且可能引入噪声;设置过小可能捕捉不到真实的因果延迟。alpha(显著性水平):我们设置为0.01。这是一个比较严格的标准,旨在控制假阳性率,确保初步发现的边都有较强的统计证据支持。- 条件独立性检验:我们选择了偏相关检验,因为它适用于连续变量,且计算高效。对于非线性关系更强的数据,也可以考虑使用基于互信息的检验(如
CMIknn),但计算成本会更高。
踩坑记录:初期我们曾使用过基于梯度的NOTEARS算法。虽然它在某些仿真数据上表现很好,但在我们的实际数据上,其对超参数(如正则化强度)非常敏感,且输出的图有时包含一些违反时间顺序的边(如“未来”导致“过去”),解释和修正起来比PC算法更困难。因此,对于时间序列因果发现,特别是需要专家介入的场景,我们更推荐基于约束的PC类算法。
3.2 第二阶段:因果图精修与特征提取
这是人机协作的核心环节。算法给出了一个“草稿”,专家负责把它修改成符合物理和业务逻辑的“终稿”。
3.2.1 可视化与专家评审
我们将PC1算法生成的初始因果图(通常以总结图或时间序列图形式)可视化出来。图中节点是变量,带箭头的边表示因果方向,边上的数字表示滞后阶数。我们与数据中心的热力工程师和运维专家一起评审这张图。
评审主要关注以下几点:
- 方向合理性:是否存在违反时间顺序或物理常识的边?例如,
ITE_Ener(IT设备能耗)导致Hour(小时数)显然不合理,应予删除。 - 边存在性:是否有明显的因果边被遗漏?例如,根据热力学知识,
Out_Temp(室外温度)必然影响HVAC_Ener(空调能耗)和In_Temp(室内温度),如果图中没有,需要手动添加。 - 滞后阶数校准:算法发现的滞后阶数是否合理?例如,
Cool_Set(冷却设定点)改变后,In_Temp通常会在1-2小时内响应,如果算法给出的滞后是5,专家可能会将其修正为2。
3.2.2 两种因果特征提取策略
从修正后的因果图中,我们衍生出两种特征构建策略:
- Causal-lags(因果滞后):最精准、最稀疏的策略。只选择那些与目标变量有直接因果边相连的“变量-滞后”组合。例如,若图中只有
Cool_Set(t-2) -> In_Temp(t)这条边,则只将Cool_Set在滞后2阶的值作为特征。 - Causal-all(因果全变量):一种折中策略。选择所有与目标变量有至少一条因果边相连的变量,然后纳入这些变量的**所有滞后阶数(直到tau_max)**作为特征。例如,如果
Out_Temp和Cool_Set都与In_Temp有因果边,那么Out_Temp(t-1),Out_Temp(t-2), ...,Out_Temp(t-9)以及Cool_Set(t-1), ...,Cool_Set(t-9)都会被纳入。
决策点解析:
Causal-lags追求的是极致的因果精确性和模型简洁性,特征数最少。Causal-all则更接近一种“因果引导的变量筛选”,它放松了对滞后阶数的严格要求,保留了更多可能具有预测信息的历史值,特征数较多。我们的实验将对比这两种策略的效果。
3.3 第三阶段:基于因果特征的机器学习建模
这一阶段和传统机器学习流程无异,但输入的特征集已经过因果筛选。
3.3.1 对比基准的设置
为了公平评估因果特征选择的效果,我们设置了多组对比基准:
- All Features(全特征):使用所有变量的所有滞后阶数作为特征。这是最“贪婪”的基线。
- 传统特征选择方法:
- 递归特征消除(RFE):基于线性回归系数迭代剔除特征。
- Lasso回归:利用L1正则化产生稀疏系数,选择非零系数对应的特征。
- 基于树模型的特征重要性(Tree):使用随机森林评估特征重要性,选择重要性大于0的特征。
- 主成分分析(PCA):将特征转换到主成分空间,保留解释85%方差的成分。
3.3.2 预测模型与评估
我们选用了多种有代表性的回归模型:
- 线性回归(LR):简单的线性基线。
- 多层感知器(MLP):代表神经网络,能捕捉非线性。
- XGBoost(XGB)和 LightGBM(LGBM):代表高性能的梯度提升树模型。
评估流程:
- 数据划分:按时间顺序划分,前50%数据(第一年)用于训练,后50%(第二年)用于测试,严格防止时间信息泄露。
- 超参数调优:对MLP、XGB、LGBM使用随机搜索和3折交叉验证进行超参数调优。
- 评估指标:主要使用平均绝对误差(MAE),辅以平均绝对百分比误差(MAPE)。MAE对异常值不敏感,能直观反映预测的平均偏差大小。
- 双重评估场景:
- 整体预测:在整个测试集上评估模型性能。
- 干预后预测:专门提取测试集中,每次
Cool_Set设定点改变之后5个小时的窗口数据,评估模型在系统受到干预、处于瞬态变化时的预测能力。这是检验因果模型鲁棒性的关键。
4. 实战过程:以数据中心为例的完整推演
现在,让我们把上述方法论套用到一个具体的例子——数据中心西区机房的温度和能耗预测。
4.1 数据与环境搭建
我们使用EnergyPlus建筑能耗模拟软件和Sinergym封装环境来生成数据。模拟了一个232.26平方米的机房,包含IT设备、HVAC系统、直接蒸发冷却器等。模拟时长为2年,时间步长为1小时,并引入了纽约的典型气象年数据。为了增加数据多样性并模拟不同工况,我们变化了天气数据和IT负载,生成了100组不同的模拟数据集。
关键变量说明:
- 目标变量:
In_Temp:服务器机房内部温度(°C)ITE_Ener:IT设备能耗(kWh)
- 特征变量:
Out_Temp,Out_Hum,Out_Wind,Out_Wind_Dir:室外环境变量。Cool_Set:冷却温度设定点(°C),这是我们实施干预的操作变量。IT_Load:IT设备CPU负载(%)。Hour:一天中的小时数。HVAC_Ener:HVAC系统能耗(kWh)。
干预设计:在每轮两年的模拟中,我们在训练集和测试集里都平均改变了约16次Cool_Set的设定值。这模拟了运维人员根据策略调整温度的场景,用于测试模型的干预泛化能力。
4.2 因果发现与专家修正实操
我们对第一组模拟数据的训练集进行因果发现。设置tau_max=9,alpha=0.01,运行PC1算法后,得到了初始因果图(见下图左半部分概念示意)。
初始图分析:
- 算法正确地发现了
Cool_Set(t-2) -> In_Temp(t)的链接。 - 但也产生了一些可疑链接,如
Out_Hum -> Hour(室外湿度导致时间?显然荒谬),ITE_Ener -> IT_Load(能耗导致负载?逻辑上应是负载决定能耗)。 - 同时,缺失了一些物理上必然存在的链接,如
In_Temp -> ITE_Ener(温度影响风扇转速和芯片漏电,进而影响能耗),Out_Temp -> In_Temp和Out_Temp -> HVAC_Ener(室外温度影响室内热平衡和空调负荷)。
专家修正过程:
- 删除错误边:与专家确认后,删除了
Out_Hum -> Hour,ITE_Ener -> IT_Load,HVAC_Ener -> IT_Load等违反常识的边。 - 添加缺失边:基于领域知识,添加了
In_Temp(t-1) -> ITE_Ener(t),Out_Temp(t-1) -> In_Temp(t),Out_Temp(t-1) -> HVAC_Ener(t)等边。这里滞后阶数统一设为1,是基于对系统热惯性的经验判断——影响通常在1小时内显著。 - 确认合理边:保留了算法发现的合理边,如
IT_Load -> ITE_Ener,Cool_Set -> In_Temp等。
修正后的最终因果图(见下图右半部分概念示意)成为了我们特征提取的黄金标准。这个过程将需要专家人工审查的特征组合从99个(11个变量 * 9个滞后)大幅减少到只需审查算法发现的几十条边,效率提升显著。
(注:此处应用文字描述代替实际图表)初始因果图显示了算法自动发现的链接,包括正确和错误的。修正后的因果图在初始图基础上,用蓝色箭头标出了新增的因果链接(如Out_Temp -> In_Temp),用红色虚线标出了被删除的错误链接(如Out_Hum -> Hour)。
4.3 特征工程与模型训练
根据最终因果图,我们为两个预测目标构建特征:
- 预测
In_Temp(t):Causal-lags特征:Cool_Set(t-2),Out_Temp(t-1),IT_Load(t-1?)等(具体取决于图中边的滞后)。Causal-all特征:Cool_Set的所有滞后(1-9),Out_Temp的所有滞后(1-9),IT_Load的所有滞后(1-9)等。
- 预测
ITE_Ener(t):Causal-lags特征:IT_Load(t-1),In_Temp(t-1)等。Causal-all特征:IT_Load的所有滞后,In_Temp的所有滞后等。
随后,我们使用这些特征集,以及作为对比基准的“全特征”集和传统方法筛选的特征集,分别训练了LR、MLP、XGB、LGBM四个模型。每个模型在100组模拟数据上独立训练和测试,结果取平均。
4.4 结果分析与核心发现
4.4.1 整体预测性能
下表汇总了预测ITE_Ener和In_Temp的最佳模型结果(按MAE排序,仅展示前列):
| 预测目标 | 特征选择方法 | 模型 | 特征数量 | MAE | MAPE (%) |
|---|---|---|---|---|---|
| ITE_Ener | Causal-all | MLP | 36 | 2.223 | 6.998 |
| RFE | MLP | 49 | 2.520 | 7.872 | |
| Causal-lags | MLP | 6 | 2.616 | 8.964 | |
| In_Temp | Causal-lags | MLP | 6 | 0.210 | 0.831 |
| Causal-lags | LR | 6 | 0.217 | 0.863 | |
| Causal-all | XGB | 54 | 0.223 | 0.887 |
核心发现1:因果特征足以媲美甚至超越传统方法。在预测ITE_Ener时,Causal-all+MLP的组合取得了最佳MAE(2.223),且使用的特征数(36)远少于全特征(99)。在预测In_Temp时,Causal-lags方法仅用6个特征就达到了最佳效果,其MAE(0.210)显著优于其他方法。在超过70%的模拟实验中,基于因果发现的方法(Causal-lags或Causal-all)产出了最佳模型。这说明,因果特征在保留核心预测信息的同时,有效过滤了噪声,避免了过拟合。
4.4.2 干预场景下的预测性能(鲁棒性检验)
这才是真正的“大考”。我们评估了在Cool_Set改变后5小时窗口内的预测误差。
| 预测目标 | 特征选择方法 | 模型 | MAE (干预后) | MAE (整体) | 性能下降幅度 |
|---|---|---|---|---|---|
| In_Temp | Causal-lags | MLP | 0.429 | 0.210 | 约104% |
| RFE | LR | 0.515 | 0.224 | 约130% | |
| All Features | LR | 0.516 | 0.225 | 约129% |
核心发现2:因果模型在干预下展现出卓越的鲁棒性。所有模型在干预后的预测误差都增大了,这是预期的,因为系统处于动态调整中。然而,因果模型(Causal-lags)的误差增幅相对最小,其MAE(0.429)在干预后场景下依然保持最低,平均比次优方法高出约17%。在100次模拟中,Causal-lags方法在80%的情况下产出了干预后最佳模型。这强有力地证明,基于因果关系的特征能够帮助模型更好地理解系统内在机制,从而在环境变化时做出更稳定的推断。
4.4.3 两种因果特征策略的对比
Causal-lags:在预测In_Temp(尤其是干预后)和ITE_Ener时表现极佳,且特征极度稀疏(仅6个)。它是最精确、最简洁的因果表达,特别适合干预分析和反事实推理。Causal-all:在预测ITE_Ener时表现最好,但特征数较多(36个)。它更像一种“因果引导的宽泛特征选择”,可能捕捉到了一些虽非直接因果但具有预测价值的滞后信息。它在整体预测任务上可能更有优势,但在纯粹的干预外推任务上,其精准度略逊于Causal-lags。
5. 常见问题、挑战与实战避坑指南
将因果机器学习应用于实际项目绝非一帆风顺。以下是我在项目中遇到的主要挑战及解决方案,希望能帮你少走弯路。
5.1 因果发现算法的假设与现实冲突
问题:PC等算法假设数据满足因果充分性(无未观测混杂因子)和平稳性。现实中,数据中心可能有无数的未观测因素(如服务器型号差异、气流组织局部不均),且系统可能因维护、负载迁移而处于非平稳状态。
应对策略:
- 领域知识作为安全网:这正是人机协作的价值所在。算法可能因假设违反而出错,但专家的知识可以纠正明显的错误。不要完全信任算法输出的原始图。
- 敏感性分析:尝试不同的显著性水平(
alpha)和最大滞后(tau_max),观察因果图结构的稳定性。如果一条边只在非常宽松的alpha下出现,那它很可能不可靠。 - 聚焦核心变量:优先确保与核心业务目标(如
In_Temp,ITE_Ener)直接相关的因果链路正确。对于一些边缘变量的关系,如果难以确定,可以暂时搁置或保守处理(不纳入特征)。
5.2 滞后阶数(Lag)的确定
问题:因果发现算法可以给出一个滞后估计,但可能不精确。专家知道有因果关系,但可能不确定精确的滞后时间。
实战经验:
- 算法初筛:首先用算法(如通过最大互信息滞后)给出一个
tau_max的估计范围。 - 业务逻辑校准:与领域专家讨论系统的“惯性”或“响应时间”。例如,空调设定点改变到室温响应��物理上需要时间传导,这个时间(如1-2小时)可以作为一个强先验。
- 数据驱动微调:在特征工程阶段,可以围绕专家建议的滞后,构建一个小的滑动窗口特征(如
t-1,t-2,t-3),让模型在训练中自动学习权重。但这会略微偏离纯粹的因果特征选择理念。
5.3 与领域专家的沟通成本
问题:让专家理解因果图、p值、滞后等概念需要时间。专家也可能对算法的“黑箱”性质持怀疑态度。
高效协作技巧:
- 可视化,可视化,再可视化:使用清晰、直观的图形展示因果图。用不同颜色和粗细表示边的强度(如偏相关系数)。时间序列图比总结图对专家更友好。
- 讲业务故事,而非统计术语:不要一上来就讲“条件独立性检验”。应该说:“算法发现,在控制了当前室内温度后,昨天的室外湿度和今天的IT能耗没有关系了。这符合您的经验吗?” 把统计结论翻译成业务语言。
- 聚焦“对与错”:初期不要纠结于滞后的具体数字是1还是2。先让专家判断箭头方向的对错和边是否存在。方向性错误是致命的,滞后偏差是次级的。
- 快速迭代验证:修正因果图后,快速跑一个简单的模型(如线性回归),用干预场景的预测效果向专家展示修正的价值。“看,加上您说的那条‘室外温度影响空调能耗’的边后,模型在夏天高温时的预测准多了!” 用结果建立信任。
5.4 计算复杂度与可扩展性
问题:PC算法在变量多、滞后长时计算量很大。100个变量,每个考虑10阶滞后,就是1000个节点,完全连接图有近50万条边需要检验。
优化建议:
- 变量预筛选:在因果发现前,先用简单的业务逻辑或相关性进行粗筛,剔除明显无关的变量。
- 分阶段建模:对于超大型系统,可以尝试分层或分模块进行因果发现。例如,先对“环境变量”和“设定变量”建模,再对“内部状态变量”和“能耗变量”建模,最后将子图合并。
- 利用
Tigramite的高效实现:Tigramite的PC1实现已经做了大量优化。确保使用其最新的稳定版本,并合理设置tau_max和alpha,避免不必要的计算。 - 云计算资源:对于一次性或周期性的因果图学习任务,可以考虑使用云上的高性能计算实例,这比优化算法本身可能更经济高效。
5.5 模型选择与因果特征的适配性
问题:是否任何机器学习模型都能从因果特征中受益?
我们的发现:从实验结果看,无论是简单的线性回归(LR),还是复杂的神经网络(MLP)、梯度提升树(XGB/LGBM),在使用因果特征后,其在干预场景下的鲁棒性都有所提升。这表明因果特征带来的好处是模型无关的。
选型建议:
- 追求可解释性:线性模型 +
Causal-lags特征。你可以直接解读系数大小和方向,清晰地说出“设定点每升高1度,2小时后温度预计下降X度”。 - 追求预测精度:梯度提升树或神经网络 +
Causal-all特征。这类模型能更好地捕捉特征间的非线性交互,在整体预测任务上可能表现更优。 - 平衡精度与鲁棒性:梯度提升树(如XGBoost) +
Causal-lags特征是一个很好的折中选择。树模型有一定可解释性(通过特征重要性),且非线性能力强,结合最精炼的因果特征,通常在干预泛化和整体精度上都能取得不错的效果。
因果机器学习不是要取代传统机器学习,而是为其注入“因果常识”,让它变得更聪明、更可靠。这个过程始于数据,经由算法发现,并通过人类智慧修正,最终落地为一个在变化世界中依然坚挺的预测系统。
