我们通过OLTP(在线交易处理)系统实时处理用户数据,我们还需要在OLAP(在线分析处理)系统中分析它们。今天,我们研究如何使用SQL分析数据。
在DBMS(数据库管理系统)中,一些数据库与BI工具完全集成在一起,这可以促进我们对收集数据的业务分析。
例如,SQL Server提供了BI分析工具。我们可以通过在SQL Server.SQL Server中使用分析服务来完成数据挖掘任务。SQLServer具有多种数据挖掘算法,例如常用EM,K-Means群集算法,决策树,简单的贝叶斯和逻辑回归以及其他模型,如以及神经网络和其他模型。我们还可以介绍这些算法模型的视觉效果,以帮助我们优化和评估算法模型的质量。
图像来源:https://docs.microsoft.com/en-s/analission-services/Analysis-features-suppported-editions-sql-server-2016
此外,PostgreSQL是一个免费的开源关系数据库(ORDBMS)。它的稳定性非常强大。它在OLTP和OLAP系统上表现良好。同时,在机器学习中,它与Madlib项目合作,以使PostgreSQL Add.madlib包括各种机器学习算法,例如分类,聚类,文本分析,回归分析,,相关规则挖掘和验证分析。这样,我们可以使用SQL使用PostgreSQL中的各种机器学习算法模型来帮助我们执行数据挖掘和分析。
图像来源:https://cwiki.apache.org/conflunce/display/madlib/architecture
在2018年,Google集成了机器学习(机器学习)工具进入BigQuery并发布了BigQuery ML,以便开发人员可以在大型结构化或半结构的数据集中构建和使用机器学习模型。通过BigQuery控制台,开发人员可以完成培训和培训和机器学习模型的预测,例如使用SQL语句。
SQLFlow是2019年ANT Financial的机器学习工具。我们可以使用SQL来完成机器学习算法的调用。您可以将SQLFlow作为机器学习的转换器理解。我们可以在添加该区域后完成机器学习模型的训练模型。在添加预测后,在添加预测之后,在SELECT语句之后添加预测后。这些算法模型包括传统的机器学习模型和基于Tensorflow和Pytorch等框架的深度学习模型。
从上图,您可以看到SQLFlow的使用。首先,我们可以通过jupyter Notebook.sqlflow支持各种SQL引擎,包括MySQL,Oracle,Hive,Hive,SparkSQL,Flink等,以便我们可以从这些DBMS数据库中汲取数据通过SQL语句,然后选择机器学习算法(包括传统的机器学习和传统的机器学习和深度学习模型)培训和预测。,文件和社区。
最后最常用的方法是SQL+Python,这也是我们今天要关注的内容。上面介绍的工具可以说是SQL查询数据的入口,而且是数据分析的入口和机器学习的入口。无论如何,这些模块具有很高的耦合,并且可能存在问题。一方面,工具将非常大。例如,在安装SQLFLOF时,将使用Docker方法进行安装。需要整体下载的文件将超过2G。在同一时间,当调谐和优化算法时,灵活性较差。因此,最直接的方法是将SQL与数据分析模块分开,请使用SQL读取数据,然后通过Python处理数据分析。
让我们解释下面的具体情况。
我们要分析的是购物问题,并且采用的技术是相关的分析,它可以帮助我们在大量数据集中找到商品之间的关系,以挖掘人们经常被人们购买的商品组合。一个经典的例子是“啤酒和尿布”的一个例子。
今天,我们的数据集来自购物样本数据。该字段包括trans_id(事务ID)和产品。特定数据集指的是以下初始化SQL:
我们在这里使用的相关分析算法是Apriori算法。它可以帮助我们找到频繁的物品。首先,我们需要了解什么是常见的项目。
频繁的社区是支撑程度的项目,该项目大于或等于最小支持阈值。小于此最低价值支持的项目是不频繁的项目,大于最低支持的项目是频繁的项目。支持是一个百分比,这是指次数和总数之间的比例商品组合的组合。支持越高,这种组合的频率越大。
让我们看一下Apriori算法的基本原理。
APRIORI算法实际上是查找频繁的项目集的过程:0。设置最小支持,1。从k = 1开始,屏幕频繁的项目。2。在结果中,组合K+1集,再次屏幕3。循环1或2步。在找不到结果,K-1项目的结果是最终结果。
让我们看一下数据理解。以下是所有订单,每个订单购买的产品:
在此示例中,“啤酒”出现了7次,因此在这7个订单中的“牛奶”的支持为7/7 = 1。7 = 0.71。
同时,我们还需要理解一个称为“信心”的概念。这意味着当您购买产品A时,必须购买商品B。购买尿布的概率%;信心(啤酒→薯条)= 3/7 = 0.43,这意味着如果您购买啤酒,则有43%的概率将购买马铃薯。
因此,信心是一个条件概念,它是指在A的情况下发生B发生的概率是什么。
计算关系时,我们通常需要指定最低支持和最低置信度,以便我们可以找到频繁的项目,这些项目大于最少的支持,并且基于频繁的项目设置
对于上述购物数据关联分析的情况,我们可以使用工具的相关规则进行分析。下面我们证明了Madlib工具中的PostgreSQL数据库的使用。
拉码头图像(此图像提供了所需的邮政和其他环境,并且不安装Madlib):
下载Madlib GitHub源代码。假设下载源代码位置为/home/git-report/github/madlib:
启动容器并设置系统和系统中系统的路径映射。共享目录是在容器和机器之间读取和写入的。
启动容器后,将容器连接以编译Madlib组件,并编译约30分钟:
在容器中安装Madlib:
运行Madlib测试:
如果需要,请关闭并首先删除容器。删除后,需要重新安装新的容器:
用配置的容器制作新镜子,首先检查容器ID,然后在容器ID中创建一个新图像:
创建一个带有新镜子的新容器:
连接容器交互(我发现新容器仍未安装,但不需要编译,并且安装很快。测试安装后)
使用navicat远程连接postgresql(假设没有修改登录用户和密码,默认情况下没有密码)
最后,创建一个新表并初始化数据:
最后,SQL + Madlib用于关联分析。在这里,我们将参数的最小支持设置为0.25,最低置信度为0.5。根据条件加成交易中的相关规则,如下所示:
搜索结果:
关联的规则存储在Assoc_Rules表中:
注意:
关联的规则将始终创建一个表格c_rules的表。如果要保留多个关联规则,请在再次运行之前复制表。
此外,我们可以使用SQL直接完成数据查询,然后通过Python机器学习工具包完成关联分析。
拉官方镜子(我们在此处选择5.7,如果未编写版本号,将自动绘制最新版本):
检查它是否成功:
启动容器:
检查容器是否正常运行:
您可以看到容器ID,容器的源图像,开始命令,创建时间,状态,端口映射信息,容器名称。
输入Docker本地连接MySQL客户端:
设置远程访问帐户并授权远程连接:
使用Navicat远程连接MySQL,创建一个新数据库并初始化数据。
首先,我们通过SQLalchemy完成SQL查询,并使用Edgition_apriori Toolkit的Apriori算法。
整个项目总共包括3个部分:
下载依赖库:
特定代码如下:
操作结果:
从结果我们可以看到购物组合:
建议使用Python完成数据分析,机器学习或机器学习,因为这在Python上很好。通过今天的示例,我们应该能够看到使用SQL作为数据查询和分析的进入是一种数据全栈。对于数据开发人员而言,降低了数据分析的技术阈值。我相信,在当今的DT时代,我们的业务增长将越来越依赖SQL Engine + AI引擎。
参考:
[1]:http://madlib.apache.org/docs/latest/group__grp_erp__assoc__rules.html
[2]:https://sql-machine-rearning.github.io/
[3]:https://www.jianshu.com/p/8e1e64c08cb7
[4]:“数据分析45讲座45”陈市学院博士学位。
本文分享了真诚的云社区,作者:Zuozewei。