基于LSTM 的销售预测系统的设计与实现
胡雨阳,张承,郑明,夏定纯(武汉纺织大学,湖北武汉,430200)
收稿日期:2020-07-09
0引言
在商场终端设备和大后台服务器之间,增加一个中台服务器,可以有效减少大后台服务器的压力,同时在后台服务器出现故障时,可以保证商场数据的安全。此中台服务器主要负责商品信息管理、订单管理及支付等功能,商场管理系统的其他功能仍然由商场大后台服务器负责。
此外,原有后台服务器采取的仍是传统数据统计分析方法,对商场销售大数据利用率和挖掘程度低。
为此,本文采用LSTM 神经网络进行销售预测建模分析,并设计与模型相对应的中台系统调用接口,完成可视化销售预测分析,为商场营销决策提供参考[1]。
1基于LSTM 的预测模型
1.1LSTM 算法
神经网络主要应用在商业智能领域[2],LSTM 是递归神经
网络(RNNs )的一种,解决反向传播过程中存在梯度消失和梯度爆炸现象。通过引入门机制,
解决了RNN 模型不具备的长记忆性问题[3]。LSTM 模型的一个神经元包含1个细胞状态和3个门机制,具体结构如图1所示。
图1LSTM 神经元结构
遗忘门:控制上一时刻记忆细胞中的信息是否积累到当前记忆细胞中,
记为。输入门:控制记忆细胞中信息的加入,
记为。输出门:控制当前时刻记忆细胞中的信息是否输出为当
前隐藏状态,记为。
记忆单元:表示神经元状态的记忆,记为在时刻,LSTM 神经元定义的公式分别为:
=sigmoid([
-1
,]+),=sigmoid([
-1
,]+),
式中,σ表示smigoid 函数,smigoid 和tanh 是2种激活函数;
*
分别表示对应门限的递归连接权重;*分别表示对应的偏
置。
1.2LSTM 销售预测模型的构建
销售预测可分为有参数销售预测和无参数销售预测[4]。有参数预测模型是指根据销售地区、
季节、天气、价格等因素来预测未来的销售状况。无参数预测模型是指使用预测目标作为单变量进行预测。本文采用的是无参数预测模型。预测模型构建过程如下:
(1)读取并定义原始销售量时间序列数据,本文模型训练的数据集来自某商城金装奶粉某一年的月销售量数据。
(2)为消除指标间数量级影响,
采用min-max 标准化公式对原始销售数据进行归一化处理。对应的归一化和反归一化公式分别为:
(3)根据经验,搭建具有2层LSTM 隐藏层的神经网络模型,设置时间步长为2。
ssm框架实现登录功能
(4)将标准化的数据划分为训练集和验证集,并转化为可供模型使用的3维数组。
(5)损失函数选择均方误差。
(6)优化器选择AdamOptimizer ,实现了Adam 算法,优化目标是使均方误差最小。
(7)训练模型,调整超参数,
优化拟合效果。(8)确定超参数,保存为pb 格式的模型文件并命名为milkpowder24,同时指定保存会话对象sess ,其标签设为
mytag 。
模型误差曲线图如图2所示,为设计模型调用接口需要,还需将模型中的输入占位符的name 属性命名为input_x,模型的预测值pred 的name 属性命名为predict 。
2系统设计
2.1系统功能设计
系统主要面向商场内部工作人员,主要功能模块为:用户登录子模块、员工管理子模块、商品管理子模块、功能接口子模块、订单管理子模块和统计分析子模块。由于系统面向商场内
部使用,所以没有注册功能模块,不同的模块对应不同的功能。系统功能结构如图3所示。
用户登录子模块:采用shiro 安全框架,将用户登录信息封装为Token 令牌并与数据库中的用户信息校验,简化实现用户登录系统验证。
员工管理子模块:商场管理人员根据商场员工的新增或者员工信息的变动,对员工信息实现增删改查功能。
商品管理子模块:调整商品编码、价格等信息,实现对商品信息的增删改查。
功能接口子模块:为POS 收银提供系统登录验证、商品查询及订单支付等功能。
订单管理子模块:负责对已支付订单信息的管理。统计分析子模块:利用数据库中商品过去一段时间产生的月销售数据作为预测输入,调用在
jupyter 上
离线训练好的销售
预测模型进行预测,并通过Echarts 可视化分析预测结果。
图2模型误差曲线
图3系统功能结构图
2.2系统架构设计
由于B/S 架构具有客户端零维护、数据实时性较强等特点[5],所以系统采用B/S 系统架构。同时为了使系统具有良好的扩展性和跨平台性[6],采用Java 语言编写并使用IntelliJ IDEA 2019来搭建SSM 框架,服务器选择tomcat ,在数据库方面,采用Mysql 数据库存储数据。在SSM 框架中,Spring 扮演着整个
应用大管家的角。整个应用中所有对象的创建、初始化、销毁以及对象间关联关系的维护,均由Spring 来管理。SpringMVC 作为View 层的实现者,完成用户请求接收功能。SpringMVC 的Controller 作为整个应用的控制器,
完成用户请求的转发及对用户的响应。MyBatis 作为DAO 层的实现者,完成对数据库的增删改查功能。系统整体架构如图4所示。
图4系统整体架构
3LSTM 销售预测模型在系统中的应用
3.1LSTM 销售预测模型调用接口设计
由于系统没有对模型在线学习的需求,只需要模型离线训练好,部署在线上即可。因此选择Tensorflow 的Java 版本API 实现Java 调用模型在线预测。模型调用接口设计步骤如下:
①将之前训练并保存为pb 格式的模型文件放入此预测系统项目文件夹中。
②通过maven 工程的pom 文件导入tensorflow 的JAR 包。③创建名为MilkPowderUtils 的接口类,由于模型输入要求为三维数组,所以同时创建形参为float 类型的三维数组、返回值为float 类型数值的静态模型调用方法。
④在静态模型调用方法中实现模型调用预测的功能逻辑。在此阶段,SaveModelBundle 类负责Java 程序与pb 模型文件建立连接。此类通过调用load 方法,传入模型文件的绝对地址和模型会话对象保存的mytag 标签作为参数加载模型对象。进而通过模型对象获取模型会话对象和name 属性为predict 的预测操作对象。
⑤将预测操作作为参数,
实例化Output 类。⑥形参传入数据通过Tensor 类的create 方法转化为Tensor 类型并赋值给名为input_x 的Tensor 对象。
⑦最终调用模型会话对象,输入需要的数据,计算预测操作结果并将此预测结果处理后作为方法返回值。
⑧Java 程序查询Mysql 获取预测需要的数据,归一化处理并封装,调用静态模型调用方法,传入封装数据,获取预测值,
反归一化后通过Echarts 可视化分析预测结果。3.2模型应用效果
图5是销售预测可视化分析界面,系统预测可视化分析功能运行正常。将实际值和预测值可视化对比分析,直观地展示了金装奶粉上半年的销售情况。
图5销售预测可视化分析界面
4结束语
随着商业智能的迅速发展,神经网络预测技术已经成为
销售预测系统的关键。本文提出的基于LSTM 的销售预测系统的设计,实现了对商品销售信息管理和对商业数据的可视化预测分析,系统运行正常。通过可视化分析,直观、明了地展示了销售情况,为管理者制定营销策略提供重要的参考价值。后期主要的研究工作是改进预测模型,不断完善销售预测系统。
参考文献
[1]闫博,李国和,黎旭.基于ARMA 的销售预测方法与系统实
现[J].计算机与现代化,2014(5):131-135.
[2]邱俊,张瑞林.基于遗传算法的循环神经网络在销售预测中
的应用[J].浙江理工大学学报,2007(3):266-270.
[3]葛娜,孙连英,石晓达,等.Prophet-LSTM 组合模型的销售量
预测研究[J].计算机科学,2019,46(S1):446-451.
[4]李儒勋,张洪伟.基于BP 的CRM 系统销售预测的数据挖掘
[J].计算机应用,2004(11):100-103.
[5]张式富,姜涛,吴效明.基于B/S 的智慧社区健康监护管理系
统软件的设计与实现[J].计算机应用与软件,2014,31(3):4-6.[6]李
军,桂岚,刘飞.基于B/S 结构的交通运输预测系统设计
与实现[J].交通与计算机,2002(2):17-20.

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。