1、预测系统技术选型
基础层:
Hbase、ClickHouse、Hdfs 用来做数据存储
框架层:
以 Spark RDD、Spark SQL、Hive 为主, MapReduce 程序占一小部分,是原先遗留下来的,目前正逐步替换成 Spark RDD。 选择 Spark 除了对性能的考虑外,还考虑了 Spark 程序开发的高效率、多语言特性以及对机器学习算法的支持。
工具层:
比较常用的包有 xgboost、numpy、pandas、sklearn、scipy 和 hyperopt 等。
Xgboost:它是 Gradient Boosting Machine 的一个 C++ 实现,xgboost 最大的特点在于,它能够自动利用 CPU 的多线程进行并行,同时在算法上加以改进提高了精度。
numpy:是 Python 的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵,比 Python 自身的嵌套列表结构要高效的多(该结构也可以用来表示矩阵)。
pandas:是基于 NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。
sklearn:是 Python 重要的机器学习库,支持包括分类、回归、降维和聚类四大机器学习算法。还包含了特征提取、数据处理和模型评估三大模块。
scipy:是在 NumPy 库的基础上增加了众多的数学、科学以及工程计算中常用的库函数。例如线性代数、常微分方程数值求解、信号处理、图像处理和稀疏矩阵等等。
Hyperopt 是一个用于超参数优化的 Python 库,广泛应用于机器学习和深度学习模型的自动化调参。它通过贝叶斯优化算法(如随机搜索、模拟退火和 Tree-structured Parzen Estimator 算法 TPE)来寻找最优的超参数组合
算法层:
用到的算法模型非常多
1. 机器学习算法主要包括 GBDT、LASSO 和 RNN :
GBDT:是一种迭代的决策树算法,该算法由多棵决策树组成,所有树的结论累加起来做最终答案。我们用它来预测高销量,但历史规律不明显的商品。
RNN:这种网络的内部状态可以展示动态时序行为。不同于前馈神经网络的是,RNN 可以利用它内部的记忆来处理任意时序的输入序列,这让它可以更容易处理如时序预测、语音识别等。
LASSO:该方法是一种压缩估计。它通过构造一个罚函数得到一个较为精炼的模型,使得它压缩一些系数,同时设定一些系数为零。因此保留了子集收缩的优点,是一种处理具有复共线性数据的有偏估计。用来预测低销量,历史数据平稳的商品效果较好。
2. 时间序列主要包括 ARIMA 和 Holt winters :
ARIMA:全称为自回归积分滑动平均模型,于 70 年代初提出的一个著名时间序列预测方法,我们用它来主要预测类似库房订单量,这种平稳的序列。
Holt winters:又称三次指数平滑算法,Holt-Winters方法通过引入季节性因素来扩展了传统的霍尔特线性趋势方法。这种方法可以进一步分为加法模型和乘法模型两种类型,主要区别在于季节性波动的大小。加法模型适用于季节性变化幅度相对较小的情况,而乘法模型则适用于季节性变化幅度较大的情况。
具体来说,Holt-Winters方法包括三个基本组件:水平(level)、趋势(trend)和季节性(seasonality)。这些组件共同作用,使得模型能够捕捉到数据中的长期趋势、短期波动以及周期性的季节性模式。我们用它来预测季节性和趋势都很明显的商品,比如 服装类、节日礼品。
3. 结合业务开发的独有算法包括 WMAStockDT、SimilarityModel 和 NewProduct 等:
WMAStockDT:库存决策树模型,用来预测受库存状态影响较大的商品。
SimilarityModel:相似品模型,使用指定的同类品数据来预测某商品未来销量。
NewProduct:新品模型,顾名思义就是用来预测新品的销量。
2 、预测模型逻辑流程
考虑参数如下:
生成历史时序:将历史销量、价格、库存等数据按照规定格式生成时序数据。
节假日因子:计算节假日与销量之间的关系,用来平滑节假日对销量影响。
周日因子:计算周一到周日这 7 天与销量的关系,用来平滑周日对销量的影响。
促销因子:计算促销与销量之间的关系,用来平滑促销对销量的影响。
因子平滑:历史销量是不稳定的,会受到节假日、促销等影响,在这种情况下进行预测有很大难度,所以需要利用之前计算的各类因子对历史数据进行平滑处理。
时序预测:在一个相对平稳的销量数据上通过算法进行预测。
因子叠加:结合未来节假日、促销计划等因素对预测结果进行调整。
3、决策系统技术选型
决策优化系统利用精准的预测数据结合运筹学技术得出最优的决策,并将结果提供给更上层的业务执行系统或是业务方直接使用,比如。
- 商品补货:考虑在什么时间,给哪个 RDC 采购什么商品,采购量是多少?
- 商品调拨:考虑在什么时间,给哪个 FDC 调配什么商品,调配量是多少?
- 仓储运营:在大促来临之际,仓库和配送站要增配多少人手、多少辆货车?
详情参考我上篇文章:智慧仓储-AI人工智能在仓储中的应用-CSDN博客
欢迎来踩我的代码仓库,一起学习,与君共进 :
learning-rec: 推荐系统 基于pytorch,召回模型 ,排序模型