版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第12章
大数据与机器学习
机器学习概述
基于Spark的机器学习库应用示例12《大数据技术》1.1机器学习算法机器学习的概念人工智能的核心技术是研究怎样使用计算机模拟或实现人类学习活动的科学。机器学习技术的分类(根据模型的不同)传统机器学习(基于统计的机器学习)深度学习(基于深度神经网络模型的机器学习)1.机器学习概述3《大数据技术》1.1机器学习算法学习方法的分类有监督学习(训练数据有标签)无监督学习(训练数据无标签)半监督学习(部分数据有标签)强化学习(利用人类反馈优化模型训练)迁移学习(预训练模型用于新的任务)1.机器学习概述4《大数据技术》1.2大数据与机器学习大数据的核心是利用数据的价值,机器学习是利用数据价值的关键技术,对于大数据而言,机器学习是不可或缺的。对于机器学习而言,越多的数据会越可能提升模型的精确性,同时复杂的机器学习算法的计算时间也迫切需要分布式计算与内存计算这样的关键技术。机器学习的兴盛也离不开大数据的帮助。大数据与机器学习两者是互相促进,相依相存的关系。1.机器学习概述5《大数据技术》2.1SparkMLlibMLlib是Spark的机器学习(MachineLearning)库。采用较为先进的迭代式、内存存储的分析计算,使得数据的计算处理速度大大高于普通的数据处理引擎。MLlib旨在简化机器学习的工程实践工作,并方便扩展到更大规模。MLlib采用Scala语言编写,借助了函数式编程设计思想,开发人员在开发过程中只需要关注数据,而不需要关注算法本身,所要做的就是传递参数和调试参数。MLlib由一些通用的学习算法和工具组成,包括分类、回归、聚类、协同过滤、降维等,同时还包括底层的优化原语和高层的管道API。2.基于Spark的机器学习库6《大数据技术》2.2TensorFlowonSparkTensorOnSpark的特点如下:(1)易于大容量数据准备;(2)高效的计算机资源分配;(3)可靠,灵活的并行参数更新;(4)高度兼容Tensorflow;(5)低网络流量和高学习准确性2.基于Spark的机器学习库7《大数据技术》3.1决策树与随机森林模型决策树(decisiontree)又称预测树,是一种树型结构的分类或预测分析模型3.应用实例sexIncomeAgeYesYesNoNo分支-测试结果内部节点-决策变量叶节点-类别标签Femalemale≤45,000>45,000≤40>40一个用于预测客户是否会购买产品的决策树8《大数据技术》3.1决策树与随机森林模型决策树的应用医生评估病人过程使用的症状检查列表游戏的人工智能引擎通过决策树控制自主行为零售商通过决策树划分客户类型或预测促销活动的反应
银行采用决策树帮助决定批准还是拒绝贷款申请。计算机使用if-then决策规则来预测客户是否会拖欠贷款。对于那些结果明确(强)的客户,不需要人工干预;对于那些没有产生明确响应的观测,则需要人为决策3.应用实例9《大数据技术》3.1决策树与随机森林模型决策树学习算法
目标是从训练数据集中构建出决策树
决策树学习算法是以实例为基础的归纳学习
基本思想:采用自顶向下的递归方法,以信息熵为度量,从训练数据集中学习(拟合)出一棵决策树3.应用实例10《大数据技术》3.1决策树与随机森林模型决策树学习算法
目标是从训练数据集中构建出决策树
决策树学习算法是以实例为基础的归纳学习
基本思想:采用自顶向下的递归方法,以信息熵为度量,从训练数据集中学习(拟合)出一棵决策树某银行在定向促销活动中收集的原始数据IDJobMaritalEducationDefaultHousingLoanContactPoutcomeSubscribed1managementsingletertiarynoyesnocellularunknownno2servicesdivorcedsecondarynononocellularunknownyes3managementmarriedtertiarynoyesnocellularunknownno4managementmarriedsecondarynoyesnounknownunknownno5blue-collarmarriedsecondarynoyesnocellularotherno6entrepreneurmarriedtertiarynoyesnocellularfailureyes7technicianmarriedtertiarynononocellularunknownno所有变量都是分类的,其中default表示是否有信用违约,poutcome表示先前市场营销活动的结果,subscribed表示是否签约了定期存款;其它属性从字面理解即可《大数据技术》11为了帮助理解决策树学习算法原理,给出这些实例数据的统计结果Job:blue-collar435management423technician339admin235services168retired92Marital:divorced228married1201single571Education:primary335secondary1010tertiary564unknown91Default:no1961yes39Loan:no1717yes283Job:self-employed69housemaid63unemployed60student36unknown10Poutcome:failure210other79success58unknown1653Month:may581jul340aug278jun232nov183apr118other268Contact:cellular1287telephone136unknown577Housing:no916yes1084Subscribed:no1789yes2111789/2000no1763/194232/58no26/4526/50yes5/5yes8/8poutcome=successeducation=secondary,tertiarypoutcome=failure,other,unknowneducation=primary,unknownJob=admin,blue-collar,management,retired,services,technicianJob=self-employed,student,unemployed用于预测客户是否会签约凭证式存款的决策树14《大数据技术》3.1决策树与随机森林模型
决策树学习算法的目标上面的那棵决策树是如何得到的具体就是,如何选择分裂节点根据什么继续分裂,或者说什么时候停止分裂3.应用实例15《大数据技术》3.1决策树与随机森林模型信息熵给定分类X和对应的标签x∈X,P(x)表示x的概率,则X的信息熵定义为3.应用实例信息熵刻画了一种属性提供的信息量。信息熵是衡量随机变量分布的混乱程度或不确定性的一种度量。16《大数据技术》3.1决策树与随机森林模型
在前述的银行营销案例中输出变量是subscribed,其信息熵计算如下3.应用实例P(subscribed=yes)=211/2000=0.1055P(subscribed=no)=1789/2000=0.8945
Hsubscribed=-0.1055*log20.1055–0.8945*log20.8945≈0.4862输出变量的熵又称为基础熵17《大数据技术》3.1决策树与随机森林模型
条件熵给定属性X,其值是x,结果属性是Y,值是y,条件熵HY|X定义为3.应用实例=条件熵:给定某个随机变量(X)的条件下,随机变量Y的熵对X的数学期望。本质上,条件熵表达了在X被考虑进来的条件下,随机变量Y的不确定性。18《大数据技术》3.1决策树与随机森林模型在上述银行营销案例中,如果选择属性Contact,即X={cellular,telephone,unknown},结果属性是subscribed,即Y={yes,no},则有3.应用实例cellulartelephoneunknownP(Contact)0.64350.06800.2885P(subscribed=yes|Contact)0.13990.08080.0347P(subscribed=no|Contact)0.86010.91920.9653Hsubscribed|contact=-[0.6435*(0.1399*log20.1399+0.8601*log20.8601)+0.0680*(0.0809*log20.0809+0.9192*log20.9192)+0.2885*(0.0347*log20.0347+0.9653*log20.9653)]=0.466119《大数据技术》3.1决策树与随机森林模型信息增益属性A的信息增益定义为基础熵与属性的条件熵之差3.应用实例在前述银行营销案例中,属性Contact的信息增益为InfoGainA=HS–HS|AInfoGainContact=Hsubscribed–Hsubscribed|Contact=0.4862–0.4661=0.020120《大数据技术》3.1决策树与随机森林模型
信息增益表达了什么信息增益越大的属性,被认为是越能消除不确定性的属性,也就是越具有决策意义的属性。
决策树学习算法的核心思想,就是通过计算(统计)选择信息增益大的属性进行分裂。信息增益描述了一个属性的纯净度(purity)。3.应用实例21《大数据技术》3.1决策树与随机森林模型
在银行营销案例中,首次分裂时所有属性的信息增益(注意:结果属性均为subscribed):3.应用实例属性信息增益Poutcome0.0289Contact0.0201Housing0.0133Job0.0101Education0.0034Marital0.0018Loan0.0010Default0.000522《大数据技术》3.1决策树与随机森林模型决策树学习算法的基本过程(通用算法)第一步:在属性集上计算属性的信息增益
第二步:选择信息增益最大属性进行分裂
第三步:对属性的子集递归构建子树T1,T2,…,直到满足下列任意一种条件为止:树中所有叶节点满足最小纯净度阈值树不能根据预设的最小纯净度阈值进一步分裂满足其他任何停止标准(如树的最大深度)3.应用实例23《大数据技术》3.1决策树与随机森林模型
ID3算法ID3(IterativeDichotomiser3)算法是由悉尼大学罗斯昆(J.RossQuinlan)在1975年提出的一种分类预测算法,算法的核心是“信息熵”。ID3算法通过计算每个属性的信息增益,认为信息增益高的是好属性,每次划分选取信息增益最高的属性为划分标准,重复这个过程,直至生成一个能分类训练样例的决策树。3.应用实例24《大数据技术》3.1决策树与随机森林模型C4.5算法核心与ID3算法一致,主要在以下几方面对ID3算法进行了改进:用信息增益率来选择属性,克服了用信息增益选择属性时偏向选择取值多的属性的不足在树构造过程中进行剪枝能够完成对连续属性的离散化处理能够对不完整数据进行处理3.应用实例25《大数据技术》3.1决策树与随机森林模型CART算法ClassificationAndRegressionTree不使用信息增益或增益率来选择属性,转而采用基尼指数3.应用实例基尼指数描述了属性的不纯净度。算法试图找到杂质变量最小的一个划分,以该属性划分的子树即为最优分支。26《大数据技术》3.1决策树与随机森林模型缺点与改进:容易过拟合,导致泛化能力不强。通过限制决策树深度等来改进。训练数据发生小的变动,会导致树结构的显著改变。通过集成学习方法解决。寻找最优决策树是一个NP难问题,启发式方法容易陷入局部最优。可以通过集成学习方法改善。决策树很难学习复杂的关系,采用神经网络模型。某些特征样本比例过大,生成的决策树容易偏向于这些特征。通过调节样本权重来改善。3.应用实例27《大数据技术》3.2基于SparkMLlib的贷款风险预测3.应用实例packagecom.csuimportorg.apache.spark._importorg.apache.spark.rdd.RDDimportorg.apache.spark.sql.SQLContextimportorg.apache.spark.sql.functions._importorg.apache.spark.sql.types._importorg.apache.spark.sql._importorg.apache.spark.ml.classification.RandomForestClassifierimportorg.apache.spark.ml.evaluation.BinaryClassificationEvaluatorimportorg.apache.spark.ml.feature.StringIndexerimportorg.apache.spark.ml.feature.VectorAssemblerimportorg.apache.spark.ml.tuning.{ParamGridBuilder,CrossValidator}importorg.apache.spark.ml.{Pipeline,PipelineStage}importorg.apache.spark.mllib.evaluation.RegressionMetricsobjectCredit{caseclassCredit(creditability:Double,balance:Double,duration:Double,history:Double,purpose:Double,amount:Double,savings:Double,employment:Double,instPercent:Double,sexMarried:Double,guarantors:Double,residenceDuration:Double,assets:Double,age:Double,concCredit:Double,apartment:Double,credits:Double,occupation:Double,dependents:Double,hasPhone:Double,foreign:Double)}defparseCredit(line:Array[Double]):Credit={Credit(line(0),line(1)-1,line(2),line(3),line(4),line(5),line(6)-1,line(7)-1,line(8),line(9)-1,line(10)-1,line(11)-1,line(12)-1,line(13),line(14)-1,line(15)-1,line(16)-1,line(17)-1,line(18)-1,line(19)-1,line(20)-1)}defparseRDD(rdd:RDD[String]):RDD[Array[Double]]={rdd.map(_.split(",")).map(_.map(_.toDouble))}defmain(args:Array[String]){valconf=newSparkConf().setAppName("SparkDFebay")valsc=newSparkContext(conf)valsqlContext=newSQLContext(sc)importsqlContext._importsqlContext.implicits._valcreditDF=parseRDD(sc.textFile("germancredit.csv")).map(parseCredit).toDF().cache()creditDF.registerTempTable("credit")creditDF.printSchemacreditDF.showsqlContext.sql("SELECTcreditability,avg(balance)asavgbalance,avg(amount)asavgamt,avg(duration)asavgdurFROMcreditGROUPBYcreditability").showcreditDF.describe("balance").showcreditDF.groupBy("creditability").avg("balance").showvalfeatureCols=Array("balance","duration","history","purpose","amount","savings","employment","instPercent","sexMarried","guarantors","residenceDuration","assets","age","concCredit","apartment","credits","occupation","dependents","hasPhone","foreign")valassembler=newVectorAssembler().setInputCols(featureCols).setOutputCol("features")valdf2=assembler.transform(creditDF)df2.showvallabelIndexer=newStringIndexer().setInputCol("creditability").setOutputCol("label")valdf3=labelIndexer.fit(df2).transform(df2)df3.showvalsplitSeed=5043valArray(trainingData,testData)=df3.randomSplit(Array(0.7,0.3),splitSeed)valclassifier=newRandomForestClassifier().setImpurity("gini").setMaxDepth(3).setNumTrees(20).setFeatureSubsetStrategy("auto").setSeed(5043)valmodel=classifier.fit(trainingData)valevaluator=newBinaryClassificationEvaluator().setLabelCol("label")valpredictions=model.transform(testData)model.toDebugStringvalaccuracy=evaluator.evaluate(predictions)println("accuracybeforepipelinefitting"+accuracy)valrm=newRegressionMetrics(predictions.select("prediction","label").rdd.map(x=>(x(0).asInstanceOf[Double],x(1).asInstanceOf[Double])))println("MSE:"+rm.meanSquaredError)println("MAE:"+rm.meanAbsoluteError)println("RMSESquared:"+rm.rootMeanSquaredError)println("RSquared:"+rm.r2)println("ExplainedVariance:"+rm.explainedVariance+"\n")valparamGrid=newParamGridBuilder().addGrid(classifier.maxBins,Array(25,31)).addGrid(classifier.maxDepth,Array(5,10)).addGrid(classifier.numTrees,Array(20,60)).addGrid(classifier.impurity,Array("entropy","gini")).build()valsteps:Array[PipelineStage]=Array(classifier)valpipeline=newPipeline().setStages(steps)valcv=newCrossValidator().setE
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 达州市三年级试卷及答案
- 2026年介入科护理安全试题及答案
- 2026年激素药物使用观察护理试题及答案
- 2026年杭州市拱墅区教育局所属事业单位招考易考易错模拟试题(共500题)试卷后附参考答案
- 2026年曲靖市农业局所属事业单位招聘考试招聘易考易错模拟试题(共500题)试卷后附参考答案
- 2026年无锡江阴市市级机关事业单位招考编外合同制工作人员招考公易考易错模拟试题(共500题)试卷后附参考答案
- 2026年成都市成华区政府投资项目评审管理中心招聘易考易错模拟试题(共500题)试卷后附参考答案
- 2026年张掖市临泽县事业单位及招考易考易错模拟试题(共500题)试卷后附参考答案
- 2026年广西防城港市安全生产监督管理局招考3人易考易错模拟试题(共500题)试卷后附参考答案
- 2026年广西贵港市就业服务中心招募高校毕业生就业见习人员3人易考易错模拟试题(共500题)试卷后附参考答案
- 井盖开启作业指导书
- (正式版)DB36∕T 964-2017 《病死猪堆积自然发酵技术规程》
- 2025年广东省从“五方面人员”中选拔乡镇领导班子成员考试历年参考题库含答案详解
- 2026年BIM与人工智能结合的未来趋势
- 加油站光伏发电工程施工方案
- 水产公司内部管理制度
- 开利制冷离心机组系统培训课件
- 雨课堂学堂在线学堂云《多元统计与SPSS软件应用(山西医科)》单元测试考核答案
- 科研项目立项及验收流程详解
- 公路应急抢险知识培训
- 煤矿竖井回填施工方案
评论
0/150
提交评论