我需要预测任何给定客户的下一个订单数量。
我在以下说明的模式中有数据。自2018年中以来,这些数据基本上是客户的订单。有2000多个行(数据不是很多,但这是我所拥有的)
字段的架构和说明:
CustomerId
:来自数据库的客户ID
ProductId
:来自数据库的产品ID
ProductTypeId
:产品子类型的ID。例如,如果是水,则子类型可以是气泡,矿物质等。
Quantity
:订购数量。这需要预测
CDate
:这是生成订单的日期。
我需要的是,我应该能够提供ProductId
,ProductTypeId
,ClientId
和CDate
(这将是以后的日期),我应该找回给定客户可以订购的Quantity
。
到目前为止,我已经尝试使用ML.NET网站中给定的回归示例进行此操作。由于数量总是被预测为零,因此它们不起作用。
在进一步研究中,我发现这是由于CDate领域造成的。
因此,在使用OneHotEncoding
将此分类字段转换为数字之后,预测不再是零,而是也不准确。测试数据和预测值相差甚远。
结果是,这不是处理日期的正确方法。
我试图找到基于Date和其他功能进行预测的资源,但是找不到它们。出租车费用预测没有日期。其他样本与我需要的无关。
我可以使用哪种解决方案?时间序列?如果要预测每个客户/每种产品/每种产品类型以及日期的购买量,该如何培训?
我是机器学习的新手。任何指针都会有所帮助。讨厌问,但是ML.NET中有效的解决方案将对我有很大帮助。
如果在ML.NET中不可能,那么我愿意使用Python(这也是它的新功能!),我愿意学习。
谢谢。
数据文件可以为downloaded from here。
答案 0 :(得分:0)
要使机器学习预测,您需要自己了解结果的因果关系。含义:
* 您只有在拥有心理模型后才能编程模型。
我可以做出两个有意义的贡献:
功能工程:
您正在使用CustomerId
,ProductId
,ProductTypeId
,CDate
来预测产品的Quantity
。没有人会阻止您创建一个使用这组输入来生成输出的模型,但是这些输入是否与输出相关?
对我来说似乎不是那样。我认为要建立一个明智的模型,您将需要更好的输入变量。其中一些可能是先前订单的大小,潜在买家的成交额等。这些因素可能会带来更好的产出。
因此,考虑改善输入功能。
型号选择:
在这种情况下,似乎合奏会比使用单个模型更好。特别是Linear Regression和Decision Trees似乎很重要。
我没有可以帮您的捷径。要了解并获得有关使用哪种模型以及何时使用的模型的直觉,您将不得不多次尝试使用它们。
最后,要训练模型,有一种标准方法。您将输入数据分为5个部分(即每个部分20%)。然后,将模型分为四个部分进行调整,并在第五部分上测试调整。接下来,您再选择另外四个,依此类推。
* 对于神经网络不是正确的。隐藏层剥夺了真正理解预测的能力。