AWS机器学习数据

时间:2017-02-04 02:28:22

标签: amazon-web-services machine-learning amazon-machine-learning

我正在使用AWS Machine Learning回归来预测特定工作日/时间内餐厅一行的等待时间。 今天我有大约800k的数据。

示例数据:

restaurantID(rowID) weekDay(分类) 时间(分类) tablePeople(数字) waitingTime(数字 - 目标)
1 sun 21:29 2 23
2 fri 20:13 4 43
...

我有两个问题:

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

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

实施例: 我希望发送rowID标识符,并根据每个餐馆数据(忽略其他数据)返回不同的预测。

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

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

3 个答案:

答案 0 :(得分:2)

设置模型的方式存在一些问题

1)你拥有它的形式的时间永远不应该是绝对的。您的模型将时间12:29和12:30视为两个完全独立的属性。所以它永远不会使用它在12:29学到的事实来预测12:30会发生什么。在您的情况下,您应该将时间设置为数字。不确定亚马逊ML是否可以自动为您转换它。如果不是将小时乘以60并添加分钟数。另一个有趣的事情是通过选择半小时或更宽的间隔来捣乱你的时间。您可以通过将(h * 60 + m)除以某个数字来实现,具体取决于您需要多少个桶。所以尝试120来获得2小时的间隔。通常,您拥有的数据越多,您可以拥有的间隔越小。关键是每个桶中都有很多样品。

2)您应该考虑从输入数据中删除restaurantID。拥有它将导致模型过度适应它。因此,根据从id:3或id:9的餐馆学到的事实,它无法对id为5的餐馆做出预测。如果您拥有关于每家餐厅的大量数据并且您不关心将您的预测推断到不在培训集中的餐馆,那么拥有餐厅ID可能没问题。

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

答案 1 :(得分:1)

您应该认为与预测相关的内容是准确的,您应该使用您的专业知识来定义数据中需要的功能/属性。

例如,一天中的时间不仅仅是一个数字。根据我在餐厅的有限理解,我会放弃会议记录,只关注时间。

我肯定会为每家餐厅创建一个模型,因为餐厅的受欢迎程度或所服务的食物类型会对等待时间产生影响。使用Amazon ML可以很容易地创建许多模型,因为您可以使用SDK构建模型,甚至可以使用AWS Lambda(这意味着自动)重新计划模型。

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

答案 2 :(得分:0)

与这篇文章的一些答案相反,我认为resturantID会有所帮助,它实际上提供了有价值的信息。如果每个餐厅的数据量很大,则可以为每个餐厅训练模型并获得较高的准确性,但是如果数据量不足,resturantID将非常有用。

1)想象一下,如果数据集中只有两列:restaurantID和waitingTime。然后,您是否认为测试数据中的restaurantID可以帮助您找到大致的等待时间?在最简单的实现中,每个饭店ID的等待时间将是waitingTime的平均值。因此,无疑,restaurantID是有价值的信息。现在,您的数据集中有更多功能,您需要检查restaurantID是否与其他功能一样有效。

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

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