3、特征工程基础:时间特征提取、统计特征、滞后特征与滑动窗口构建
各位同学好,我是老张。在风电行业摸爬滚打了十几年,今天咱们聊聊特征工程里最基础、也最容易被忽视的一块——时间特征、统计特征、滞后特征和滑动窗口。
说实话,很多刚入行的朋友一上来就堆模型,结果效果不好。其实啊,问题往往出在特征上。你想想看,风电功率预测本质上是个时间序列问题,时间本身携带了大量信息。我见过太多人直接把时间戳扔进模型,那肯定不行。
3.1 时间特征提取:把时钟拆开看
时间特征,说白了就是把一个时间戳拆成多个维度。为什么要拆?因为模型看不懂「2024-03-15 14:30:00」这种格式,它只认数字。
小时特征:一天24小时,风电出力有明显的日变化规律。比如我所在的西北风场,下午2点到5点往往是一天中风最大的时候。所以小时特征很关键。
季节特征:这个不用我多说吧?冬天风大,夏天风小,这是常识。但要注意,季节是循环的,12月之后是1月,不是13月。所以直接用1-12的数字编码会有问题。
月份特征:比季节更细粒度。我习惯用正弦余弦变换来处理月份,避免数值跳跃。
核心要点:时间特征要体现周期性,不能简单用线性编码。
举个例子,我去年在山东一个海上风场做项目,发现模型在3月和9月总是预测不准。后来一查,原来是春分和秋分前后大气环流变化大,单纯用月份特征不够。后来我加入了「距春分天数」这个特征,效果立竿见影。
3.2 统计特征:别小看均值方差
统计特征听起来简单,但用好了能救命。我个人习惯把过去N个点的数据做统计,提取三个核心指标:
- 均值:反映整体水平。比如过去1小时的平均风速,比当前瞬时风速更稳定。
- 方差:反映波动程度。方差大说明风不稳定,这时候预测要更保守。
- 偏度:这个很多人忽略。偏度反映数据分布是否对称。正偏度说明大风出现的概率低但强度大,这对功率预测很重要。
我的经验:偏度特征在极端天气预警中特别有用。有一次台风来临前,偏度值突然飙升到2.5以上,我立刻调整了模型权重,避免了预测偏差。
你可能会问:这些统计特征窗口选多大合适?嗯,这个没有标准答案。我一般会试3个窗口:15分钟、1小时、6小时。短窗口捕捉快速变化,长窗口反映趋势。
3.3 滞后特征:让模型记住过去
滞后特征,就是拿过去的值当特征。比如t-1时刻的风速、t-2时刻的功率。为什么需要这个?因为风电系统有惯性,现在的出力跟过去几分钟的状态密切相关。
我曾经犯过一个错误:把所有滞后特征都加进去,结果模型过拟合得一塌糊涂。后来我总结出两个原则:
- 滞后阶数不要太多:一般取3-5个就够了。风电系统的记忆长度有限,太远的过去意义不大。
- 要结合物理意义:比如风速的滞后特征比功率的滞后特征更重要,因为风速是原因,功率是结果。
避坑指南:千万不要把未来数据当特征!我见过有人不小心把t+1时刻的数据混进训练集,结果测试时效果奇好,一上线就崩。这叫数据泄露,是时间序列预测的大忌。
3.4 滑动窗口:动态看数据
滑动窗口,说白了就是用一个固定大小的窗口在时间轴上滑动,每次取窗口内的数据做计算。这个技术跟统计特征、滞后特征经常搭配使用。
我常用的滑动窗口有三种:
| 窗口类型 | 窗口大小 | 用途 |
|---|---|---|
| 短窗口 | 3-6个点(15-30分钟) | 捕捉瞬时变化,用于超短期预测 |
| 中窗口 | 12-24个点(1-2小时) | 反映短期趋势,用于短期预测 |
| 长窗口 | 96-192个点(8-16小时) | 捕捉日周期规律,用于中长期预测 |
举个例子,我在做15分钟超短期预测时,只用短窗口的均值和滞后特征。但做4小时短期预测时,必须加入中窗口的方差和偏度,因为时间越长,不确定性越大。
下面是我画的一张知识结构图,帮你理清这四类特征的关系:
最后说一句,特征工程没有银弹。我每次做新项目,都会先花一周时间做特征分析,看看哪些特征真正有用。你想想看,模型再强,喂进去的是垃圾,出来的还是垃圾。所以,别急着调参,先把特征搞明白。
本章小结:时间特征要体现周期性,统计特征要选对窗口,滞后特征要控制阶数,滑动窗口要匹配预测时长。四者结合,才能构建出高质量的特征集。