我目前正在BigQuery中设计一个数据仓库。我打算存储用户数据,如过去的购买或废弃的购物车。
这似乎非常适合手动分析趋势并获得洞察力。但是,如果我想利用机器学习,例如,向一组用户推荐产品? 我已经研究过Google ML Engine和TensorFlow,看起来TensorFlow模型首先需要查询BigQuery。在某些情况下,这可能意味着TensorFlow需要查询存储在BigQuery中的所有或大部分数据。
这感觉有点偏,所以我想知道这是不是应该发生的事情。否则,我认为我的ML模型必须使用陈旧的数据?
答案 0 :(得分:1)
因此,我同意您的看法,将BigQuery用作ML的数据仓库非常昂贵。使用Google Cloud Storage存储您希望处理的所有数据会更便宜,更高效。处理并生成所有内容后,您可能 然后 希望将数据推送到BigQuery,然后将数据推送到Spanner甚至Cloud Storage等其他来源。
话虽这么说,Google现在已经创建了一个Beta产品BigQuery ML。现在,这允许用户通过使用SQL查询在BigQuery中创建和执行机器学习模型。我相信它在后台使用python和tensorflow,但是我相信这是最好的解决方案,因为您的ML负载很轻。
由于它到目前为止仍处于测试阶段,所以我不知道它的性能是否与Google ML引擎和tensorflow相比。
答案 1 :(得分:1)
根据要训练的模型类型以及如何为模型提供服务,可以执行以下操作之一:
您可以将数据以CSV格式导出到Google Cloud Storage,然后在Cloud ML Engine中读取文件。这将使您可以使用Tensorflow的功能,然后可以使用Cloud ML Engine的服务系统将流量发送到模型。 不利的一面是,您必须将所有BigQuery数据导出到GCS,并且每次决定对数据进行任何更改时,都需要回到BigQuery并再次导出。另外,如果您要预测的数据在BigQuery中,则还必须将其导出并使用单独的系统将其发送到Cloud ML Engine。
如果要在数据上探索并交互式训练Logistic或线性回归模型,可以使用BigQuery Machine learning。这样一来,您就可以在BigQuery中对数据进行切片和切块,并尝试使用数据的不同部分和各种预处理选项。您还可以使用SQL的所有功能。 BigQuery ML还允许您在BigQuery中训练后使用模型(可以使用SQL将数据输入模型)。 在许多情况下,无需使用Tensorflow的全部功能(即使用DNN)。对于结构化数据尤其如此。另一方面,您的大部分时间都将花费在预处理和清理数据上,而这在BigQuery的SQL中会容易得多。
因此,您在这里有两个选择。根据需要选择。
P.S .:您也可以尝试在Tensorflow中使用BigQuery Reader。我不建议这样做,因为它非常慢。但是,如果您的数据不是很大,则可能对您有用。