一、业务背景
1、蔚来汽车简介
蔚来汽车成立于2014年11月,是高端智能电动汽车市场的先驱及领跑者。蔚来的使命是创造愉悦的生活方式。蔚来旨在打造一个以智能电动汽车为起点的社区,与用户分享欢乐、共同成长。
围绕社区,蔚来汽车共有5大版块业务,分别是:
- NIO House
- NIO Life
- NIO Power
- NIO Service
- NIO Certified
蔚来汽车旨在构建全球创新的智能能源服务体系,本文将重点介绍NIO Power这部分业务。NIO Power 是基于移动互联网的加电解决方案,拥有广泛布局的充换电设施网络,依托蔚来云技术,搭建了“可充可换可升级”的能源服务体系,为车主提供全场景化的加电服务,主要包括家充桩2.0、家用快充桩、超充桩、换电站、一键加电等,用户可通过蔚来APP充电地图搜索加电资源。
蔚来拥有丰富的车型体系,包括六座智能电动旗舰SUV ES8、中大型五座智能电动SUV ES7(或EL7)、五座全场景智能电动SUV ES6、五座智能电动旗舰轿跑SUV EC7、五座智能电动轿跑SUV EC6、智能电动旗舰轿车ET7及中型智能电动轿车ET5。
2、时序预测背景
对于时序预测,首先要回答的一个问题是时序数据是什么。
时序数据,就是序列随时间变化的数据。时间序列分析,一般有时域和频域两种分析方法。时序预测的本质是在时域和频域层面探索时间序列变化的内在规律。
下图描述的是时域(temporal domain),横坐标是时间,纵坐标是某个测量信号的数值。时域能够最直观地反映序列随时间的变化。
时域分析一般包括周期、季节和趋势这三类规律:
- 周期性:重复的上升、下降过程,从哪来回哪去;
- 季节性:固定频率的上升、下降,多为先验因素;
- 趋势性:长期保持增长或者下降。
另一种时序的分析方法是频域分析,下图展示的就是某个时间序列的频域(frequency domain),反映的是序列频率的变化,横坐标是信号的频率,纵坐标是信号的振幅或能量等物理量。
频域分析有个重要的概念叫做谱密度,其核心思想是:信号是由少数主频叠加而成的。
- 谱密度:信号由少数主频叠加而成
上述这一思想在其他领域也会频繁被使用,例如将时间序列进行主成分分解等。
3、换电站需求预测
(1)常见任务
时序预测的常见任务可以按照输入变量数量、输出序列长度、输出序列时间跨度这3种维度进行划分:
①按照输入变量数量划分,包括:
- 单变量:单个变量
- 多变量:至少两个变量
②按照输出序列长度划分,包括:
- 单输出:预测长度等于1
- 多输出:预测长度大于1
③按照输出序列时间跨度划分,包括:
- 短期预测
- 中期预测
- 长期预测
此外,输出变量也有单变量和多变量之分,这种方式可以拆解为多个不同的上述任务处理。
欢迎大家通过蔚来加电地图 查看附近的补能资源,让加电比加油更方便(链接如下):
https://chargermap.nio.com/pe/h5/static/mchargermap/?btn=rounded&channel=vxofficial&wv=lg
(2)应用场景
如上图所示,需要对全国1000多个换电站进行预测,其预测的应用场景主要包括:
①新站选址
对于新建换电站,需要对不同地址的需求量进行预测,从而选出最佳换电站的建站地址。
②错峰充电
换电站的目的是把低电量电池换进来,把满电电池换出去;
由于电网每天24时段存在峰谷平电价差,如果将电尽可能多的充在“谷”时,这样充电的电费成本也会降低;
③电池调度
由于电池是可分离的,因此电池需要根据换电站的实际需求进行调度以满足用户日常和节假日的出行换电需求。
(3)业务需求
基于上述应用场景,会产生以下的业务需求:
- 短期预测:预测未来24小时的单量
- 中期预测:预测未来30天的单量
- 长期预测:预测未来12个月的单量
(4)算法任务
基于上述3类业务需求,转化成以下3类基于Seq-to-seq的算法任务:
- 多变量-多输出的短期预测
- 多变量-多输出的中期预测
- 多变量-多输出的长期预测
二、关键挑战
1、多序列的复杂季节性
(1)不同换电站的序列不同
如下图所示,不同换电站对应序列的周期性是不相同的。
显然,换电站A、换电站B和换电站C在每天的周期性变化不同。
(2)序列间的季节性不一致
除了周期性,不同换电站序列的季节性是不相同的;
显然,换电站A、换电站B和换电站C在相同节假日的季节性不同。
2、时间特征的漂移
(1)节假日时间不固定
不同年份的春节等大型节假日的时间是不固定的。
(2)预测具有时间先验
常规的监督学习是基于X变量来预测y,是一个f(X)问题;而对于时序预测,未来的时变变量t是已知的,因此会变成f(X,Xy)问题。
正如刚才所言,节假日时间是不固定的,所以常规的监督学习并不适用,而预测的时间先验就显得尤为重要。
3、增长与竞争
(1)电区房用户增长
电区房一般建在换电站周边3km范围内,其覆盖用户是持续增长的。
(2)换电站间的竞争
换电站的新建与废弃,都会对用户造成影响,导致周边单量的突变。因此,增长和竞争都是非常重要的因素。
三、算法实践
1、系统架构
首先介绍算法系统架构的大概情况:
(1)数据
- 数据通过数据仓库进行存储。
- 采集的数据主要包括属性数据、运营数据、订单数据、用户数据、车辆数据、天气数据等常规数据。
(2)特征
- 特征引擎:主要包括分布性、周期性及相关变量
- Embedding引擎:主要包括常规的token、value、positional、temporal等embedding
(3)模型
- 特征引擎为机器学习模型服务,Embedding引擎为深度学习服务。
- 模型算法的演进路线为:ARIMA、Prophet、LGB、TCN、CRNN、Informer、DCN等。
(4)组合
- 为提升模型效果,基于原模型会进行一些模型融合。
- 包括max、avg、min等统计组件,以及LR、SVM、GBDT、DQN等模型组件这两个部分。
(5)服务
- 通过算法部署平台,将以上各个组件及服务进行生产和线上化。
2、机器学习模型
对于时间序列预测模型,常用的机器学习模型主要包括以下3类:ARIMA,Prophet,LGB。这3类模型的优缺点如下:
(1)ARIMA
①优点
- 简单易行,可解释性强。
- 数据量要求低。
- 计算速度较快,可以对每个站在线拟合推理。
②缺点
- 仅支持单变量。
- 无法特征工程。
- 准确率低。
③适用场景:项目初期冷启动
(2)Prophet
①优点
- 简单易行,可解释性强。
- 数据量要求低。
- 计算速度更快,可以对每个站在线拟合推理。
②缺点
- 仅支持单变量。
- 无法特征工程。
- 准确率较低。
③适用场景:项目初期迭代
(3)LGB
①优点
- 准确率较高。
- 简单易行,可解释性强。
- 支持批量预测,计算速度更快。
②缺点
- 迭代模型等于迭代特征。
- 迭代特征存在瓶颈。
- 对类别特征利用不充分。
③适用场景:项目中期迭代
3、深度学习模型
前文提到,机器学习的可操作性以及模型效果都是有限的,会遇到瓶颈,因此引入深度学习模型:
① 深度学习模型架构
时序预测任务所涉及到的CNNs、RNNs和Transformers等模型都属于生成模型,具有统一的架构(unified architecture),这样的架构有两个重点部分,一个是Embedding引擎部分,另一个是编码器-解码器部分,如下图所示:
- TCN模型的编码器和解码器主要是1D卷积网络
- CRNN模型的编码器和解码器主要是1D卷积网络和RNN网络
- Informer模型的编码器和解码器主要是Transformer网络
- DCN模型的编码器和解码器主要是2D卷积网络
② 架构Embedding引擎
系统架构中的Embedding引擎主要包括Token Embedding、Value Embedding 、Positional Embedding、Temporal Embedding这4个部分;这4个部分针对的数据或特征是不同的,其中Token Embedding针对属性变量,Temporal Embedding针对时间相关变量,而Value Embedding和Positional Embedding则针对其他相关变量;最后将以上4类embedding进行叠加和融合,最终得到一个稠密的特征向量。
下面对这4类embedding进行详细的介绍:
- Token Embedding
Token Embedding主要用来解决多序列的问题。
Token常见于自然语言处理,是“词”的数字化表示;此处使用token用来表达属性变量。
具体来说,对于监督学习的一组变量X和y,需要增加属性变量来标明是来自A换电站还是B换电站,因此需要通过token embedding来解决此类问题。
我们所用到的属性变量主要包括换电站本身表征、换电站所属区域(位于城区还是城际)、换电站所属位置(建在商场、服务区还是景点等)等这几类和业务相关的、固有的属性。
- Value Embedding
Value Embedding主要用来解决竞争与增长方面的问题。
在某个换电站附近新建一个站,或者下线一个站,该换电站的订单往往会产生突变;而这样的竞争与增长又是容易被忽视的相关变量,因此不能仅考虑单序列维度,而是要综合考虑区域维度。从用户角度,根据用户车辆、电池的类型对用户进行区分(标准续航或长续航),并对区域范围内换电站的数量以及单量进行统计和聚合,形成Value Embedding。
- Positional Embedding
Positional Embedding主要用来解决复杂季节性问题。
例如,同样是国庆节,不同换电站的序列变化差别很大。如何把握不同的变化位置,需要使用类似transformer的Positional Embedding方法,来标记不同序列在不同季节性下的变化位置。
- Temporal Embedding
Temporal Embedding主要用来解决两个问题,一个是节假日时间不固定问题,另一个是时间先验问题。
对于第一个节假日不固定问题,我们的节假日包括阳历节日和农历节日;根据序列的时间周期可以拆分成小时、天、周、月、年等常规周期;对于节假日时间的对齐方式,包括硬对齐和软对齐两种方式。硬对齐主要指序列按照周、月、年等方式进行序列对齐,而软对齐主要是指将序列进行傅里叶变换,找到序列的主频,借助序列的频域信息进行对齐。
对于第二个时间先验问题,如下图所示,预测的时间数据已知,但是其它相关输入变量未知,这就造成了输入数据的维度不一致。
对于上述问题,通过填充未知的其他变量令输入数据的维度一致,并根据位置的标记区分已知变量和未知变量,最终可以得到输出的预测变量。
③ 卷积模块设计
DCN部分中卷积层的设计,首先面临如下的思考:假设输入序列长度等于L,第i个卷积层的卷积核大小等于2i+1,步长等于1,需要多少卷积层?
这里涉及到两个概念:
- 因果卷积。
- 时间序列本身存在因果关系,即在某一时间点t,只能获取历史信息,而无法获取未来信息。
- 使用下图所示的单边卷积,用来保证序列的时间因果关系。
- 感受野。
- 感受野主要是指将一个特征点映射回到原始输入,所覆盖的范围。
- 需要保证卷积神经网络可以覆盖到输入时间序列的长度范围。
- 感受野可以通过下图的表格计算,得到的n就是需要设置的卷积层数
确定了卷积层的层数,将卷积层通过残差层子模块,像搭积木一样连接成整体的网络模块。
4、模型融合
模型融合方面,有三个问题值得思考:
- 加法还是减法?
- 减法主要包括残差、GBDT、Shortcut等。
- 加法主要包括stacking等方法。
- 分类还是回归?
- 传统的预测一般是回归问题。
- 分类问题往往会涉及概率问题,通过投票选择可以获得一定的信息。
- 向上、向下还是躺平?
- 使用基模型进行预测,可通过强化学习对预测效果进行反馈。
5、实践效果
模型效果评估,选择绝对误差(MAE)和百分比误差(MAPE)来衡量。如下表所示,随着模型的迭代,MAPE的提升相对有限且不够理想(理想误差在5%以内,实际调优后的结果在23%左右)。
下图是对未来30个点的数据进行多步预测的结果,纵坐标是所有换电站叠加的总和,并进行了一个线性变换(不影响结果的趋势):
对比上图LGB结果、DCN结果和实际值,可以看出:
- LGB模型对节假日过拟合,且不利于处理节假日预测。
- Informer模型对长序列的季节性表现不佳,但DCN模型可以使用卷积通道对时变变量进行对齐,有利于处理节假日预测。
至于最终结果仍然停滞在23%左右遇到瓶颈,这里就引入了一个对生成模型的思考。近期大火的GPT也是一种生成模型,但是本质上这类模型并没有标准答案,可以将其理解成一种“创造”;而时序预测也是一种生成模型,但是这个模型是有标准答案的,同时也会受到外界环境如疫情、出行等诸多不可预测的因素所影响,而模型的训练也容易对过去的表现规律过拟合。
四、总结展望
未来计划:
- 更快
实时化:数据和结果的更新响应更快。信息差很大程度决定了模型的预测效果,之前在实时特征上做了很多工作,接下来会将更多离线特征转成实时特征,尽可能多地获取实时化的数据,不断更新模型的预测结果。
高效化:开发效率更快。将统一的架构提炼形成算法库,实现算法的低代码开发和迭代。
- 更好
纵向追求算法卓越。行业的发展很快,接下来会不断关注其他优秀前沿专家的相关工作。
横向追求功能完善。时序除了预测还包括其他任务,接下来会尽可能使用一种架构覆盖全方面的业务需求。
- 更有价值
组织内实现高效赋能。将现有的工具推广到更多有类似需求的其它部门,赋能其它业务的快速发展。
组织外实现开源共创。适当时机可能会通过开源相关工程技术,源源不断地为预测算法注入新的思路和方法
五、Q&A
Q1:深度学习数据训练集要达到怎样的规模,其效果才会优于传统的机器学习模型?
A1:现有模型使用的数据大概是3年的历史数据。首先,换电站的建立是逐步累积的,不同的换电站,会存在“冷启动”这样的问题;而文中所展示的架构可以有效地实现这种“冷启动”问题。至于深度学习训练集的规模,这个主要还是凭借经验,很难有明确的界限。对于新建换电站,深度学习模型的效果确实并不理想;对于已投产2-3年的换电站,其深度学习的效果要明显优于机器学习。
Q2:自动驾驶普及之后,交通流的预测是否还有意义?
A2:预测的意义肯定是有的,对节假日、早晚高峰以及重要路段等车流量突增情况的提前预知,对车联网的调度意义重大,而仅采用自动驾驶的“临时调整”策略则是低效且滞后的。