数据准备:使用sql构建表的替代方法导致许多列

时间:2016-05-31 13:49:12

标签: sql machine-learning

我正在尝试从我们的公司dwh-server获取数据,并对这些数据使用一些机器学习算法。

(Un),我想要聚合的数据驻留在不同的表上。 例如。我有人口统计的客户信息,购买行为和收到的广告。

此外,广告分为两类,以及客户可以购买的产品。我需要为广告购买的每个客户构建一个映射(取决于广告投放后的时间)。 因此,我知道广告是否成功。

此外,为了构建机器学习算法,我需要在发送新广告之前分配购买和接收的广告,并以汇总形式汇总这些数据。收到的广告和购买都受季节性影响。

因此,在季节,前一季,前一季之前的海洋等方面汇总数据(如净利润,购买数量等)可能是明智之举。此外,回想一下产品分为两类。并且聚合/列的数量加倍。

我认为你可以感觉到它的发展方向:

是否有一种有效的替代方法可以从sql中获取数据以避免大量列的机器学习?

当然,我可以推迟聚合并在我的本地机器上将步骤组合到R或python,但通常sql服务器应该更快。

目前,我的表应该包含大约400列,并且在sql server上查询还没有完成80分钟。

也许我应该添加以下内容: 在最后的聚合步骤中,我使用了许多形式的语句:

SUM(IIF(PRODUCTTYPE = 1, NET, 0)) AS TYPE1NET
SUM(IIF(PRODUCTTYPE = 1 AND SEASON = 'WIN', NET, 0)) AS TYPE1NETWIN

我没有看到我之前可以计算出来的地方。

1 个答案:

答案 0 :(得分:1)

我在数据方面做了很多工作,有时候数量很大。将数据转储并转换为ML算法可消费的形式是一个痛苦且通常耗时的过程。

我尝试使用RDBMS功能来完成任务,但在大多数情况下失败了。主要原因是:它们不适合任务(例如,它们不支持数据流)。

我的实践中最好的方法是将数据转储为CSV格式;提供给一些键值引擎(HBase会这样做,也使用简单的基于Java的自己烹饪解决方案)。然后选择您喜欢的编程语言并迭代一组,构建您的数据并持久保存到磁盘。