我们提出了一种专门针对预测应用的新型分类特征编码方法。从本质上讲,这种方法通过对与每个类别相关的数量趋势建模来编码分类特征。在我们的实验中,这种方法在预测准确性和偏差方面都显示出巨大的性能优势,因为它允许基于树的集合模型更好地建模和推断趋势。.

阅读我们的文章

.

导言

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

下面,我们将展示 为什么 和 如何 我们采用了一种新颖的分类特征编码方法。基于我们对客户零售预测项目和各种公共 datasets 的实验,我们证明这种技术可以有效减少偏差并提高准确性。.

提升和趋势,为何如此复杂?

提升算法很难进行推断

提升算法很难对趋势进行建模和推断,因为它们无法预测训练集中未出现/叶子中没有的新值。“线形树”模型试图缓解这一问题,但我们的测试结果显示,这种方法并没有得出结论。.

经典编码推动静态预测

提升过程中最常用的编码方法会促进自变量和因变量之间的静态关系,这反过来又会增加趋势的偏差。下图说明了这一现象:

Classical encodings push towards static predictions

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

我们承认上述表述过于简单,因为决策树更为复杂,能够识别基于多种因素的非线性关系。事实上,“颜色为黑色 ”的条件可能与 “月份为 6 月 ”相关联。在这种情况下,"颜色为黑色 "在任何时候都不会产生相同的影响。但是,让我们从大处着眼:

  • 将 6 月份的黑色作为单一的影响因素并不理想,因为 2021 年 6 月的影响可能不同于 2022 年 6 月的影响。即使我们将年份包括在内,首先,决策边界的建立和识别会变得过于复杂,而且,如果培训 data 在 2022 年结束,而需要对 2023 年进行预测,会发生什么情况呢?

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

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

动态编码的基础(V1,无项目级)

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

下图说明了静态平均值编码和基于趋势的编码在黑色和金色两个颜色类别中的区别。.

插图展示了动态编码原则,其中包括对每个类别进行趋势建模

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

请注意,静态平均值编码意味着在任何时间点上,黑色物品的销售量平均为每月 100 件。而动态编码则可以考虑黑色物品的增长趋势,并能推断出未来的增长趋势。黄金物品也有类似的情况。因此,我们的方法在 datasets 中特别有用,因为在这种情况下,需要预测的目标变量在各个可用类别中都呈现出急剧的趋势。.

我们的主要重点是使模型更容易适应自变量和待预测因变量之间不断变化的关系。因此,这种动态编码方法也可应用于数字特征。以价格为例。虽然价格是数字特征,模型可以直接根据价格建立规则,但人们对价格低廉或昂贵物品的偏好仍可能随着时间的推移而变化,并遵循特定的销售趋势。例如,在经济危机的背景下,平价产品的销售量可能会上升,而昂贵产品的销售量可能会下降。将 ‘实惠 ’视为一类,‘昂贵 ’视为另一类,我们可以为价格特征提出一种动态编码,就像我们为颜色所做的那样。.

值得注意的是,对于数值特征,基础变量和动态编码变量都可用于模型,因为它们将提供 不同类型的信息。.

更加重视动态特征(v2,项目级别)

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

表示动态编码两个组成部分的公式:类别层面和项目层面

回到我们的颜色示例,给定两件不同的黑色商品,这样就可以根据每件商品过去的销售情况,对其 “黑色 ”类别进行不同的动态编码。.

Table illustrating the calculation of dynamic encoding through a simple example

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

实验和结果

客户端 dataset

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

  • 实验在 9 个不同的产品范围内进行,每个范围使用一个增强(LightGBM)模型。.
  • 对于每个范围,都使用扩展窗口进行了 k 倍交叉验证(k=5)。.

  • 预测范围:Day+1 至 Day+180。.

  • 使用两个指标对性能进行评估:

总体而言,该方法被证明是高效的、, 因此,偏差的平均绝对值减少了 9.82%,预测精度的平均绝对值提高了 6.29% 跨越 9 个产品范围和 5 个交叉验证褶皱。.

下一节将通过在公共 dataset 上进行测试来验证我们方法的相关性。.

公共商店销售 dataset

在这个简化的案例研究中,我们使用了 商店销售额 - 时间序列预测 Kaggle dataset。在研究平均销售时间序列时,这个 dataset 呈现出陡峭的趋势,这使得我们的方法尤为重要。此外,我们选择的预测时间跨度为三个月,这足够长,可以从动态编码的额外外推功能中获益。为演示起见,我们将 dataset 限定为 2016 年 3 月 31 日,当时正好发生了地震,导致销售曲线变平。.

在进行任何编码之前,我们的初始 dataset 包含约 75% 的数字特征,其中包括滞后、滚动平均值、日历特征和假日事件。其余 25% 包含分类属性,如产品系列、商店编号、城市等。.

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

通过比较这两种方法的性能,我们发现动态编码方法的性能显著提高。下表为结果摘要:

Comparison of RMSE, FA, and %Bias between LightGBM encoding method and dynamic encoding

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

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

如上图所示,包含动态编码的模型 有效捕捉并推断趋势, 而另一种模式则很难做到这一点。.

使用和限制

事实证明,我们的方法在时间序列出现以下情况时尤为重要 明显趋势 和 预测期 距离足够远,可以从趋势外推法中获益。此外,当我们动态地编码并纳入 更多分类特征 与 重大预测 权力 的模型中、, 通过我们的方法所取得的预测效果增加了. .不过,必须承认,其他编码方法也有自己的优势,在不同情况下可能更有优势。此外,还可以将两种编码方式结合起来,可能会取得更好的效果。.

结论

  • 传统的分类特征编码技术并不适合预测,尤其是当时间序列呈现陡峭趋势且预测范围较远时。.
  • 我们的方法是模型堆叠的一种变体,因为我们采用了一个先知模型来构建分类特征的编码,该模型在建模和推断趋势方面拥有卓越的能力。.

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

我们计划在未来几个月内发表一份文件,其中将包括我们的方法和实施的完整细节。. 敬请期待 以获取更多更新信息!

中号 Blog by Artefact。.

本文最初发表于 Medium.com.
在我们的 Medium Blog 上关注我们!