如何预测基于内容的需求

数据挖掘 Python 时间序列 机器学习模型 预报 预测
2022-02-15 23:06:25

这是我在 ds S​​tackExchange 的第一篇文章,所以如果有什么不清楚的地方,请保持温和,让我知道 :)

我有很多产品(> 1M),我将所有购买的产品保存在带有时间戳的数据库中。(“购买数据”)
每个产品都有“内容特征”(例如产品尺寸、产品安全等级等)

“购买数据”如下所示:

| 时间戳| 产品编号 | 内容特点 1 | ... | 内容特征 N |

其中每一行都是购买带有时间戳的产品。

我的主要目标是获得明天最想要的产品,我将问题转化为预测第二天的需求,或者将每个产品 id 和日期分类为高需求或低需求),

我在这些设置中遇到了两个主要问题:

  1. 生成需求数据:我想将“购买数据”转换为一天的需求(“需求数据”)-意思是我将数据按产品id和日期分组,
    然后我计算行数并将其保存为'freq ' (并且还删除行重复)。
    问题是每天的最低产品频率是 1 而不是 0

例如:如果产品 #1 在星期日购买了 3 次,在星期三购买了 2 次,则购买和需求数据将是:

“购买数据”fi(product id) 映射到内容特征 i:

   | time stamp      | product id | content f 1 | ... | content f N |
   | Sunday  05:20   | 1          | f1(1)       | ... | fn(1)       |
   | Sunday  08:11   | 1          | f1(1)       | ... | fn(1)       |
   | Sunday  10:25   | 1          | f1(1)       | ... | fn(1)       |
   | Wednesday 08:10 | 1          | f1(1)       | ... | fn(1)       |
   | Wednesday 16:20 | 1          | f1(1)       | ... | fn(1)       |

“需求数据”:

   | day             | product id | content f 1 | ... | content f N | freq |   
   | Sunday          | 1          | f1(1)       | ... | fn(1)       | 3    |     
   | Wednesday       | 1          | f1(1)       | ... | fn(1)       | 2    |  

但是,如果产品 #1 在星期一没有购买,则不会有任何行,因为在该时间戳没有该商品的购买数据。

由于有超过 1M 的产品,我想避免创建频率为 0 的行,

有没有一种方法可以在不使用 0 个需求行的情况下从大量项目(产品)的采购数据中创建(或设计)需求数据?

  1. 基于内容的时间序列:创建“需求数据”后,我想将其用作时间序列。
    我的问题是我需要将数据分成超过 100 万个系列,每个产品/项目 id 一个,这些系列也非常稀疏......我想找到一种方法来使用“内容特征”作为输入使用时间序列并让模型学习使用基于相关内容特征的某种时间序列平均值。

对基于内容的系列时间预测进行建模的最佳方法是什么?

1个回答

欢迎来到本站。我会鼓励你以不同的方式思考你的问题。你关注的是“今天卖出了什么”,而你应该关注的是“谁在历史时间线上买了什么”。

您正在寻找的东西被称为推荐系统,并且(一般来说)有两种类型:

  1. 基于内容 - 您应该根据产品的属性推荐什么。该算法基本上是在说,“你买了早餐麦片,这里有其他可能与你的麦片搭配的产品......”
  2. 基于社区 - 您应该根据购买产品的人的属性推荐什么。该算法基本上是在说,“你是一个 30 岁以下没有孩子的女性。其他 30 岁以下没有孩子的女性也喜欢这些产品......”

我会假设你没有关于你的客户的信息,所以让我们专注于基于内容的推荐器。通过考虑产品的属性,您走在了正确的轨道上,但您应该同时考虑它们(1)比昨天更长的时间线以及(2)产品及其属性如何相互关联。需要属性 X 的人可能也需要属性 Y,这(很可能)跨越多个产品,并将产生对这些产品的更高需求。

开始使用您选择的语言/工具研究基于内容的推荐系统,您最终将获得所需的算法。从那里您还可以考虑收集用户数据,然后长期转向基于社区的推荐器。