陈明露,江伟炜
(西南交通大学,制造业产业链协同与信息化支撑技术四川省重点实验室,成都 611756)
随着经济大环境下汽车配件市场竞争的不断加剧,汽车配件销售企业面临着生产,仓储,物流等业务成本不断增加风险。要想在竞争中脱颖而出,不断发展并且获得更多的利润,企业必须对市场具有敏锐的嗅觉和清晰的认识。伴随着计算机技术的不断发展,利用其对配件市场需求量进行高效准确的预测,并以此作为数据支撑制定高效精准的配件销售决策是各企业目前迫切需要解决的问题。本文从汽车配件代理商的角度出发,依托汽车产业链协同平台[3]数据空间中海量的多链条配件业务数据,研究配件市场需求量的预测问题,为配件代理商的销售决策提供数据支持。
针对配件需求预测问题,已经有不少学者做出研究,他们利用若干种预测方案,取得了一定的效果[4-7]。经过分析发现,他们训练模型的数据来源普遍只源于某一个供应链条上的配件销售数据。其中单链条数据训练预测模型,得出的配件市场需求量仅仅是本供应链条内的配件需求量,其他链条内的同种配件的需求量则不能预测出来。然而配件市场需求量为市场上多链条下游服务站的配件需求量的总和,这就导致单链数据预测值往往与实际市场需求量相差较大。
如图1 所示,本文依托于汽车产业链协同平台,将多链条的整车保有数据、配件销售数据以及配件故障数据等配件需求相关数据资源,从平台数据空间中进行数据抽取,经历抽取、清洗、加载三个阶段集中写入配件代理商专业数据库中,将其作为模型训练数据。在实际应用中,充分利用平台多链数据有条件共享的优势,提升配件市场需求量预测的准确度。
在使用多链数据作为模型训练数据集的基础上,本文还利用组合预测模型提高模型配件需求量的预测精度。近年来,产品市场需求量预测模型构建一直是国内外研究的热门领域。由于企业的销售业务数据多是时变数据,所以产品需求量的预测通常是利用时间序列数据进行模型的训练。其中神经网络因其优良的非线性拟合能力被广泛应用于时间序列预测问题[8-9]。由于产品需求量预测属于复杂问题,历史时间序列数据中通常同时包含线性成分与非线性成分,并且需求量预测值的影响特征因素往往较多,所以单一的预测模型往往不能很好拟合其中的复杂特性,为了解决这一问题,组合预测模型被广泛使用[10-13]。
根据以上研究现状分析,本文针对汽车产业链协同平台上代理商配件销售数据以及需求影响特征数据进行实验,构建随机森林(RF)和长短期时间记忆神经网络模型(LSTM)的组合预测模型。首先利用随机森林(RF)算法对影响配件销量的多种特征(包括配件故障率、适配车型整车保有量以及配件滞销比等)进行选取,提取出最优特征子集,消除特征集中的噪声,并降低其维度。然后将其提取的特征子集作为LSTM 的训练数据,得到预测结果,结果表明,该组合预测模型相比于单一组件模型具有更高的预测精度和更快的收敛速度。
图1 代理商多价值链数据来源示意图
价值链数据的具体表现形式是产品供应链业务数据,主要指供应商,制造厂,代理商等链上的节点企业日常业务中的销售、采购、库存和计划等信息数据[14]。本文研究所依托的汽车产业链协同平台是一个为汽车供应链中小型企业提供信息化系统服务,同时实现联盟成员之间的信息共享的第三方平台。目前在平台上已经积累了大量的整车销售、配件采购、配件销售和售后服务数据。其中平台数据空间面向汽车产业全生命周期,采用分布式多元存储的方式,将汽车产业多价值链数据整合汇聚在一起,为本文多链数据集构建提供数据支持。由于配件市场需求预测具有较强的时效性,所以本文采用增量抽取方法,在数据空间对应的数据表上构建插入、修改、删除三个触发器,然后在源数据表操作数据的时候,将其经过统计计算再进行插入、修改并存入特征属性表中,其具体过程如图2 所示。
图2 多价值链数据抽取示意图
明确了多链条数据来源,还需要对需要提取的数据内容进行确定。本文以汽车产业链协同平台上多链条数据为实验对象。其为代理商某配件的销量以及需求影响特征因素时间序列,以蓄电池配件为例,其具体数据格式如表1 所示。
表1 配件需求量特征集结构表
需求特征主要包括以下几种。
(1)整车保有量:指目标配件各个型号的适配车型的市场保有量,可通过整车销售数据间接得到。
(2)配件故障率:指配件损坏的数量占总体整车保有量的比重。
(3)配件使用时间:本文选取对应时间段内所有维修配件的平均使用时长作为该值。
(4)配件滞销比率:指目标配件销售过程中,滞销数量与实际销售量之间的比率。
(5)配件急缺比率:指代理商目标配件急缺数量占服务站该配件采购计划数量的占比。
(6)配件退货率:目标配件退货数量与销售数据的比值为该配件的退货率。
基于前文采集的多链条数据集,在模型构建过程之前,需要对该数据集进行清洗与预处理,避免脏数据或者不规范数据对模型的预测结果产生影响,其中本文具体的数据预处理过程如下所示。
(1)异常值处理:如果某特征值超过标准差三倍以上,则认定为异常值,按照缺失值处理。
(2)数据填充:有可能在数据库记录过程中某条数据样本丢失或不全。这些缺失值取前后时刻该特征值的平均数。
(3)格式内容转换:本文从日期,数值格式,以及内容异常数据这几个方面对数据的格式进行检测,然后对格式不符的数据进行相应的转换。
(4)数据归一化:本文采用min-max 标准化将输入数据均映射到[0,1]区间内,从而消除各特征值之间的相互影响。其数学表达式如公式(1)所示。
其中xmin和xmax分别表示样本数据之间的最小值和最大值,x 表示当前时刻的观测值。
LSTM 神经网络模型因其独特的记忆单元机制具有对长时间跨度历史数据的感知能力,适合用于对历史数据具有长时间依赖的配件市场需求量的预测。同时配件需求量预测属于复杂问题,其影响因素众多,如果将所有特征均作为LSTM 模型的输入数据进行训练,则容易导致模型因为网络结构复杂以及参数较多在训练过程中出现过拟合现象。并且配件需求量时间序列数据通常具有周期性以及随机性的特点,其中的噪声通常影响模型预测精度。为了解决这一问题,本文选取随机森林模型选取指定个数的最优特征子集作为LSTM 模型的输入数据,组合模型具体构建过程如图3 所示。通过实验验证,经过随机森林优化的LSTM陷入过拟合的概率较低,并且其在加快模型收敛速度的同时,一定程度上增加了模型的预测精度。
(1)随机森林原理分析
随机森林是一种Bagging 集成学习算法,既可用于解决分类问题,也能用于回归预测。在解决预测问题时,其基本思想是首先利用bootstrap(自助采样)方法生成n 个数据集,其次对每个数据集构建一个决策树并将它们随机整合形成森林(其中各个决策树之间没有依赖关系),最后计算各个决策树预测结果的平均值作为最终预测结果[15]。随机森林模型通常可以避免过拟合的原因是其不仅对样本进行采样,同时对属性特征也会进行采样。首先其对特征进行选取之前会先判断特征的重要性,并对每个特征按照重要性降序排序,然后按重要性顺序删除一定比例的特征,得到特征子集,接着重复以上筛选过程,直到得到预期m 个特征,在通过重复以上过程得到若干个特征集以及对应的袋外误差,选取误差最小的特征集作为最优特征子集。
图3 配件需求预测组合模型结构示意图
(2)LSTM 原理分析
LSTM 神经网络模型[2]是RNN(循环神经网络)的改进模型,其解决了RNN 的梯度消失问题,引入信息长时间选择性有效的机制。其内部结构在RNN 的基础上进行了优化,增加了输入门(input gate),遗忘门(forget gate),输出门(output gate)三个逻辑控制单元,且各自联结到一个乘法元件上[12]。具体结构如图4所示。
图4 LSTM隐藏层内部结构示意图
LSTM 模型中各门控单元的描述如下:
①遗忘门:其输入数据包含上一时刻隐藏层的输出数据ht-1以及当前时刻的输入数据xt,然后将两个输入数据传入sigmoid 函数中,得到一个属于[0,1]区间的ft值,该值会直接传递到上一时刻的长期记忆Ct-1中,从而决定是否让上一时刻学到的信息通过或者部分通过。其具体公式如下:
其中σ为 sigmoid()函数,Wf是遗忘门的权重矩阵,中括号表示两个向量联结,bf为遗忘门的偏置项。
②输入门:其可分为两个部分,一部分与遗忘门类似,通过sigmoid 函数对上一时刻隐藏层的输出数据ht-1以及当前时刻的输入数据xt进行非线性变化,生成0-1 的数值用于决定输入信息,另一部分是一个tanh层用来生成新的候选值。其具体公式如下:
③输出门:其首先同样利用sigmoid 函数对上一时刻隐藏层的输出数据ht-1以及当前时刻的输入数据xt进行非线性变化,然后使用tanh 将值缩放到-1 到1间,再与sigmoid 得到的输出逐对相乘,从而得到过滤之后的模型输出。其具体公式如下所示。
(1)随机森林参数选取
随机森林模型的使用较为简单,在训练过程中,对参数进行准确的调节有利于提高预测精度。其重要参数主要有以下三个。
①n_estimators:即模型决策树的个数,由于随机森林不易过拟合,所以通过增加组件决策树的个数可以有效减少模型的误差。
②max_features:表示在构建决策树时选取的最大特征数,在选择最优特征子集时提取的特征个数不能超过该值。
③min_sample_leaf:表示叶子节点最小的样本数,如果分支后子节点的训练样本个数低于该值,则分支不被允许。
由于人工手动调参通常费事费力,且容易产生疏漏,本文使用 Python 语言中 sklearn 包中的 grid-SearchCV(网格搜索)函数,让其在一定范围内对随机森林的最优参数组合进行选取,最优值如表2 所示。
表2 随机森林模型超参数初始值
(2)LSTM 模型构建
上文对随机森林参数选取过程进行了描述,本文将经过其提取的与配件需求量具有较高相关度的最优特征子集,作为LSTM 模型的输入数据集。LSTM 模型的构建过程如图5 所示。
图5 LSTM模型构建流程图
首先为了避免数值问题以及脏数据对模型预测结果造成影响,需要对模型的输入数据进行清洗与预处理,由于神经网络模型属于有监督学习,所以需要对输入数据集进行适配处理,转换为适用于监督学习问题的输入输出两部分数据。模型的结构为三层网络,包括输入层、隐藏层和输出层。模型的输入层接受的是由t 个连续时刻观测值组成的输入向量,输出层的t+1时刻的预测值。LSTM 隐藏层的节点个数初始值设为256。然后本文选取自适应估计(Adam)作为优化方法。模型激活函数选取ReLU,其可以在一定程度上缓解梯度消失问题,公式如下所示。
通过以上构建过程,本文使用Python 语言,采用机器学习库Keras 对LSTM 模型进行构建、训练以及评估。模型的超参数设置如表3 所示。
为验证RF_LSTM 配件需求预测模型的准确性与高效性,本文采用汽车产业链协同平台上某代理商2017 年到2019 年的蓄电池配件销售数据以及上下游企业共享的整车保有数据和配件故障数据,构建实验数据集对模型进行训练和测试。本文实验环境如表4所示。
表3 LSTM 模型超参数初始值
表4 实验环境配置列表
为了评估模型预测精度,本文选取均方根误差(RMSE)和平均绝对误差(MAE)作为评价指标。其公式如下所示。
其中,yi表示预测数据的真正值,表示预测值,N 表示样本数量。
本文选取随机森林模型与LSTM 模型以及ARIMA-LSTM 组合预测模型作为对比实验模型,对本文模型的预测性能进行对比分析。为了更好的定量比较各实验模型的预测精度,表5 对各模型的评估指标RMSE 和MAE 的值进行对比。
表5 实验模型评价指标取值对比表
对比发现,经过随机森林优化特征集的RF-LSTM配件需求量预测模型的RMSE 值和MAE 值比其他对比实验模型都低,说明其预测精度更高,预测的配件需求量与实际需求量之间的误差更小。ARIMA-LSTM 组合模型效果次之,对于单一组件模型,LSTM 模型对该数据集的预测效果好于随机森林。
本文首先提取汽车产业链协同平台上多价值链配件需求特征数据,整合了多链数据集,然后构建随机森林与LSTM 的组合预测模型,利用随机森林选取特征,优化LSTM 网络结构,提升模型预测精度。最后利用实验数据集对模型预测性能进行了实例验证。结果表明,多链数据集的整合与组合预测模型的建立对配件需求量的预测精度有一定程度的提升。未来的工作我们可以使用其他模型组合方案,或者利用诸如遗传算法等优化算法对模型的参数设置进行优化,以便进一步提高模型预测性能。