MADlib 入门

目录

 

一、MADlib简介

二、MADlib的特点

2.1 丰富性

2.2 易用性

2.3 开源性

2.4 分布式

2.5 数据库内部解析

三、安装


一、MADlib简介

MADlib是一款开源、易用、可扩展性强、预测准确度高、支持数据库内部分析的机器学习算法库。它支持包括Greenplum、PostgreSQL、Apache HAWQ、Apache Impala(非官方)在内的多个数据库平台。MADlib充分利用了MPP架构的特性,所有机器学习算法和概率统计方法均采用并行实现,原生支持针对海量数据的分析和建模。MADlib具有SQL接口,使其使用门槛非常低,用户可以轻松借助MADlib强大的并行机器学习算法库,快速上手大数据分析。在人工智能的浪潮中,机器学习扮演着核心的角色,而机器学习算法正是MADlib的核心。Tom Mitchell将机器学习定义为“ 对于某类任务T和性能度量P,如果计算机程序在T上以P衡量的性能随着经验E而自我完善,那么就称这个计算机程序从经验E学习 ”[插图]。如今,“ 自我完善 ”的机器学习技术已经融入到社会生活的方方面面,比如,股票趋势预测用到了回归算法,信用诈骗分析用到了自动分类算法,超市商品排列用到了频繁模式发掘算法,新闻个性推送用到了推荐算法。机器学习技术不仅能够帮助企业分析数据资产中的模式和趋势,更能够产生高价值的预测以指导企业做出更优的决策。

对于企业而言,如何在自己的大数据资产上使用合适的机器学习技术来挖掘大数据背后的知识,已经成为能否在人工智能时代取得战略优势的关键。应用机器学习技术,自然少不了优秀的工具,MADlib作为一款机器学习库,向上连接海量数据,向下产出隐藏在数据背后的知识,恰恰能满足企业应用人工智能技术的诉求。MADlib创建于2011年,最初是由EMC Greenplum团队(Pivotal从EMC独立分拆后,Greenplum成为Pivotal大数据套件的一部分)和高校联合研发的,参与的大学包括美国加州大学伯克利分校、斯坦福大学、威斯康辛麦迪逊大学、佛罗里达大学等。6年后,MADlib迎来了又一个里程碑—MADlib于2017年7月正式成为Apache顶级项目。MADlib的命名蕴含了这套机器学习库所满足的MAD特性。

MADlib创建于2011年,最初是由EMC Greenplum团队(Pivotal从EMC独立分拆后,Greenplum成为Pivotal大数据套件的一部分)和高校联合研发的,参与的大学包括美国加州大学伯克利分校、斯坦福大学、威斯康辛麦迪逊大学、佛罗里达大学等。6年后,MADlib迎来了又一个里程碑—MADlib于2017年7月正式成为Apache顶级项目。MADlib的命名蕴含了这套机器学习库所满足的MAD特性

  • ❏Magnetic(磁性):愿景是为数据科学家们提供一个有吸引力的环境,该环境支持处理不同类型的数据源,以实现更好的数据和算法的共享。
  • ❏Agile(敏捷):支持快速、探索型、迭代式分析,并且支持新数据的快速集成。
  • ❏Deep(深度):支持复杂的机器学习和统计算法。

 可以说,MAD特性是为解决数据科学中的痛点问题量身设计的,它的初衷是解决数据分析流水线中的数据探索、数据建模及数据、算法共享的问题,所以MADlib是一款数据科学原生的机器学习算法库。在MADlib等数据库内部分析机器学习库产生之前,关系型数据被认为只适合在中等数据规模的结构化数据集上进行描述性统计,比如求和、求平均等,并不适合预测、推理等复杂分析建模。但是到了今天,关系型数据库已经不仅仅是执行SQL查询的引擎,它越来越多地支持数据分析和建模。以MADlib为代表的机器学习库不仅可以实现预测和推理,而且能够支持数据分析流水线的全部流程,实现了数据分析的闭环。数据科学家在定义好数据分析问题后,首先进行数据探索,分析和识别数据中可供挖掘的模式,接下来进行数据的预处理、清洗和整合,之后才进行各种类型的建模,包括非监督的数据挖掘任务、有监督的预测建模、文本分析等。最后还要对建模后的结果进行模型选择,不同的模型有不同的评测标准,往往还会使用交叉验证等技术。图9-1展示了MADlib在数据分析流水线中不同阶段所实现的功能。

二、MADlib的特点

2.1 丰富性

MADlib拥有丰富的机器学习算法,涵盖了从监督学习、非监督学习、时间序列到模型选择的超过50种主要算法集合,同时,活跃的开发社区不断开发新的算法,主要涉及统计、机器学习、数据转换等领域。MADlib支持的算法集将在9.3节详细介绍。同时,MADlib兼容多种数据库:PostgreSQL、Greenplum、Apache HAWQ和Apache Impala(非官方)等。MADlib的架构中使用单独的C++数据库抽象层来处理与底层数据库的交互,使其更易于扩展和兼容更多的数据库。

2.2 易用性

MADlib采用SQL接口,对机器学习算法进行了高度封装,易于使用。基于机器学习算法进行建模通常需要三方面能力:机器学习理论与实践知识,包括模型选择、参数调优等能力;业务理解能力,比如设计广告推荐算法时需要对广告中的竞价排名机制有深入了解;编程能力,不同的机器学习平台对于编程能力有不同的需求。传统数据科学家通常使用Python和R作为数据分析平台,除了要掌握Python和R语言,还要精通各种数据处理库(如Numpy、Pandas等)和机器学习库(如Scikit-learn)。机器学习工程师通常使用更加通用的数据处理平台(比如Spark、Hadoop MapReduce等)开发机器学习应用,这些平台需要更强的编程技能,还要深入理解分布式编程原理,比如使用两阶段聚集代替一阶段聚集(聚集对应数据库的group by)、提前将小表分布到所有节点上等优化方法,从而减少分布式系统的节点间传输的数据量。这些优化会对分布式系统的性能产生数量级的提升。MADlib与Python/R以及Spark等平台不同,它完全基于SQL语言。熟悉SQL的用户群体大,同时作为类自然语言,SQL的学习成本也很低。因此,选用基于Greenplum分布式数据库的MADlib机器学习库作为机器学习平台,降低了数据科学家的门槛,企业可以更快速地招聘到更多的数据科学家开展更多的机器学习项目。

2.3 开源性

MADlib是Apache的顶级项目,完全开源,遵循Apache License 2.0许可。用户可以在http://github.com/apache/madlib下载MADlib源代码。开源软件具有以下优势:安全性,在“ 众目睽睽 ”之下,避免了后门程序,BUG更容易被发现,也会被更快地修复;可定制性,企业会有自己独特的需求,开源软件使得企业自由定制软件成为可能,比如MADlib虽然已经支持大量的机器学习算法,但企业可以修改、增加一个适合业务需求的算法;自由性,企业不用担心被软件服务商或集成商绑定,一款优秀的开源软件往往有活跃的社区,企业获取帮助的途径更加多元化;低成本,开源软件不需要购买软件本身,只需要订阅服务,甚至对于一些企业,后者也不是必须的,只要拥有足够的技术能力,企业可以自由部署开源软件。

2.4 分布式

MADlib不仅支持单机PostgreSQL数据库,而且原生兼容Greenplum大规模并行处理数据库。大规模并行处理数据库能够将数据分散到服务器集群的多个节点上,基于Shuff le技术,以流水线的方式并发执行查询,效果更好。MADlib通过用户定义函数和用户定义聚集的方式,原生支持机器学习算法的分布式执行。同时,算法实现主要使用C语言编写,相比于Python和R,性能更有保障。

2.5 数据库内部解析

MADlib是一款原生支持数据库内部分析的机器学习库。数据库内部分析最早由Thomas Tileston在2005年提出,创新性地将数据仓库和数据分析集成为有机统一的系统。传统的数据处理流程往往需要先将数据从数据仓库转移到数据分析平台,然后进行建模分析,最后将分析结果导回数据仓库。这会造成三方面的问题:一是数据迁移时间过长,有时甚至超过数据分析的时间;二是数据迁移过程的安全性得不到保障,安全性是数据仓库的设计目标,但不同的数据分析平台提供的安全性良莠不齐;三是数据分析成本很高,其一是沟通成本,数据迁移往往需要数据仓库团队和数据分析团队的协作,两个团队要反复沟通才能完成所有工作;其二是基础设施成本,企业需要单独构建一套数据分析平台。因此,在大数据的浪潮下,数据库内部分析已经成为高效、安全地收集、处理、分析数据的重要技术。此外,MADlib在进行数据库内部分析时,紧密结合Greenplum ORCA查询优化器,能够生成高效率的查询计划。比如,在进行机器学习推理时,往往需要对事实表和模型表进行连接操作,ORCA能够自动优化连接顺序,针对小表建立哈希桶,从而实现哈希连接,提高查询性能。

三、安装

1)请确保Greenplum已经成功安装并启动。确保psql、postgres和pg_config在路径中。

~]$ which pg_config
/usr/local/greenplum-db/bin/pg_config
 
~]$ which postgres
/usr/local/greenplum-db/bin/postgres

 ~]$ which psql
/usr/local/greenplum-db/bin/psql

确保以下查询能够成功:

]$ psql -c 'select version()'
                                                                                               version                                                                                                
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 PostgreSQL 9.4.24 (Greenplum Database 6.2.1 build commit:d90ac1a1b983b913b3950430d4d9e47ee8827fd4) on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 6.4.0, 64-bit compiled on Dec 12 2019 18:35:27
(1 row)

2)下载MADlib。从Pivotal Network上下载MADlib的gppkg安装包,网址为https://network.pivotal.io/。

3)安装MADlib。在Redhat 6/7或者CentOS 6/7平台上,gpadmin用户使用下列命令安装MADlib安装包并部署到Greenplum数据库。

4)验证MADlib安装是否正确:

至此,MADlib已成功安装,之后就可以使用了。

猜你喜欢

转载自blog.csdn.net/MyySophia/article/details/113848817