【问题标题】:ML.NET predict quantity of customer's orderML.NET 预测客户订单数量
【发布时间】:2019-10-16 17:16:31
【问题描述】:

我需要预测任何给定客户的下一个订单数量。

我在下面解释的架构中有数据。这个数据基本上是2018年年中以来的客户订单。有2000多行(数据不是很多,但这是我得到的)


架构和字段说明

CustomerId : 来自 DB 的客户 ID

ProductId : 来自数据库的产品 ID

ProductTypeId :产品子类型的 ID。例如,如果 Water 是产品,子类型可以是 Sparkling、Mineral 等。

Quantity : 订购数量。这需要预测

CDate :这是生成订单的日期。


我需要的是,我应该能够提供ProductIdProductTypeIdClientIdCDate(这将是一个未来的日期),我应该回来Quantity 给定的客户可以订购什么。


到目前为止,我已经尝试使用来自 ML.NET 网站的给定回归样本来做到这一点。它们不起作用,因为 Quantity 总是被预测为零。

在进一步研究中,我发现这是因为 CDate 字段。 因此,在使用OneHotEncoding 将此分类字段转换为数字后,预测不再为零,但也不准确。测试数据和预测值相差甚远。

事实证明,这不是处理日期的正确方法。

我尝试查找基于日期和其他功能进行预测的资源,但找不到它们。出租车票价预测没有日期。其他样品与我需要的无关。


我可以使用哪种解决方案?时间序列?如果我想预测每个客户/每个产品/每个产品类型和日期的购买量,我该如何训练?

我是机器学习的新手。任何指针都会有所帮助。不想问,但 ML.NET 中的有效解决方案将帮助我很长的路要走。

如果在 ML.NET 中不可能,那么我愿意使用 Python(这也是新手!)并且我愿意学习。

谢谢。


数据文件可以是downloaded from here

【问题讨论】:

  • 是的,我做到了。但不知何故,我认为它不适用于我正在尝试做的事情(可能是我错了)。 i)我正在尝试按日期(而不是示例中的每月)预测销售数量 ii)我正在尝试学习处理数据集中的日期时间字段。在示例中,没有日期时间,但日期时间被拆分为月份和年份以匹配其所需的输出如何使用该示例来获得我想要做的事情?感谢您的链接。

标签: machine-learning time-series regression prediction ml.net


【解决方案1】:

要进行机器学习预测,您需要自己了解结果的因果关系。含义:

*只有在你自己有了心智模型之后,你才能对模型进行编程。


我可以做出两个有意义的贡献:

  1. 特征工程:

    您正在使用CustomerIdProductIdProductTypeIdCDate 来预测产品的Quantity。没有人阻止您创建一个模型,该模型采用这组输入来生成输出,但是这些输入是否与输出相关?

    在我看来不是这样。我认为要制作一个合理的模型,您将需要更好的输入变量。其中一些可能是先前订单的规模、潜在买家的周转率等。这些因素可能会产生更好的产出。

    所以,考虑改进输入功能


  1. 模型选择:

    在这种情况下,集成似乎比使用单个模型更好。特别是,Linear RegressionDecision Trees 似乎相关。

    没有捷径可以交给你。要了解并直观了解要使用哪些模型以及何时使用它,您必须多次尝试它们。


最后,为了训练模型,有一种标准方法。您将输入数据分成 5 个部分(即每个部分 20%)。然后用四个部分调整模型并在第五部分测试调整。接下来,您选择另一组四个,依此类推。


*不适用于神经网络。隐藏层剥夺了真正理解预测的能力。

【讨论】:

    猜你喜欢
    • 2016-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多