【问题标题】:how to build an linear regression model for daily predictions如何为日常预测建立线性回归模型
【发布时间】:2020-06-07 09:20:19
【问题描述】:

我需要创建一个预测模型来预测每天的商品数量...

这就是我的数据在 DB 上的样子...

item id |date         | quantity

1000    |2020-02-03   | 5

我所做的是将日期转换为:

  • 年号
  • 一年中的第几周
  • 工作日编号

我使用 RegressionFastForest、RegressionFastTree、LbfgsPoissonRegression、FastTreeTweedie 在包含 100,000 个项目的数据集上训练了这个模型

但结果不太好(RMSE SCORE OF 3.5 - 4

我做错了吗?

如果有问题,我正在使用 ML.NET

谢谢

【问题讨论】:

  • 尝试使用时间序列预测(示例 - docs.microsoft.com/en-us/dotnet/machine-learning/tutorials/…)而不使用“项目 ID”列。或者,您可以尝试在模型生成器中运行数据,看看它是如何工作的 (docs.microsoft.com/en-us/dotnet/machine-learning/…)
  • 但预测应该由 itemId 为特定的未来日期
  • 好的,所以项目 ID 是分类的。我认为这只是数据库中的主键。还是试试 Model Builder。它应该能够处理日期。
  • 不幸的是,构建者暂时不使用预测场景......系列预测是解决这个问题的唯一方法?

标签: machine-learning ml.net


【解决方案1】:

时间序列预测有多种技术。但要点:我们不寻求valuedate 的依赖。相反,我们正在寻求value[i]value[i-1] 的依赖。

最常见的技术是 ARIMA 模型家族和循环神经网络。我建议阅读它们。但是,如果您没有太多时间或其他事情,那么有些事情可以提供帮助。它是 Auto ARIMA 模型。

自动 ARIMA 的实现至少存在于 Python 和 R 中。这是 python 版本:

from pyramid.arima import auto_arima

model = auto_arima(y)

y 是您的时间序列。

P.S. 尽管它被称为 auto 模型(这意味着算法将自行选择最佳超参数),但您仍然应该了解它的作用:p , q, P, QS 的意思。

【讨论】:

  • 如果你理解你:你的意思是我需要在模型中添加之前的项目数量以在每个点之间建立连接?
  • 好吧,如果你想使用 ARIMA - 不。我的示例中的 y 值是一个简单的一维时间序列值数组
【解决方案2】:

直接对数据应用线性回归存在几个问题。

1) 如果item id 是分类索引并且不反映项目的物理属性,那么它是分类特征。使用OneHotEncoding 将其替换为回归友好的标签。

2) 如果您假设您的数据可能周期性地依赖于一天/周/月的时间,请使用这些函数中的 sincos。它不适用于年份,因为它不是周期性的。 Here 是一个很好的 Python 示例指南。

祝你好运!

P。 S. 我通常在分类特征(OneHotEncoding)的稀疏表示的任务中使用 LogisticRegression 作为基准。它不如最先进的 NN 解决方案,但让我知道基准是什么样的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-30
    • 2021-02-25
    • 2014-05-01
    • 2017-03-06
    • 1970-01-01
    相关资源
    最近更新 更多