TreeMind树图在线AI思维导图
当前位置:树图思维导图模板IT互联网分析方法/模型第八章 Spark MLlib——功能强大的算法库思维导图

第八章 Spark MLlib——功能强大的算法库思维导图

  收藏
  分享
免费下载
免费使用文件
弓长-张 浏览量:52024-05-08 18:24:51
已被使用0次
查看详情第八章 Spark MLlib——功能强大的算法库思维导图

功能强大的算法库简述

树图思维导图提供 第八章 Spark MLlib——功能强大的算法库 在线思维导图免费制作,点击“编辑”按钮,可对 第八章 Spark MLlib——功能强大的算法库  进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:67f780745912fc85a9e25a8d3596ccc3

思维导图大纲

第八章 Spark MLlib——功能强大的算法库思维导图模板大纲

机器学习算法

机器学习算法

机器学习是人工智能的一个重要分支,也是实现人工智能的一个重要途径。在 20世纪中期,机器学习成为计算机科学领域中一个重要的研究课题,现已发展为一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等。

机器学习概念

机器学习指的是让机器能像人一样有学习、理解、认识的能力。例如,在医疗诊断中如果计算机能够对大量的癌症治疗记录进行归纳和总结,并给医生提出适当的建议,那么对于病人的康复将有重大的意义。 机器学习主要研究的是如何在经验学习中改善具体算法的性能。机器学习的过程是通过计算机对历史数据的规律或以往经验进行学习并构建算法模型,再对模型进行评估评估的性能如果达到要求,那么该模型即可用于测试其他的数据:如果达不到要求,那么需要调整算法重新建立模型,再次进行评估,如此循环,直到获得达到要求的算法型。机器学习可以分为监督学习、无监督学习、半监督学习3种。监督学习的训练数据是有标签的,即已经能够确定所给数据集的类别。半监督学习针对的是数据量超级大但是标签数据很少或者标签数据不易获取的情况。无监督学习与监督学习相反,训练数据完全没有标签,只能依靠数据间的相似性进行分类,如广泛使用的K-Means算法即属于无监督学习算法。

机器学习学习常用算法

机器学习是很多重要学科或领域的支撑,机器学习的算法很多,常用的主要有以下几种

(1)回归算法 回归算法有两个重要的子类:线性回归和逻辑回归。线性回归是指根据已有数据拟合曲线,常采用的方法是最小二乘法。逻辑回归是一种与线性回归非常类似的算法,但是线性回归处理的是数值问题,而逻辑回归属于分类算法,预测结果是离散的分类。

(2)分类算法 分类与预测是机器学习的重点。分类算法属于监督学习算法,通过有类别标签的训练数据对模型进行训练和评估,再根据评估后的模型对未知类别数据进行分类,主要有KNN算法、朴素贝叶斯算法、SVM(Support Vector Machine,支持向量机 )、逻辑回归、决策树随机森林等。

(3)聚类算法 聚类是一种无监督学习算法,用于将对象分到高度相似的类中。常用的聚类算法有K-Means、层次聚类,比较少见的有 SOM 算法、FCM 算法。FCM 算法是一种以隶属度确定每个数据点属于某个聚类的可能性的算法。

(4)推荐算法 目前推荐算法在电商领域(如天猫、京东等)中得到了广泛的运用。推荐算法的主要特征是可以根据用户的历史记录自动向其推荐可能感兴趣的产品或服务,从而提高用户购买率,提升效益。推荐算法有两个主要的类别:一种是协同过滤推荐算法,有基于用户和,基于内容两种方式;另一种是基于关联规则的算法,将满足支持度与置信度的多个用户共同购买的商品推荐给买了其中一种或几种的用户。

(5)降维算法 降维算法的主要作用是压缩数据与提升其他机器学习算法的效率。通过降维算法,可以将几千个特征压缩至少量特征。降维算法的主要代表是PCA算法,即主成分分析算法。机器学习的算法非常多,有些算法很难明确归到某一类。而对于同一类别的算法,也需要针对不同类型的问题进行选择。

使用 MLlib

Spark MLlib 封装了多种常用的机器学习算法,通过调用 MLib 算法包可以快速构建、评估和优化模型。并且由于采用的是分布式并行计算,运行效率更高。

MLlib 简介

Spark MLlib 旨在简化机器学习的工程实践工作,使用分布式并行计算实现模型,进行海量数据的迭代计算。MLlib 对数据进行处理的速度远快于普通的数据处理引擎大幅度提升了运行性能。MLib由一些通用的机器学习算法和工具组成,主要包括以下内容。

(1)算法:常用的机器学习算法,如分类、回归、聚类和协同过滤等算法。

(2)特征化工具:对特征进行提取、转化、降维和选择的工具。

(3)管道(Pipeline)工具:用于构建、评估和调整机器学习管道的工具。

(4)实用工具:线性代数、统计、数据处理等工具。

MLlib 发展历史

Spark MLlib 发展的历史比较长,1.0以前的版本提供的算法均是基于RDD 实现的。 Spark MLlib 发展历史主要如下。 0.8版本时,MLlib算法库被加人 Spark,但只支持Java和 Scala 两种语言。 1.0版本时,Spark MLlib 支持使用 Python 语言。 自1.2版本开始,Spark MLlib 被分为以下两个包。

(1)spark.mllib 包,包含基于 RDD 的算法 API。 (2)spark.ml包,提供了基于 DataFrame 的算法 API,可以用于构建机器学习工作流管道弥补了原始 MLlib库的不足,向用户提供了一个基于 DataFrame 的机器学习工作流式API套件。

1.2 以后的版本,对 MLlib 中的算法进行不断地增加和改进 从 Spark 2.0 开始,基于 RDD 的 API进入维护模式,即不增加任何新的特性。Spark官方更推荐使用spark.m包。如果新的算法能够适用于机器学习管道的概念,那么可以将 该算法放人 spark.ml包中。

算法与算法包

Spark MLlib 中的算法包很多,主要包含的模块有文本转换、特征变换、聚类、分类、回归、推荐、关联等。每一个模块都含有不同的方法可以谐用。

(1)数据类型 在 Mib 中,对不同算法包的调用都要求了一定的输人数据类型。

(2)特征提取 mmllib.feature 中提供了一些常见的特征转化方法,主要用于特征向量化、相关系数计算和数据标准化。 ① TF-IDF 算法 TF-IDF(Term Frequency-Inverse Document Frequency)算法是一种将文档转化成特征向量的方法。TF指的是词频,即该词在文档中出现的次数;IDF是逆文档概率,是词在文档集中出现的概率,TF与IDF的乘积可以表示该词在文档中的重要程度。 mllib.feature 中有两个算法可以计算TF-IDF,即 HashingTF 和IDF。HashingTF 从一个文档中计算出给定大小的词频向量,并且通过哈希法排列词向量的顺序,使词与向量能一一对应。IDF则可以计算逆文档频率,需要调用fit()方法获取一个IDFModel,表示语料库的逆文档频率,再通过IDFModel的transform()方法将 TF 向量转换为 IDF 向量。

② Word2Vec 算法 Word2Vec是NLP(自然语言处理)领域的重要算法,它的功能是使用K维的密向量表示每个词,它使用的训练集是语料库,不含标点,以空格断句。通过训练将每个词跌射成K维实数向量(K一般为模型中的超参数),通过词之间的距离(如余弦相似度、欧氏距离等)判断词之间的语义相似度。每一个文档都表示为一个单词序列,因此一个含有 M个单词的文档将由M个K维向量组成。mnllib.feature中包含 Word2Vec 算法包,输人数据要求是 Strimg 类型的可迭代对象。

③ 统计最大值、最小值、均值、方差和相关系数MLlib 的 mllib.stat.Statistics类中提供了几种广泛使用的统计方法,可以直接在 RDD上进行使用。

④ 数据特征处理方法 为避免数据字段的量纲和量级的不同对模型的效果造成不好的影响,经常需要对数据进行数据标准化或归一化。经过数据标准化或归一化后,算法的效果在一定程度上也会变好。Spark提供了3种常见的数据处理的方法,即Normalizer()、StandardScaler()和MinMaxScaler()方法。spark.mllib.feature 类中只有前两种数据处理方法,spark.ml.feature 类中则含有3种。因此,使用spark.ml.feature 类中的方法进行数据特征处理。 Normalizer()、StandardScaler()和 MinMaxScaler()方法处理的均为 Vector 类型的数据因此需要先将数据的类型转换为 Vector 类型。转化一个集合序列为 RDD,再由 RDD 数据创建 DataFrame 数据,最后将 DataFrame 数据的类型转换成 Vector 类型 。

将数据的类型转换成 Vector 类型后,即可使用Normalizer()和 MinMaxScaler()方法进行数据归一化,以及使用 StandardScaler()方法进行数据标准化,这3种数据处理方法的介绍及使用方法如下。

Normalizer()方法本质上是一个转换器,它可以将多行向量输入转化为统一的形式Normalizer()方法的作用范围是每一行,使每一个行向量的范数变换为一个单位范数。参数setP用于指定正则化中使用的p-norm,默认值为2。对代所示的 Vector 类型的dataFrame 数据进行 Normalizer 归一化操作。其中,setInputCol("features"设置了 Normalizer 归一化的输人数据,setOutputCol("normFeatures")设置了 Normalizer 归一化后输出的数据作为 dataFrame 中的 normFeatures列。

StandardScaler() StandardScaler()方法处理的对象是列,即每一维特征,将特征标准化为单位标准差、0均值或0均值单位标准差。StandardScalerO方法有两个参数可以设置,说明如下withStd:true或 false,默认为 true,该参数表示是否将数据标准化到单位标准差withMean:true或false,默认为false,该参数表示是否变换为0均值,将返回一个密输出,因此不适用于稀疏输人。 进行 StandardScaler 标准化需要获取数据每一维的均值和标准差,并以此缩放每一维特征。

MinMaxScaler()为常用的最小值-最大值归一化方法,这个方法也针对每一维特征进行处理,将每一维特征线性地映射到指定的区间中,通常是[0,1]。MinMaxScaler()方法有两 个参数可以设置,说明如下。 min:默认为 0,指定区间的下限。 max:默认为1,指定区间的上限。

回归

回归指研究一组随机变量(y1,y2,...yi)和另一组变量(x1,x2,...xy)之间关系的统计分析方法,又称多重回归分析。通常前者是因变量,后者是自变量。回归算法是一种监督学习算法,利用已知标签或结果的训练数据训练模型并预测结果。有监督学习的算法要求输人数据的类型为 LabeledPoint 类型。LabeledPoint类型数据包含一个标签和一个数据特征向量。

① 线性回归。线性回归通过一组线性组合预测输出值。在 MLib 中可以用于线性回归算法的类主要有 LinearRegressionWithSGD、RidgeRegressionWithSGD 和LassoWithSGD,这些类均采用随机梯度下降法求解回归方程。有以下几个用于算法调优的参数(不是每个类都有这么多参数,需要根据具体选择的算法设置相应的参数)。 3)回归 numIterations:运行时的迭代次数,默认值为100。 stepSize:梯度下降的步长,默认值为 1.0。 intercept:是否给数据增加干扰特征或偏差特征,默认值为 false。 reParam:LASS0 归(Least Absolute Shrinkage and Selection Operator)和岭回归(Ridge Regression)的正规化参数,默认值为 1.0。

② 逻辑回归。逻辑回归是一种二分类的回归算法,预测的值为新点属于每个类的概率,将概率大于等于阈值的分到一个类,小于值的分到另一个类。在 Mib 中,逻辑回归算法的输人值为 LabeledPoint 类型数据。MLlib 有两个实现逻辑回归的算法包,一个是 LogisticRegressionWithLBFGS,另一个是LogisticRegressionWithSGB。前者的效果好于后者。 LogisticRegressionWithLBFGS 通过 train()方法可以得到一个 LogisticRegressionModel对每个点的预测返回一个0~1的概率值,按照默认阈值0.5将该点分配到一个类中。阈值的设定可以采用 setThreshold()方法,在定义 LogisticRegressionWithLBFGS 时进行。也可以使用 clearThreshold0方法,设置为不分类,直接输出概率值。在数据不平衡的情况下可以调整阈值大小。

分类

分类算法包括朴素贝叶斯、支持向量机、决策树、随机森林和逻辑回归等。分类算法是一种有监督的学习方法,训练数据有明确的类别标签,需要使用Mib的LabeledPoint类作为模型数据类型。

① 朴素贝叶斯。朴素贝叶斯是一种十分简单的分类算法。朴素贝叶斯对于给出的特定features,求解在此项出现条件下各个类别出现的概率,并将其归类为概率最大的类别。在 Spark 中,可以通过调用 mllib.classification.NaiveBayes类实现朴素贝叶斯算法,有多分类和二分类两种方式。朴素贝叶斯支持的参数1ambda用于进行平滑化。数据类型需要为 LabeledPoint组成的 RDD,对于C个分类,标签值在0~(C-1)之间。

② 支持向量机。支持向量机是一种线性或非线性分割平面的二分类方法,有0或1两种标签。在MLlib中调用SVMWithSGD可以实现算法,SVMWithSGD在mllib.classification.SVMModel中,模型参数与线性回归参数差不多,通过 train()方法可以返回一个 SVMModel模型。该模型同 LogisticRegressionModel模型一样是通过阈值分类的,因此LogisticRegressionModel设置阈值的方法和清除阈值的方法对SVMModel也同样适用。SVMModel模型通过predict()方法可以预测数据的类别。

③ 决策树。决策树是分类和回归的常用算法,因为决策树容易处理类别特征,所以比较适合处理多分类的问题。MLib 支持二分类和多分类的决策树。决策树以节点树的形式表示,每个节点代表一个向量,向量的不同特征值会使节点有多条指向下个节点的边,最底层的叶子节点为预测的结果,可以是分类的特征,也可以是连续的特征。每个节点的选择都遵循某一种使模型更加优化的算法,如基于信息增益最大的方法。 在 MLib中,可以调用 mllib.tree.DecisionTree 类中的 trainClassifier()静态方法训练分类树,调用 trainRegressor()方法训练回归树。决策树模型需要的参数说明如下。 data:LabeledPoint 类型的RDD。 numClasses:分类时用于设置分类个数。 immpurity:节点的不纯净度测量,分类时的值可以为gini或entropy,回归的值则必须为 variance。 maxDepth:树的最大深度。 maxBins :每个特征分裂时,最大划分的节点数量。 categoricalFeaturesInfo:一个映射表,用于指定哪些特征用于分类,以及各有多少个分类。如特征1用于0、1的二元分类,特征2用于0、1、2、3的4元分类,则应该传递 Map(1->2,2->4);如果没有特征用于分类,则传递一个空的映射。

聚类

聚类是一种无监督学习的方法,用于将高度相似的数据分到一类中。聚类没有类别标签,仅根据数据相似度进行分类,因此聚类通常用于数据探索、异常检测,也用于一般数据的分群。聚类的方法有很多,计算相似度的方法也有很多,K-Means算法是较常使用的 一种算法。 MLlib 包含一个 K-Means 算法以及一个称为 K-MeansⅡ的变种算法,用于为并行环境提供更好的初始化策略,使K个初始聚类中心的获取更加合理。

① maxIterations:最大循环次数,聚类算法的最大迭代次数,默认值为100。 ② initializationMode:指定初始化聚类中心的方法,有“k-meansⅡ”和“random两个选择,“k-meansⅡ”选项在选取初始聚类中心时会尽可能地找到K个距离较远的聚类中心。 ③ run:算法并发运行的数目,即运行K-Means 的次数。

关联规则

FP算法作为一个关联规则算法,在推荐系统中也得到了广泛应用。FP算法主要通过大量的客户购买历史数据生成频繁项集,设置支持度,筛选出符合支持度的频繁项集,根据频繁项集生成一些规则后,再通过置信度过滤出较有说服力的强关联规则。通过强关联规则即可完成推荐、分类等工作。 mllib.fpm.FPGrowth是MLlib 中实现 FP算法的算法包,通过 FPGrowth 对象中的 run(方法训练模型,找出符合支持度的频繁项集,再通过模型的generateAssociationRulesO方法找出符合置信度的规则。

推荐

目前热门的推荐算法主要是协同过滤算法。协同过滤算法有基于内容和基于用户两个方面,主要根据用户历史记录和对商品的评分记录计算用户间的相似性,找出与用户购买的商品最为相似的商品推荐给目标用户。 MLlib目前有一个实现推荐算法的包为ALS,根据用户对各种产品的交互和评分推荐新产品,通过最小二乘法来求解模型。在mllib.recommendation.ALS算法包中要求输人类型为 mllib.recommendation.Rating的 RDD,通过 train()方法训练模型,得到一个mllib.recommendation.MatrixFactorizationModel对象。ALS有显式评分(默认)和隐式反馈(ALS.trainlmplicit())两种方法,显式评分是指用户对商品有明确评分,预测结果也是评分隐式反馈是指用户和产品的交互置信度,预测结果也是置信度。ALS模型的优化参数主要有4个,说明如下。

① rank:使用的特征向量的大小,更大的特征向量会产生更好的模型,但同时也需要花费更大的计算代价,默认为10。 ② iterations:算法迭代的次数,默认为 10。 ③ lambda:正则化参数,默认为 0.01。 ④ alpha:用于在隐式反馈 ALS 中计算置信度,默认为 1.0。

MLlib 中的模型评估

对于机器学习而言,无论使用哪种算法,模型评估都是非常重要的。通过模型评估可以知道模型的好坏,预测分类结果的准确性,有利于对模型进行修正。 考虑到模型评估的重要性,MLlib在mllib.evaluation包中定义了很多方法,主要分布在 BinaryClassificationMetrics 和 MulticlassMetrics等类中。通过 mllib.evaluation 包中的类可以通过“(预测,实际值)”形式的 RDD 创建一个 Metrics 对象,计算准确率、召回率、F值、ROC曲线评价指标。

小结

从机器学习的简单概念和机器学习常用算法的介绍引入,介绍了SparkMLlib的概念及其发展历史等,详细介绍了Mlib中的算法以及算法包的使用,使用 Spark MLlib 构建决策树分类模型实现网络攻击类型识别。

相关思维导图模板

二手书销售平台新航标思维导图

树图思维导图提供 二手书销售平台新航标 在线思维导图免费制作,点击“编辑”按钮,可对 二手书销售平台新航标  进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:a92403b70afada50cf4fa4f56e0981c9

催收系统升级思维导图

树图思维导图提供 催收系统升级 在线思维导图免费制作,点击“编辑”按钮,可对 催收系统升级  进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:71297774a95b163403440d1ee14ad2e1