AWS 机器学习数据

AWS Machine Learning Data

我正在使用 AWS 机器学习回归来预测特定 weekday/time 餐厅排队的等待时间。 今天我有大约 800k 数据。

示例数据:

restaurantID(rowID)weekDay(分类)time(分类)tablePeople(数字)waitingTime(数字-目标)
1 太阳 21:29 2 23
2 fri 20:13 4 [= 28 = 28 = ]43
...


我有两个问题:

1) 我应该将时间用作分类时间还是数字时间? 最好分成两个字段:分和秒?

2) 我想在同一个模型中获得我所有餐厅的预测。

示例: 我希望根据每个餐厅数据(忽略其他数据)发送 rowID 标识符和它 returns 不同的预测。

我试过了,但它对任何 rowID 返回相同的预测。为什么?

我应该为每家餐厅准备一个模型吗?

你set-up你的模型

的方式有几个问题

1) 你所拥有的形式的时间永远不应该是绝对的。您的模型将时间 12:29 和 12:30 视为两个完全独立的属性。所以它永远不会使用它了解 12:29 的事实来预测 12:30 会发生什么。在您的情况下,您应该将时间设置为数字。不确定 amazon ML 是否可以自动为您转换。如果不只是将小时乘以 60,然后再加上分钟。另一件有趣的事情是通过选择半小时或更长时间的间隔来分桶化你的时间。您可以将 (h*60+m) 除以某个数字,具体取决于您想要的桶数。所以要尝试 120 以获得 2 小时的间隔。通常,您拥有的数据越多,您可以拥有的间隔越小。关键是每个桶里要有很多样本。

2) 您真的应该考虑从输入数据中删除 restaurantID。将它放在那里会导致模型在其上 over-fit。因此,它将无法根据从 id:3 或 id:9 的餐厅中学到的事实对 id:5 的餐厅做出预测。如果您有很多关于每家餐厅的数据并且您不关心将您的预测外推到不在训练集中的餐厅,那么拥有餐厅 ID 可能没问题。

3) 您永远不会发送 restaurantID 来预测有关它的数据。它通常的工作方式是您需要选择要预测的内容。在您的情况下,可能 'waitingTime' 是最有用的属性。所以你需要发送weekDay,时间和人数,模型会输出等待时间。

您应该考虑与预测准确相关的内容,并且您应该使用您的领域专业知识来定义数据中需要的 features/attributes。

例如,一天中的时间,不仅仅是一个数字。根据我对餐厅的有限了解,我会放弃分钟,只关注时间。

我当然会为每家餐厅创建一个模型,因为餐厅的受欢迎程度或所提供的食物类型会影响等待时间。借助 Amazon ML,您可以轻松创建许多模型,因为您可以使用 SDK 构建模型,甚至可以使用 AWS Lambda(即自动)安排模型的重新训练。

我不确定名为 tablePeople 的功能是什么意思,但一般建议是拥有尽可能多的相关功能,以获得更好的预测。例如,月份或季节可能也很重要。

与此 post 的一些答案相比,我认为 resturantID 有帮助,它实际上提供了有价值的信息。如果每家餐厅都有大量数据,那么您可以为每家餐厅训练一个模型并获得很好的准确性,但如果您没有足够的数据,那么 resturantID 会提供很多信息。

1) 想象一下,如果您的数据集中只有两列:restaurantID 和 waitingTime。那么你不认为测试数据中的 restaurantID 可以帮助你找到大致的等待时间吗?在最简单的实现中,每个 restaurantID 的等待时间将是 waitingTime 的平均值。所以 restaurantID 绝对是一个有价值的信息。现在您的数据集中有更多特征,您需要检查 restaurantID 是否与其他特征一样有效。

2) 如果您决定保留 restaurantID,则必须将其用作分类字符串。它应该是您数据集中的非参数特征,也许这就是您没有得到正确结果的原因。

关于日期和时间的问题,我同意其他答案,考虑到您正在为餐厅建立模型,每小时时间可能会给出更准确的结果。