分布式数据分析挖掘系统

来源:互联网 发布:软件设计师考试报名费 编辑:程序博客网 时间:2024/05/01 04:17

1.  数据分析挖掘

在信息时代,公司和个人的成功越来越依赖于迅速有效地将大量数据转化为可操作的信息。而信息时代的机器学习应用场景,如每天处理数以千计的个人电子邮件信息,从海量博客中推测用户的意图等,的输入数据通常都非常庞大,以至于无法在一台计算机上完全处理,即使这台计算机非常强大,如果没有快速并行处理的实现手段,这将是一项无法完成的任务,因此分布式数据分析挖掘系统逐渐成为了主流方向。

目前的主流的分布式数据分析挖掘系统有Mahout、MLlib和Petuum,下面将对其进行简单介绍。

系统评测主要分为两部分进行。定性分析系统特性,根据系统算法质量、数据预处理工作支持程度、运行条件、系统模型参数设置、系统模型可理解性等指标评测系统。定量分析系统性能,根据系统模型运行所需时间和空间、系统实现算法数目、系统能完成的数据挖掘任务数量、支持的数据源类型数量、支持的输出对象格式数量等指标评测系统。

1.1  研究目标与内容

本部分的研究需要明确如下目标:

l 调研确定主流开源系统和评测方法

l 安装部署这些主流开源系统并进行评测,确定最佳系统

l 针对最佳系统建立培训体系和教材

1.2  主流分布式数据分析挖掘系统简介

1.2.1  Mahout

Mahout是Apache Software Foundation(ASF)旗下的一个开源项目,提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。Mahout包含许多实现,包括聚类、分类、推荐过滤、频繁子项挖掘。此外,通过使用ApacheHadoop库,Mahout可以有效地扩展到集群中。

虽然Mahout项目在理论上可以实现所有类型的机器学习技术,但实际上当前其仅关注机器学习的三个主要领域,即推荐引擎(协同过滤)、聚类和分类。接下来简单介绍Mahout在此三个领域的具体实现。

Taste是Apache Mahout提供的一个协同过滤算法的高效实现,是一个基于Java实现的可扩展的,高效的推荐引擎。Taste既实现了最基本的基于用户的和基于内容的推荐算法,同时也提供了扩展接口,使用户可以方便的定义和实现自己的推荐算法。Taste不仅仅只适用于Java应用程序,还可以作为内部服务器的一个组件以HTTP和Web Service的形式向外界提供推荐的逻辑。Taste的设计使其能满足企业对推荐引擎在性能、灵活性和可扩展性等方面的要求。其核心组件如图6-1所示:

图6-1 Taste的核心组件

Mahout的聚类分析的框架设计是:针对分组需求,聚类算法将对象表示成一种简单的数据模型:向量,然后通过计算各向量间的相似度进行分组。Mahout提供了三种类型的向量类:DenseVector、RandomAccessSparseVector和SequentialAccessVector,用户可以根据自己算法的需求选择合适的向量实现类。Mahout中的聚类算法有K-means聚类,超越k-means,模糊k-means等,用户可以根据具体需要选择聚类算法。

Mahout目前支持两种根据贝氏统计来实现内容分类的方法。第一种方法是使用简单的支持Map-Reduce的Naive Bayes分类器。Naive Bayes分类器为速度快和准确性高而著称,但其关于数据的简单(通常也是不正确的)假设是完全独立的。当各类的训练示例的大小不平衡,或者数据的独立性不符合要求时,Naive Bayes分类器会出现故障。第二种方法是ComplementaryNaive Bayes,其会尝试纠正Naive Bayes方法中的一些问题,同时仍然能够维持简单性和速度。

1.2.2  MLlib

MLlib是Spark对常用的机器学习算法的实现库,同时包括相关的测试和数据生成器。MLlib目前支持四种常见的机器学习问题:二元分类,回归,聚类以及协同过滤,同时也包括一个底层的梯度下降优化基础算法。接下来将简单介绍MLlib针对此几种机器学习算法的具体实现。

MLlib目前支持两个适用于二元分类的标准模型家族:线性支持向量机(SVMs)逻辑回归,同时也包括分别适用与这两个模型家族的L1和L2正则化变体。目前可用的二元分类算法:SVMWithSGD和LogisticRegression WithSGD。

MLlib支持线性回归和与之相关的L1(lasso)和L2(ridge)正则化的变体。目前可用的线性回归算法有:LinearRegressionWithSGD,RidgeRegression WithSGD和LassoWithSGD。

MLlib目前已经支持k-means聚类算法,根据事先定义的类簇个数,这个算法能对数据进行聚类。目前可用的聚类算法有:KMeans。

MLlib当前支持基于模型的协同过滤,其中用户和商品通过一小组隐语义因子进行表达,并且这些因子也用于预测缺失的元素。MLlib实现了交替最小二乘法(ALS)来学习这些隐性语义因子。目前可用的协同过滤的算法有:ALS。

梯度下降(及其随机的变种)是非常适用于大型分布式计算的一阶优化方案。梯度下降旨在通过向一个函数当前点(当前的参数值)的负梯度方向移动的方式迭代地找到此函数的本地最优解。MLlib以梯度下降作为一个底层的基础算法,在上面开发了各种机器学习算法。目前可用的梯度下降算法有:GradientDescent。

1.2.3  Petuum

Petuum是一个分布式的机器学习框架,现已经在成功地运行在AmazonEC2和Google GCE两大云计算平台上。Petuum包含一个参数服务器和一个调度器。其中,参数服务器提供了一个共享虚拟分布内存,使得用户在读写内存时不再需要对每一个机器做一个特殊的指令,而是可以使用和单机读写形式上相似的通用指令。而且参数服务器使用了半同步的协调机制,显著地降低了用在通讯上的时间,加强了在数据计算上的时间,使计算机的资源得到了最大量的利用。在调度器方面,Petuum也使用了基于机器学习考量的设计,调度器可以自动发现机器学习模型里面的一些结构,找出相关的参数和不相关的参数,然后对其做相应分布。

Petuum提供了基本的分布式编程工具以处理大规模的机器学习任务:大数据(数据量大)和大模型(参数量和中间变量所需空间大)。与通用的分布式编程平台不同,Petuum是专门为机器学习算法而生的。除了分布式机器学习编程工具,Petuum还实现了许多分布式机器学习算法,通过利用数据相关性、数据老化以及其他统计学特性最大化地提高机器学习算法的性能。

Petuum的机器学习算法建立在不断持续迭代直到收敛的更新函数上,其更新函数为:,该函数利用数据D的函数更新模型参数和模型的隐藏状态θ。如图6-2所示,Petuum包含数据和模型并行两套功能,数据并行(Data Parallel)把数据D分发的各节点,模型并行(Model Parallel)把参数和隐藏状态θ分发到各节点。

图6-2 Petuum并行原理

目前Petuum实现的机器学习应用主要有7大类:主题模型、深度学习、矩阵分解和稀疏编码、回归、距离度量、聚类以及分类。其中,主题模型算法有:Latent Dirichlet Allocation(LDA)、Maximumentropy discrimination latent Dirichlet allocation(MedLDA);深度学习算法有:Convolution Neural Network(CNN):Caffe onPetuum、General-purpose Deep Neural Network(DNN)、DNN for Speech Recognition;矩阵分解与稀疏编码算法有:Matrix Factorization(collaborative filtering)Non-negative Matrix Factorization(NMF)Sparse Coding;回归算法:Multi-class Logistic Regression;距离度量算法:Distance Metric Learning;聚类算法:K-means;分类算法:Random Forest。

1.3  分布式数据分析挖掘系统评测方法

1.3.1  定性测评指标

l  数据挖掘并行算法质量(原始or改良)

l  数据预处理工作支持程度(数据清洗、数据变换、数据规约、数据集成)

l  运行平台所需计算机硬件和软件结构

l  兼容性(支持的操作系统种类和数目)

l  是否能自动调参,不需用户干预

l  是否可将多种算法组合建立大型模型

l  是否能实现用户定制的算法(用户算法嵌入)

l  算法参数设置是否灵活(是否提供基本参数设置,即既适用于非专业用户,也适用于专业用户;是否提供高级参数设置,即只适用于转而又用户)

l  是否可以为非机器学习专业人员使用(即不需理解算法)

l  是否可以对模型进行解释和评估

1.3.2  定量测评指标

l  相同数据集模型建立所需时间

l  相同数据集模型运行所需空间

l  数据挖掘并行算法的数目

l  能够完成的数据挖掘任务数量(如分类、回归、聚类、关联等)

l  支持的数据源类型数目(如结构化文本文件、电子表格文件、关系数据库、数据挖掘文件、统计文件、数据库结构等)

l  支持的模型输出对象格式的类型数目(如图表输出格式有:JPG、PNG、BMP等;挖掘过程输出有:XML、HTML等;规则输出有:SAS、SPSS、SQL等)

0 0