作者都是各自领域经过审查的专家,并撰写他们有经验的主题. 我们所有的内容都经过同行评审,并由同一领域的Toptal专家验证.
预测是一种利用历史数据和事件来估计未来趋势的技术, 潜在的灾害, 以及受试者的整体行为. 预测可以作为决策分析的概率支持, 估算费用, 收入, 预算计划.
商业预测可分为两类: 定性预测 和 定量预测.
欲了解更多信息,您可以查看 Investopedia的财务预测 底漆.
这两种类型的预测都显示了很多希望,并设法为许多实体创建业务增强.
如果您想了解更多有关预测如何影响市场决策的信息, 这是一个很好的开始 预测市场:基础、设计和应用 作者:Stefan Luckner等人.
我们可以使用定量预测解决的一个问题是需求预测或销售预测.
假设你是一个经营许多商店的零售商, 每家商店都有一个静态的产品库存补充系统,该系统基于季节和市场趋势等特定事件的人为决策.
偶尔,你会遇到这些问题之一,可能会导致两个主要问题:
根据 这是IHL集团对600个家庭和零售商的调查在美国,由于缺货问题,零售商每年损失近1万亿美元的销售额.
“购物者在三次购物中就有一次遇到缺货, 根据报告, 邮件发给了Retail Dive. 在食物, 药品和大众零售商, 他们在五分之一的旅行中遇到缺货的商品, 在百货公司和专业零售商中,这个比例是四分之一, 三分之一的人在电子商店买,” 国际人道法组织成立.
看起来, 这两个问题都会导致收益减少,因为我们要么失去了销售机会,要么在未售出的产品上投入了更多资金, 这意味着拥有短期内不会产生收入的资产来弥补成本.
这显然不利于实体的现金流,为了解决这一风险,我们需要做两件事:
So, 问题是:有什么迹象表明你需要在公司中采用人工智能来帮助你的预测过程?
要做出这个决定,你需要专家回答以下问题:
这些问题的答案应该是一个明确的信号,帮助你决定是否开始将人工智能应用到你的预测策略中.
在许多公司中,人工智能在预测方面的表现都超过了人类, 实现更快的决策和规划以及更可靠的风险管理策略. 这就是为什么 顶级公司正在规划中采用人工智能.
在处理需求预测问题时, 时间序列预测方法可以用来预测每种产品的销量, 从而使企业能够优化库存补充,最大限度地减少上述问题的发生. 然而, 许多模型都难以在单个产品层面进行预测, 或者产品类别层面, 因为缺少必要的功能. 所以,问题是:我们如何让它发挥作用,并最大限度地利用我们的数据?
对于现实生活中的零售商来说,这些问题绝不是微不足道的. 你要么有1000多个产品在数据集中引入了很多非线性 多变量的依赖关系, 或者你需要被告知预计的库存补充量,并提前通知你能够生产或购买它, 或者做任何你需要做的事情,在需求实现之前获得它.
在这种情况下,经典模型就像 华宇电脑 和 美国教育考试服务中心 不会执行,我们需要一个更健壮的方法,比如 RNNs 和 XGBoost这就是为什么我们需要大量的功能创建来解决这个问题.
要做到这一点,我们需要:
在本文中,我们将以XGBoost作为这种模型的一个示例.
此问题所需的特征集主要分为四组:
不像 深度学习(递归神经网络), 机器学习模型如果不为时间序列创建手动特征提取层,就无法获得时间序列中的长期或短期依赖关系 datetime 功能.
可以从日期中提取许多特征,例如:
许多方法只是提取这些时间特征,并将其用作输入和训练模型, 但进一步的工程设计是可以完成的. 我们可以看到, 特色(日), 小时, 一天ofweek)是周期性的, 这意味着它们有一系列重复的值. 一个模特该如何处理这种情况呢?
简短的回答是, 因为模型看到的是00:00离23:00有23个小时的距离, 但事实上, 有一个小时的路程. 解决这个问题的一种方法是将这些特征转化为循环变换.
利用正弦和余弦的概念, 或者向量表示, 我们可以把每一个小时(24小时)换算成一个角度, 使用它们的sin和cos会使模型更容易检测到小时之间的真实比例, 不管周期性如何.
这将消除发生在周期时间特征或任何周期特征中的不连续.
在本文中,我们将使用 公开发现的Superstore样本数据集 并尝试预测某一产品类别的目标月销售额.
同样,我们将使用Python 3.使用以下库的环境:
现在, 我将向您展示如何构建周期特征转换函数并测试它是否有用.
def convert_periodic (val):
θ = 2*np.π* val /期
Sin_period = np.sin(θ)
Cos_period = np.cosθ
返回sin_period cos_period
def convert_month (x):
返回convert_periodic (x, 12)
df(“sin_month”),df [' cos_month '] = zip (* df(“月”).地图(convert_month))
有了这些,我们就可以测试添加的特性是否会提高性能.
X = df.下降([“订单日期”、“销售”、“sin_month”,' cos_month '],轴= 1)
Y = np.log1p (df['销售'])
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size = 0.2、洗牌= False)
我们可以看到, 我们对目标销售特征进行了log1p变换, 因为它是一个倾斜的特征(非正态分布).
现在,我们将在数据上拟合XGBoost回归器.
Y_pred =模型.预测(X_test)
print(f'测试集上没有循环转换的损失是{sqrt(mean_squared_error(y_pred,y_test))}')
测试集上没有循环转换的损失为0.4313676193485837
接下来,我们将尝试使用我们创建的特性.
X = df.drop(['Order Date','Sales'],轴= 1)
Y = np.log1p (df['销售'])
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size = 0.2、洗牌= False)
Y_pred =模型.预测(X_test)
print(f'测试集上循环转换的损失为{sqrt(mean_squared_error(y_pred,y_test))}')
测试集上循环转换的损失为0.33868030449130826
正如我们所看到的,损失从0开始改善.43 RMSE到0.33 RMSE.
根据你的问题,你可以考虑其他一些与时间相关的特征,包括:
这是预测销量所需的主要核心输入功能, 那么如何最大限度地利用销售数据呢? 我们可以使用滞后和自相关的概念来实现这一点.
滞后特性是产品的历史销售记录. 例如, 如果我们把月销量的12个滞后特征作为模型的输入,来预测2020年5月的销量, 这意味着我们将为该模型提供2019年5月至2020年4月之间的数据记录. 这真的很有帮助.
也, 它可以用自相关图来解释,以检查目标特征与其滞后特征的相关程度. 这也有助于在滞后特征中只选择相关特征, 因此我们减少了内存使用和功能冗余.
这就是我们如何在数据框架中添加延迟特性:
对于(3)范围内的I:
df[f'lag_{i+1}'] = df['Sales'].转变(i + 1)
Df = Df.dropna ()
df.头()
在这里,我选择了一个三滞后特征的值来包含在我们的训练集中. 这个特征是一个超参数——您可以根据自相关图选择它,也可以通过尝试许多值并在调优阶段选择最佳值.
X = df.drop(['Order Date','Sales'],轴= 1)
Y = np.log1p (df['销售'])
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size = 0.2、洗牌= False)
Y_pred =模型.预测(X_test)
print(f'测试集上有滞后特征的损失是{sqrt(mean_squared_error(y_pred,y_test))}')
在测试集上,具有滞后和聚合销售特征的损失为0.2862175857169188
现在,RMSE已经提高到0.28、同时使用滞后特性和循环转换.
您可以添加一些其他与销售相关的功能:
资历 是一个概念,用于为商店中的新物品分配资历级别:
一个简单的论点是,价格和促销是造成销售额上升和下降的直接原因之一. 价格是区分不同品类的最好方法之一, 子分类, 以及产品的超级分类.
例如, 假设为每个产品分配了一个类别和一个子类别, 可以创建以下价格特征:
这种聚合可以使用多个主题分组执行多次(假设我们的目标是预测每月需求)。, 如:
此外,还可以添加除 每月 分组研究整体价格的行为.
这种情况在零售商和销售预测者中并不常见, 但这对销售预测模型有很大影响. 库存数据集主要有每个产品的库存数据,每天在每个商店. 由此,我们可以将其与销售数据结合起来,得到每个产品的月周转率. 这个比率将表明一种产品的库存销售一空的速度, 它有两个主要好处:
对于这个, 你需要每个产品的每日库存数据, 还有销售数据, 然后可以计算出存货周转率如下:
提示: 这些聚合是基于时间范围完成的. 例如, 如果我们正在预测每月的销售额, 那么ITO将被计算为上个月的总销售额除以当月的平均库存价值.
总之, 销售预测可以帮助公司增加收入,实现盈利, 前提是他们拥有正确的数据管道并使用正确的特征工程方法. 本文是一个试验,表明各种数据在解决这个问题时都是有用的.
每家公司都应该调查是否需要人工智能来解决其预测问题, 如果是的话, 它将需要专业的人工智能工程师和机器学习工程师的建议来创建自己的销售预测系统.
如果你是一家公司或零售商,愿意应用这种销售预测技术, 从收集你能收集到的所有数据开始, 尤其是日常销售, 每日库存, 以及日常交易.
一旦你掌握了这些数据, 你可以用它来增加你的收入和优化库存补充策略, 让您的企业利用现有资源获得最高利润, 如上面的几个例子所示, 以及主要零售商使用的销售预测方法.
通过收集销售, 股票, 价格数据, 为他们创建数据库, 预处理他们, 并执行特征工程来创建可解释的特征, 然后应用像XGBoost或RNN这样的预测方法.
销售预测过程分为四个步骤:数据收集, 数据预处理, 工程特性, 和 数据建模.
华宇电脑和美国教育考试服务中心对于总销售额来说是完美的, 但在产品层面上, 像XGBoost或RNN这样的东西表现得更好.
因为它解决了需求和销售两个主要问题, 哪些是库存过剩和缺货问题. 这将带来更高的收入和更好的现金流.
销售潜力回答的问题是,“某种品牌的产品能卖出多少台。?另一方面,销售预测回答的问题是:“将售出多少台??”
世界级的文章,每周发一次.
世界级的文章,每周发一次.