一、MADlib简介
MADlib是Pivotal公司与伯克利大学合作开发的一个开源机器学习库,提供了多种数据转换、数据探索、统计、数据挖掘和机器学习方法,使用它能够简易地对结构化数据进行分析和挖掘。用户可以非常方便地将MADlib加载到数据库中,扩展数据库的分析功能。2015年7月MADlib成为Apache软件基金会的孵化器项目,经过两年的发展,于2017年8月毕业成为Apache顶级项目。其当前最新版本为MADlib 1.12,可以与PostgreSQL、Greenplum和HAWQ等数据库系统无缝集成。
1. 基本概念
无论是经典的SAS、SPSS,还是时下流行的MATLAB、R、Python,所有这些机器学习或数据挖掘软件,都是自成系统的。具体说就是具有一套完整的程序语言及其集成开发环境,提供了丰富的数学和统计分析函数,具备良好的人机交互界面,支持从数据准备、数据探索、数据预处理,到开发和实现模型算法、数据可视化,再到最终结果的验证与模型部署到应用的全过程。它们都是面向程序员的系统或语言,重点在于由程序员自己利用系统提供的基本计算方法或函数,通过编程的方式实现所需的模型算法。表1给出了5种常用数据挖掘工具在功能、特点、适用场景方面的比较,从中可以看出,每种工具都有自己的特点和适应条件。
工具名称 |
功能 |
特点 |
适用场景 |
MATLAB |
不仅具有较强的数据统计、科学计算功能,还具有金融、经济等众多的行业应用工具箱 |
擅长矩阵计算和仿真模拟; 具有丰富的数学函数,适合算法开发或自主的程序开发; 具有强大的绘图功能 |
适合学习研究算法和灵活的产品开发 |
SAS |
功能强大的统计分析软件 |
具有较强的大数据处理能力; 支持二次开发 |
有一些行业标准,适合工业使用 |
SPSS |
侧重统计分析 |
使用方便,但不适合自己开发代码,就是说扩展上受限,如果要求不高,已经足够 |
界面友好,使用简单,但功能强大,也可以编程,能解决大部分统计学问题,适合初学者 |
WEKA |
具有丰富数据挖掘函数,包括分类、聚类、关联分析等主流算法 |
Java开发的开源数据分析、机器学习工具 |
适合于具有一定程序开发经验的工程师,尤其适合于用Java进行二次开发 |
R |
类似MATLAB,具有丰富的数学和统计分析函数 |
开源并支持二次开发 |
适合算法学习、小项目的产品研发 |
表1 常用数据挖掘工具的比较
MADlib具有与上述工具完全不同的设计理念,它不是面向程序员的,而是面向数据库开发或DBA的。如果用一句话说明什么是MADlib,那就是“SQL中的大数据机器学习库”。通常SQL查询能发现数据最明显的模式和趋势,但要想获取数据中最为有用的信息,需要的其实是完全不同的另一套技术,一套牢固扎根于数学和应用数学的技能,当然指的就是数据挖掘或机器学习,而具备这种技术的人才似乎只存在于学术界中。如果能将SQL的简单易用与数据挖掘的复杂算法结合起来,充分利用两者的优势和特点,那对于广大传统数据库应用技术人员来说,学习和从事数据挖掘工作的门槛将大大降低。现在,鱼和熊掌兼得的机会来了,DBAer不用现学Python、R或MATLAB,只要使用MADlib,用SQL就能实现简单的数据挖掘。
对用户而言,MADlib仅提供了可在SQL查询语句中调用的函数。其中不但包括基本的线性代数运算和统计函数,而且还提供了常用的、现成的机器学习或数据挖掘模型函数。用户不需要深入了解算法的程序实现细节,只要搞清楚各函数中相关参数的含义,从而提供正确的入参,并且能够理解和解释函数的输出结果即可。这种使用方式无疑会极大地提高开发效率,节约开发成本。在MADlib的世界里,一切皆函数,就是这么简单。
然而任何事物都具有两面性,MADlib提供了使用方便性,但相对于其它数据挖掘系统而言,灵活性、扩展性与功能完备性显然是其短板。这很好理解,首先,模型已经被封装在SQL函数中,性能优劣完全依赖于函数本身,基本没有留给用户进行性能调整的空间。其次,函数只能在SQL中调用,而SQL依赖于数据库系统,也就是说单独的MADlib函数库是无意义的,它必须与PostgreSQL、Greenplum和HAWQ等数据库系统结合使用。最后,既然MADlib是SQL中的机器学习库,注定它不关心数据可视化,本身不带数据的图形化表示功能。由此可见,MADlib作为工具,并不是传统意义上的数据挖掘系统软件,而只是一套可在SQL中调用的函数库,其出发点是让数据库技术人员用SQL快速完成简单的数据挖掘工作。
即便如此,MADlib的易用性已经足以引起我们的兴趣。在了解了MADlib是什么及其优缺点后,用户就能根据自己的实际情况和需求,有针对性地选择和使用MADlib来实现特定业务目标。
2. 架构
MADlib架构如图1所示。
图2 MADlib功能
下面基于MADlib 1.1.10版本,预览MADlib提供的具体模型算法或功能。
(1)Data Types andTransformations(数据类型与转换)
Arraysand Matrices(数组与矩阵)
ArrayOperations(数组运算)
MatrixOperations(矩阵运算)
MatrixFactorization(矩阵分解)
Low-rankMatrix Factorization(低阶矩阵分解)
SingularValue Decomposition(SVD,奇异值分解)
Normsand Distance functions(范数和距离函数)
SparseVectors(稀疏向量)
DimensionalityReduction(降维)
PrincipalComponent Analysis(PCA主成分分析)
PrincipalComponent Projection(PCP主成分投影)
Pivot(透视表)
EncodingCategorical Variables(分类变量编码)
Stemming(词干提取)
(2)Graph(图)
SingleSource Shortest Path(单源最短路径)
(3)Model Evaluation(模型评估)
CrossValidation(交叉验证)
PredictionMetrics(指标预测)
(4)Statistics(统计)
DescriptiveStatistics(描述性统计)
Pearson’s Correlation(皮尔逊相关系数)
Summary(摘要汇总)
InferentialStatistics(推断性统计)
HypothesisTests(假设检验)
ProbabilityFunctions(概率函数)
(5)Supervised Learning(监督学习)
ConditionalRandom Field(条件随机场)
RegressionModels(回归模型)
ClusteredVariance(聚类方差)
Cox-ProportionalHazards Regression(Cox比率风险回归)
ElasticNet Regularization(弹性 络回归)
GeneralizedLinear Models(广义线性回归)
LinearRegression(线性回归)
LogisticRegression(逻辑回归)
MarginalEffects(边际效应)
MultinomialRegression(多分类逻辑回归)
OrdinalRegression(有序回归)
RobustVariance(鲁棒方差)
SupportVector Machines(支持向量机)
TreeMethods(树方法)
DecisionTree(决策树)
RandomForest(随机森林)
(6)Time Series Analysis(时间序列分析)
ARIMA(自回归积分滑动平均)
(7)UnsupervisedLearning(无监督学习)
AssociationRules(关联规则)
AprioriAlgorithm(Apriori算法)
Clustering(聚类)
k-MeansClustering(k-Means)
TopicModelling(主题模型)
LatentDirichlet Allocation(LDA)
(8)Utility Functions(应用函数)
DeveloperDatabase Functions(开发者数据库函数)
LinearSolvers(线性求解器)
DenseLinear Systems(稠密线性系统)
SparseLinear Systems(稀疏线性系统)
PathFunctions(路径函数)
PMMLExport(PMML导出)
Sessionize(会话化)
TextAnalysis(文本分析)
TermFrequency(词频)
四、安装与卸载MADlib
1. 确定安装平台
MADlib最新发布版本是1.12,可以安装在PostgreSQL、Greenplum和HAWQ中,在不同的数据库中安装过程也不尽相同。这里以在HAWQ2.1.1.0中安装MADlib为例,演示MADlib的安装与卸载过程。后续进行的一系列示例也都在此实验环境中进行。HAWQ的安装与部署参见“HAWQ技术解析(二) —— 安装部署”。
数据挖掘需要数据库系统提供有效的存储、索引和查询处理支持。源于高性能(并行)计算的技术在处理海量数据集方面常常是重要的。分布式技术也能帮助处理海量数据,并且当数据不能集中到一起处理时更是至关重要。
比照以上数据挖掘对数据库系统提出的要求,我们不妨简单考量一下HAWQ。先提出一点,HAWQ目前不支持索引。但是,对于存储在Hadoop集群上的“大数据”分析应用而言,实际执行的操作几乎都是表扫描,很少需要定位几行数据,因此传统的由用户定义的索引,其作用在此场景下微乎其微。而HAWQ使用的随机分布存储策略具有较好的数据本地化特性,优化器在制定查询计划时,内部实现已然利用了索引的思想。HAWQ使用专为HDFS量身打造的,基于成本的查询优化框架来增强其性能。所采用的MPP架构,使用户能够获益于基于MPP的分析功能及其查询性能,同时有效利用HDFS的分布式存储、容错机制、机架感知等功能,兼顾了低延时与高扩展。由此看来,在HAWQ上运行MADlib,实现大数据挖掘,是一个比较合理的选择。
2. 下载MADlib二进制压缩包
下载地址为:https://network.pivotal.io/products/pivotal-hdb。2.1.1.0版本的HAWQ提供了四个安装文件,如图3所示。经过测试,本环境只有MADlib 1.10.0版本的文件可以正常安装。
(4)验证安装
该命令通过执行29个模块的77个案例,验证所有模块都能正常工作。命令输出如下,如果看到所有案例都已经正常执行,说明MADlib安装成功。这条命令需要执行较长时间。
4. 卸载MADlib
卸载过程基本上是安装的逆过程。
(1)删除madlib模式
方法1,使用madpack部署应用程序删除模式。
方法2,使用SQL命令手工删除模式。
(2)删除其它遗留数据库对象
删除模式
如果模型验证过程中途出错,数据库中可能包含测试的模式,这些模式名称的前缀都是madlib_installcheck_,只能手工执行SQL命令删除这些模式,如:
删除用户
如果存在遗留的测试用户,则删除它,如:
(3)删除MADlib rpm包
查询包名:
输出如下:
删除rpm包:
文章知识点与官方知识档案匹配,可进一步学习相关知识MySQL入门技能树SQL高级技巧CTE和递归查询32045 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!