ML.NET预测客户的订单数量

时间:2019-05-31 04:12:48

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

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

我在以下说明的模式中有数据。自2018年中以来,这些数据基本上是客户的订单。有2000多个行(数据不是很多,但这是我所拥有的)


字段的架构和说明

CustomerId:来自数据库的客户ID

ProductId:来自数据库的产品ID

ProductTypeId:产品子类型的ID。例如,如果是水,则子类型可以是气泡,矿物质等。

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

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


我需要的是,我应该能够提供ProductIdProductTypeIdClientIdCDate(这将是以后的日期),我应该找回给定客户可以订购的Quantity


到目前为止,我已经尝试使用ML.NET网站中给定的回归示例进行此操作。由于数量总是被预测为零,因此它们不起作用。

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

结果是,这不是处理日期的正确方法。

我试图找到基于Date和其他功能进行预测的资源,但是找不到它们。出租车费用预测没有日期。其他样本与我需要的无关。


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

我是机器学习的新手。任何指针都会有所帮助。讨厌问,但是ML.NET中有效的解决方案将对我有很大帮助。

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

谢谢。


数据文件可以为downloaded from here

1 个答案:

答案 0 :(得分:0)

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

  

* 您只有在拥有心理模型后才能编程模型。


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

  1. 功能工程:

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

    对我来说似乎不是那样。我认为要建立一个明智的模型,您将需要更好的输入变量。其中一些可能是先前订单的大小,潜在买家的成交额等。这些因素可能会带来更好的产出。

    因此,考虑改善输入功能


  1. 型号选择:

    在这种情况下,似乎合奏会比使用单个模型更好。特别是Linear RegressionDecision Trees似乎很重要。

    我没有可以帮您的捷径。要了解并获得有关使用哪种模型以及何时使用的模型的直觉,您将不得不多次尝试使用它们。


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


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