我想根据1)之前的历史记录,2)一些子类信息和3)任意月份信息来预测给定客户的销售额。月份对某些客户可能有影响,但对其他客户可能没有。信息大致如下所示:
account_id sub_account month sales3 1 12 903 1 1 1203 2 12 1003 2 1 501 1 12 201 1 12 501 1 12 3001 3 12 50
因此,虽然我可以使用某种类型的编码,但我并不确定哪些是重要的,哪些不是。这“感觉像是”某种围绕值的无监督聚类,但不确定最好的方法是什么。
回答:
这绝对是一个监督学习问题(一个回归问题,因为你的目标变量是连续的)。此外,由于你有客户的之前历史记录,你实际上面对的是一个时间序列预测问题。
解决这个问题的方法有很多(很多…),但一个简单且相当有效的方法是使用自回归来解决问题:
- 选择一个
window_size(回顾的月份数 – 例如5) - 对于每一对(account_id, sub_account)和一组
window_size连续月份,生成:sales_5m_ago, sales_4m_ago, ... ,sales_1m_ago ==> sales this month作为训练实例。
这样,你将得到一个包含许多销售历史子集的数据集,这些子集可以用来预测接下来一个月会发生什么。然后,你可以用它构建任何回归模型(例如,RandomForestRegressor),并且要预测测试客户的销售额,你只需要提供之前的window_size销售数据,模型就会给你下个月的预测。
最后,如果你想要/有原始数据中的额外特征,你只需在创建训练集时将它们与你的月销售值一起分组即可:
sales_5m_ago, sales_4m_ago, ... ==> sales_5m_ago,temperature_5m_ago, rain_days_5m_ago, sales_4m_ago,temperature_4m_ago, rain_days_4m_ago, ...