We propose a novel method for encoding categorical features specifically tailored for forecasting applications. In essence, this approach encodes categorical features by modeling the trend of the quantities associated with each category. In our experiments, this approach shows substantial performance benefits — both in terms of forecasting accuracy and bias — as it allows tree based ensemble models to better model and extrapolate trends.

阅读我们的文章

1

.

简介

这项工作的动机来自于许多客户的预测项目,Artefact ,在这些项目中,我们的提升模型在预测时表现出很高的偏差。通过诊断阶段,我们发现集合学习模型的主要偏差来源之一是其在准确模拟趋势和波动水平方面的挑战。

在下文中,我们将展示为什么以及我们如何使用一种新颖的方法来编码分类特征。基于我们涉及一个客户零售预测项目和各种公共数据集的实验,我们证明这种技术可以有效地减轻偏见并提高准确性。

提升和趋势,为什么复杂?

提升算法很难推断出

提升算法很难对趋势进行建模和推断,因为它们不能预测训练集中没有的/叶子中没有的新值。"线性树"模型试图缓解这个问题,但我们的测试结果显示,这种方法并不确定。

经典的编码方式推动了静态的预测

在提升中采用的最常见的编码方法促进了自变量和因变量之间的静态关系,这反过来又有助于在存在趋势时增加偏差。下图说明了这种现象:

经典的编码方式推动了静态的预测

简化的视觉表现,突出了提升算法中采用的分类特征编码的静态性质

我们承认,上述表述是一种过度简化,因为决策树更加复杂,能够识别基于多个因素的非线性关系。事实上,"颜色为黑色 "的条件可能与 "月份为六月 "有关。在这种情况下,颜色为黑色不会在任何时候都有同样的影响。但是,让我们看一下更大的画面:

  • 为6月份是黑色的颜色指定一个影响仍然不理想,因为2021年6月的影响可能与2022年6月的影响不同。即使我们包括年份,首先,决策边界的建立和识别会变得太复杂,而且,如果训练数据在2022年结束,需要对2023年进行预测,会发生什么?

  • 特征工程是为了协助模型更容易地识别关系。如果我们能够帮助模型在任何时间点上联想到颜色是黑色的影响,而不需要识别复杂的关系,这对模型是非常有利的。因此,...

我们的新方法:分类特征的动态编码

动态编码的基础(V1没有项目级别)。

用一句话来说,我们对分类特征的编码方法可以描述为:我们对每个类别的趋势成分进行建模,并使用这些趋势值来编码该分类特征

下图说明了黑色和金色这两种颜色类别的静态平均编码和基于趋势的编码的区别。

1

展示动态编码原则的插图,其中涉及每个类别的趋势建模

在我们的实验中,我们选择了使用Prophet来提取趋势成分。当然,也可以考虑其他时间序列预测模型。

请注意,静态平均编码意味着在任何时间点上,黑色物品的销售都处于100件/月的平均水平。另一方面,动态编码允许对黑色物品的增长趋势进行核算,并能够在未来进行推断。对于黄金物品,也可以做类似的说明。因此,我们的方法对于那些需要预测的目标变量在各种可用的类别中遵循陡峭趋势的数据集特别有用。

我们的主要重点是使模型更容易适应自变量和要预测的因变量之间的变化关系。因此,这种动态编码方法也可以应用于数字特征。考虑一下价格的例子。虽然价格是数字性的,模型可以直接根据它建立规则,但人们对廉价或昂贵物品的偏好仍然可能随着时间的推移而变化,并遵循特定的销售趋势。例如,在经济危机的背景下,可负担得起的产品可能会遵循一个增加的销售趋势,而昂贵的产品可能会遵循一个减少的趋势。将 "可负担 "视为一个类别,将 "昂贵 "视为另一个类别,我们可以为价格特征提出一个动态编码,就像我们为颜色所做的那样。

需要注意的是,对于数字特征,基础变量和动态编码变量都可以在模型中使用,因为它们将提供不同类型的信息。

更加重视动态特征(带有项目级别的V2版)。

虽然这种新的编码方法是一种改进,但在研究特征重要性时,往往分类特征的重要性还不够高,不足以对预测产生显著影响。为了赋予动态特征更多的重要性,从而促进更好的建模和趋势推断,我们对每个时间序列/项目单独调整编码值。

1

代表动态编码的两个组成部分的公式:类别水平和项目水平

回到我们的颜色的例子,给定两个不同的黑色物品,这使得每个物品的 "黑色 "类别的动态编码可以根据其个别的过去的销售而有所不同。

通过一个简单的例子说明动态编码的计算的表

通过一个简单的例子说明动态编码的计算的表

实验和结果

客户数据集

我们用我们的方法为零售业的一个客户预测销售。我们在广泛的范围内彻底验证了我们的方法,以确保其有效性。以下是关于实验背景的一些数据点:

  • 实验是在9个不同的产品范围内进行的,每个范围都有一个提升(LightGBM)模型。
  • 对于每一个范围,都进行了一个扩大窗口的k倍交叉验证(k=5)。

  • 预测范围:日+1至日+180。

  • 使用两个指标来评估性能:

1

总的来说,该方法被证明是非常有效的,在9个产品范围和5个交叉验证褶皱中,平均绝对偏差减少了9.82%,平均绝对预测精度增加了6.29%

下一节通过在一个公共数据集上的测试来验证我们方法的相关性。

公共商店销售数据集

在这个简化的案例研究中,我们使用商店销售--时间序列预测Kaggle数据集。这个数据集在研究平均销售时间序列时表现出一种陡峭的趋势,使我们的方法特别有意义。此外,选择的预测范围是三个月,这足够遥远,可以从动态编码的额外外推能力中受益。为了演示,我们将数据集限制在2016年3月31日,就在地震发生之前,导致销售曲线变平。

在进行任何编码之前,我们的初始数据集包括大约75%的数字特征,包括滞后、滚动平均值、日历特征和假日事件。剩下的25%由分类属性组成,如产品系列、商店编号、城市和其他。

训练了两个不同的模型:一个采用了用我们的定制方法动态编码的分类特征,而另一个则使用LightGBM对分类特征的本地处理。

通过比较它们的性能,我们观察到动态编码方法有显著的提高。下表提供了一个结果的总结:

LightGBM编码方法和动态编码的RMSE、FA和%Bias的比较

LightGBM编码方法和动态编码的RMSE、FA和%Bias的比较

1

平均每周销售额+3个月预测(动态编码与LightGBM编码方法对比)

正如上图所描述的那样,包含动态编码的模型有效地捕捉到了趋势,并对其进行了推断,而替代模型则很难做到这一点。

使用和限制

我们的方法被证明在时间序列显示出明显的趋势预测范围足够遥远的情况下特别有价值,可以从趋势外推中获益。此外,随着我们动态编码并将更多具有显著预测能力分类特征纳入模型,通过我们的方法实现的预测效果也在增加。然而,必须承认,其他编码方法有其自身的优势,在不同的情况下可能更有优势。此外,还有可能结合两种编码类型,以获得潜在的更好的结果。

结论

  • 传统的分类特征编码技术对于预测来说并不理想,特别是当时间序列表现出陡峭的趋势和预测范围很远的时候。
  • 我们的方法是模型堆叠的变种,因为我们采用了一个先知模型--它拥有建模和推断趋势的卓越能力--来构建分类特征的编码。

  • 我们的实验证明了减少偏差和提高预测准确性的优势。

我们计划在未来几个月发表一篇论文,其中将包括我们的方法和实施的完整细节。敬请关注进一步的更新!

1

Artefact 的媒介博客

这篇文章最初发表在Medium.com上。
在我们的Medium博客上关注我们 !

Artefact Newsletter

Interested in Data Consulting | Data & Digital Marketing | Digital Commerce ?
Read our monthly newsletter to get actionable advice, insights, business cases, from all our data experts around the world!