我正在尝试从我们公司的dwh-server获取数据,并对这些数据使用一些机器学习算法。
(Un)-fortunately我想要聚合的数据位于不同的表中。例如,我有人口统计客户信息,购买行为和收到的广告。
此外,广告分为两类,以及顾客可以购买的产品。我需要为广告上的每个客户构建一个映射到购买(取决于广告交付后的时间)。因此,我知道广告是否成功。
此外,为了构建机器学习算法,我需要在发送新广告之前分配购买和接收的广告,并以聚合形式汇总这些数据。无论是收到的广告还是购买的商品,都会受到季节性的影响。
因此,汇总数据(如净利润、购买数量等)可能是明智的。关于季节、前几个季节、前几个季节之前的季节等等。此外,回想一下,产品分为两类。并且聚合/列的数量翻了一番。
我想你可以感觉到这是怎么回事:
有没有一种有效的替代方法来从sql中获取数据以进行机器学习,从而避免大量的列?
当然,我可以推迟聚合并在本地机器上将步骤合并为R或python,但通常sql服务器应该要快得多。
目前,我的表应该包含大约400列,并且sql服务器上的查询在超过80分钟后还没有完成。
也许我应该添加以下内容:在最后的聚合步骤中,我使用了许多形式的语句:
SUM(IIF(PRODUCTTYPE = 1, NET, 0)) AS TYPE1NET
SUM(IIF(PRODUCTTYPE = 1 AND SEASON = 'WIN', NET, 0)) AS TYPE1NETWIN我看不到一个地方可以让我早点计算出来。
发布于 2016-05-31 22:04:11
我处理了大量的数据,有时数据量非常大。转储数据并将其转换为ML算法可使用的形式是一个痛苦且通常很耗时的过程。
我尝试使用RDBMS功能来完成任务,但在大多数情况下都失败了。主要原因是:它们不适合任务(例如,它们不支持数据流)。
在我的实践中,最好的方法是将数据转储为CSV格式;提供给某个键值引擎(HBase也可以,我自己也使用了简单的基于Java的解决方案)。然后选择你最喜欢的编程语言,遍历一个集合,构造你的数据并保存到磁盘中。
https://stackoverflow.com/questions/37547616
复制相似问题