热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

手把手带你玩转需求预测需求预测方法介绍

系列文章目录手把手带你玩转需求预测文章目录系列文章目录前言时序预测算法类型第一代:统计时序预测算法第二代:经典机器学习方法第三代:深度学
系列文章目录

手把手带你玩转需求预测



文章目录

  • 系列文章目录
  • 前言
  • 时序预测算法类型
    • 第一代:统计时序预测算法
    • 第二代:经典机器学习方法
    • 第三代:深度学习预测算法
  • 总结




前言

预测算法的本质是从历史数据中发现pattern,并利用这个pattern推演到未来,形成预测结果。供应链的绝大多数预测场景中,每个预测目标的历史观测值可以在时间轴上串起来形成一条时间序列(Time Series),因此这些预测问题都可以抽象成为一个时间序列预测的问题。

本文会从时序预测技术迭代升级历经的三个发展阶段,来讲述时序预测算法的发展更新过程。

时序预测算法类型

第一代:统计时序预测算法

第一代是传统统计时序预测算法,包括移动平均(Moving Average),指数平滑(Exponential Smoothing),ARIMA,Holt-Winters等。其核心思想都是从历史时间序列上的前后观察值之间的关系里发现模式(pattern),并按这个模式向未来推演。不同的算法所能捕捉的模式的复杂度不同,但基本上都围绕着基线(Level),趋势(Trend),周期性(Seasonality)来组合。

这一代算法最大的优点是简单,这意味着预测结果相对稳定性会高一些,其内在逻辑相对更容易解释和理解。同时,简单带来的缺点是准确性低,另外也很难针对具体问题场景对算法进行调整和定制。它们进行一条时序的预测时,对算力的要求很低,但对于供应链场景常见的大批量(十万、百万级)的时序,它们只能一条一条地跑,虽说可以并行化,但消耗还是较大的。

在应用层面,这类统计算法通常因为其高稳定性而被应用在早期的自动预测-补货系统。为了克服准确性和可调整性的局限,其算法下游需要一个相对较重的后处理体系,利用人工加工的规则来弥补。

从技术层面来看,统计方法有几个显然的局限:最重要的一个是难以引入其他协变量(covariates)或者说特征(features)对时间序列的影响(例如价格调整对商品销量的影响)。对于电商这样有着丰富数据沉淀的业务场景,这个局限的影响显然是巨大的。此外,对于时序上发生的脉冲性的波动,比如各种大促,由于波动时间短幅度大,很难去拟合。

第二代:经典机器学习方法

第二代是经典的机器学习算法,包括线性回归(Linear Regression),支持向量机回归(Support Vector Regression加粗样式),随机森林(Random Forests),梯度提升决策树(Gradient Boosting Decision Trees)及其变种XGBoostLightGBM等等。

跟第一代算法不同,机器学习算法并不是直接用历史来推演未来。它的逻辑是,在历史上的每个时刻ttt,在这个时间切片上,有一些潜在影响预测标的YtY_tYt的因子XtX_tXt,机器学习算法的任务是要在大量历史时间切片里找到XXXYYY之间的一个相对通用、稳定的关系,用函数形式表达就是Y=f(X)+ϵY=f(X)+ϵY=f(X)+ϵ,并把这个关系推演到未来,在未来的某一时刻t+1t+1t+1,如果我们观察到了Xt+1X_t+1Xt+1,就可以预测Yt+1=f(Xt+1)Y_t+1=f(X_t+1)Yt+1=f(Xt+1)。这类算法弥补了第一代算法里难以考虑外生因子(尤其是非线性的复杂关系)的短板,在数据丰富的场景取得了显著的准确性提升,同时牺牲了一定的稳定性、可解释性。在可调整性上,虽然第二代算法更灵活,暴露出更多的超参(Hyper Parameters)可供调整,但其超参取值与具体应用场景之间的关系较为难以把握,很难通过对问题的理解来直接选择合适的超参。

在实际应用中,超参往往是通过暴力网格搜索和一些简单的优化算法来搜索,纯粹依赖算力,而非针对具体问题做有针对性的调整。更具挑战的是,由于这类机器学习算法模型都是高度封装的,其内在算法结构基本无法修改。如果要对机器学习模型注入具有场景语义的信息,只能通过特征工程的方式,把人对场景的理解提炼成关键信号,再加工成数值特征的形式,从算法模型的输入端灌入,然后期待算法能捕捉到这些信号所承载的信息并对预测产生作用。

从技术层面,机器学习算法在引入外生因子的能力上相对第一代算法有显著的优势,但在描述和捕捉时间序列的关系上(比如趋势性和周期性)也有所损失。(机器学习算法无法以很直接和intuitive的方式引入时序关系,需要通过一些复杂的特征工程来弥补,或者通过两代算法模型stacking的方式各取所长。

要是跟下一代的深度学习类算法相比,这些机器学习算法存在很多先天的技术局限。首先是在供应链场景存在的大量类别型的特征,比如seller_id,cate_id,brand_id这些对于描述商品的至关重要,但是由于这些类别型特征的类别数量巨大,如果用one-hot去编码完全不现实。

相比而言,深度学习算法可以用embedding的方式用少数几个浮点数描述这些类别变量。其次是损失函数的选择。机器学习算法大都只有内置的几个选项(例如MSE,MAE),通过超参来选择指定,而供应链场景中有各种各样复杂的评价预测结果的评估口径,它们往往无法直接对应到内置的loss选项。对于深度学习算法,仰仗于自动微分技术,我们可以相对简单的定义自己需要的损失函数,让模型训练调优的目标跟实际业务场景里的目标更加一致。最后,深度学习在端到端的训练、在定制特别的训练策略(比如固定模型的一部分结构/参数,只优化另外一部分)上都提供了更加灵活且简单的实现方式。

第三代:深度学习预测算法

第三代是基于深度学习的算法。得益于深度学习在底层框架设计上的灵活性,前面提到的第一、二代算法的技术局限可以被轻松突破,这给我们提供了一个十分坚实的基础起点。在讨论针对时序预测场景设计的深度算法之前,我们先review一下在其他领域已经取得颠覆性突破的算法,讨论一下可以借鉴的点和必须改进的点。最显著的突破是在图像、语言、搜索推荐这三个应用领域,对应的深度算法大类是卷积神经网络(CNN)、循环神经网络(RNN)、注意力机制(Attention)。这些模型在迁移到时序预测场景后,并没有展示出准确性的优势,稳定性反而降低了。更可怕的是,因为可调整性太高,模型优化的过程中可以改动的东西太多,而每一次改动的效果,随机性较大,导致模型的调整跟模型的效果之间很难建立一个健康的正向的闭环反馈,模型调优就像是在黑暗中乱摸乱撞,“炼丹”的挫折感很强。

究其根本原因,我们认为是这类模型巨大的规模(动辄百万、千万的参数量)跟时序预测场景的有限数据量之间的矛盾,以及这个矛盾所引发的过拟合问题。很多同学可能无法理解为何说时序场景的数据量有限,因为之前我们提到我们有比较长的历史数据积累,有丰富的特征,又有十万、百万级的序列数。表面上,我们的场景有海量数据,但跟图像、语言这些场景的关键差异在于,我们的场景是不稳定的(non-stationary),业务策略、竞争态势等等等等因素都会影响需求,导致最底层的需求体系一直在快速的变化迭代,相对久远的历史(二、三年前)数据所蕴含的信息是否能对当前的预测问题有帮助,这是一个很大的问号。因此,我们场景里数据的“保质期”要短的多。我们的算法模型必须考虑到这一客观约束。

我们真正需要的是设计一个适用于时序预测场景的深度学习算法:既有能提取时序关系的模块,又有能提取外生因子影响的模块;一个模型既涵盖了前两代模型的优势,又可以端到端的基于相对有限的历史数据完成训练。目前行业内大家都还在探索阶段,各方采纳的具体技术路线也多有不同:Amazon最早推出的DeepAR,路线上更多是把第一代算法深度化;Google的TFT(Temporal Fusion Transformer)是在Transformer基础上融入更多时间序列成分(LSTM);DeepMind的Wavenet,在时间轴上实现不同跨度的卷积;n-beats复现了第一代的时序STL拆解逻辑。这些算法各有所长,但有都欠缺一定的普适性,在不同场景效果好坏差异比较大。对我们来说,理想的深度时序算法需要做到准确性高、稳定性高、可调整性好、可解释性强、执行效率高,才能在供应链预测的业务场景上真正发挥作用。

总结

本文以综述性质分享了目前时序预测算法的发展迭代过程,分析了统计时序预测算法、经典机器学习预测算法、深度学习预测算法的优势及缺点。


推荐阅读
  • 人工智能推理能力与假设检验
    最近Google的Deepmind开始研究如何让AI做数学题。这个问题的提出非常有启发,逻辑推理,发现新知识的能力应该是强人工智能出现自我意识之前最需要发展的能力。深度学习目前可以 ... [详细]
  • 干货 | 携程AI推理性能的自动化优化实践
    作者简介携程度假AI研发团队致力于为携程旅游事业部提供丰富的AI技术产品,其中性能优化组为AI模型提供全方位的优化方案,提升推理性能降低成本࿰ ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • 2017亚马逊人工智能奖公布:他们的AI有什么不同?
    事实上,在我们周围,“人工智能”让一切都变得更“智能”极具讽刺意味。随着人类与机器智能之间的界限变得模糊,我们的世界正在变成一个机器 ... [详细]
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 深度学习中的Vision Transformer (ViT)详解
    本文详细介绍了深度学习中的Vision Transformer (ViT)方法。首先介绍了相关工作和ViT的基本原理,包括图像块嵌入、可学习的嵌入、位置嵌入和Transformer编码器等。接着讨论了ViT的张量维度变化、归纳偏置与混合架构、微调及更高分辨率等方面。最后给出了实验结果和相关代码的链接。本文的研究表明,对于CV任务,直接应用纯Transformer架构于图像块序列是可行的,无需依赖于卷积网络。 ... [详细]
  • 读手语图像识别论文笔记2
    文章目录一、前言二、笔记1.名词解释2.流程分析上一篇快速门:读手语图像识别论文笔记1(手语识别背景和方法)一、前言一句:“做完了&#x ... [详细]
  • 在本教程中,我们将看到如何使用FLASK制作第一个用于机器学习模型的RESTAPI。我们将从创建机器学习模型开始。然后,我们将看到使用Flask创建AP ... [详细]
  • 「爆干7天7夜」入门AI人工智能学习路线一条龙,真的不能再透彻了
    前言应广大粉丝要求,今天迪迦来和大家讲解一下如何去入门人工智能,也算是迪迦对自己学习人工智能这么多年的一个总结吧,本条学习路线并不会那么 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 查找给定字符串的所有不同回文子字符串原文:https://www ... [详细]
  • 在搜索数据库中的数据时,您可以使用SQL通配符。SQL通配符在搜索数据库中的数据时,SQL通配符可以替代一个或多个字符。SQL通配符必须与LIKE运算符 ... [详细]
  • Two Sigma人均22万英镑~
    近期原创文章: ... [详细]
author-avatar
国邮国旅刘峰
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有