版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
通信数据分析与实战SparkMLlib机器学习算法库第八章第1节2知道机器学习的作用熟悉机器学习的学习方式熟悉机器学习的应用学习目标TARGET机器学习概述机器学习是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科,专门研究计算机如何模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。机器学习概述机器学习是一种能够赋予机器进行自主学习,不依靠人工进行自主判断的技术,它和人类对历史经验归纳的过程有着相似之处。机器学习概述1.人类思考2.机器学习人类在学习成长的过程中,积累了很多历史经验,将经验进行归纳总结,得到规律,因此当我们遇到一些问题时,总能从事物的发展规律找到方向,进行推测。机器学习是对人类思考过程一个抽象,由于机器学习不是通过编程的形式得出结果,因此它的处理过程不是因果的逻辑,而是通过归纳思想得出的相关结论。机器学习概述在机器学习领域中,按照学习方式分类,可以让研究人员在建模和算法选择的时候,考虑根据输入数据来选择合适的算法从而得到更好的效果,通常机器学习可以分为有监督学习和无监督学习两种。1.有监督学习通过已有的训练样本(即已知数据以及其对应的输出)训练得到一个最优模型,再利用这个模型将所有的输入映射为相应的输出,对输出进行简单的判断从而实现分类的目的。例如分类、回归和推荐算法都属于有监督学习。2.无监督学习根据类别未知(没有被标记)的训练样本,而需要直接对数据进行建模,我们无法知道要预测的答案。例如聚类、降维和文本处理的某些特征提取都属于无监督学习。机器学习的应用1.电子商务机器学习在电商领域的应用主要涉及搜索、广告、推荐三个方面,在机器学习的参与下,搜索引擎能够更好的理解语义,对用户搜索的关键词进行匹配,同时它可以对点击率与转化率进行深度分析,从而利于用户选择更加符合自己需求的商品。2.医疗普通医疗体系并不能永远保持精准且快速的诊断,在目前研究阶段中,技术人员利用机器学习对上百万个病例数据库的医学影像进行图像识别分析数据,并训练模型,帮助医生做出更精准高效的诊断。机器学习的应用3.金融机器学习正在对金融行业产生重大的影响,例如在金融领域最常见的应用是过程自动化,该技术可以替代体力劳动,从而提高生产力,例如摩根大通推出了利用自然语言处理技术的智能合同的解决方案,该解决方案可以从文件合同中提取重要数据,大大节省了人工体力劳动成本;机器学习还可以应用于风控领域,银行通过大数据技术,监控账户的交易参数,分析持卡人的用户行为,从而判断该持卡人信用级别。9小结知道机器学习的作用熟悉机器学习的学习方式熟悉机器学习的应用通信数据分析与实战SparkMLlib机器学习算法库第八章第2节11知道MLlib库的作用知道机器学习的三大流程学习目标TARGETMLlib的简介MLlib是Spark提供的可扩展的机器学习库,其中封装了一些通用机器学习算法和工具类,包括分类、回归、聚类、降维等,开发人员在开发过程中只需要关注数据,而不需要关注算法本身,只需要传递参数和调试参数。机器学习的流程阶段Spark中的机器学习流程大致分为三个阶段,即数据准备阶段、训练模型评估阶段以及部署预测阶段。1.数据准备阶段在数据准备阶段,将数据收集系统采集的原始数据进行预处理,清洗后的数据便于提取特征字段与标签字段,从而生产机器学习所需的数据格式,然后将数据随机分为3个部分,即训练数据模块、验证数据模块和测试数据模块。2.训练模型评估阶段通过SparkMLlib库中的函数将训练数据转换为一种适合机器学习模型的表现形式,然后使用验证数据集对模型进行测试来判断准确率,这个过程需要重复许多次,才能得出最佳模型,最后使用测试数据集再次检验最佳模型,以避免过渡拟合的问题。机器学习的流程阶段3.部署预测阶段通过多次训练测试得到最佳模型后,就可以部署到生产系统中,在该阶段的生产系统数据,经过特征提取产生数据特征,使用最佳模型进行预测,最终得到预测结果。这个过程也是重复检验最佳模型的阶段,可以使生产系统环境下的预测更加准确。机器学习的流程阶段16小结知道MLlib库的作用知道机器学习的三大流程通信数据分析与实战SparkMLlib机器学习算法库第八章第3节18熟悉本地向量数据类型熟悉标注点数据类型熟悉本地矩阵数据类型学习目标TARGET数据类型本地向量1.密集向量(Dense)
密集向量是由Double类型的数组支持,例如,向量(1.0,0.0,3.0)的密集向量表示的格式为[1.0,0.0,3.0]。#创建一个密集本地向量valdv:Vector=Vectors.dense(1.0,0.0,3.0)dv:org.apache.spark.mllib.linalg.Vector=[1.0,0.0,3.0]数据类型本地向量2.稀疏向量(Sparse)
#创建一个稀疏本地向量valsv1:Vector=Vectors.sparse(3,Array(0,2),Array(1.0,3.0))sv1:org.apache.spark.mllib.linalg.Vector=(3,[0,2],[1.0,3.0])稀疏向量是由两个并列的数组支持,例如向量(1.0,0.0,3.0)的稀疏向量表示的格式为(3,[0,2],[1.0,3.0]),其中3是向量(1.0,0.0,3.0)的长度,[0,2]是向量中非0维度的索引值,即向量索引0和2的位置为非0元素,[1.0,3.0]是按索引排列的数组元素值。数据类型本地向量#导包scala>importorg.apache.spark.mllib.linalg.{Vector,Vectors}#创建一个密集本地向量scala>valdv:Vector=Vectors.dense(1.0,0.0,3.0)dv:org.apache.spark.mllib.linalg.Vector=[1.0,0.0,3.0]#创建一个稀疏本地向量scala>valsv1:Vector=Vectors.sparse(3,Array(0,2),Array(1.0,3.0))sv1:org.apache.spark.mllib.linalg.Vector=(3,[0,2],[1.0,3.0])#通过指定非零项目,创建稀疏本地向量scala>valsv2:Vector=Vectors.sparse(3,Seq((0,1.0),(2,3.0)))sv2:org.apache.spark.mllib.linalg.Vector=(3,[0,2],[1.0,3.0])数据类型标注点标注点实现类org.apache.spark.mllib.regression.LabeledPoint创建带有正标签和密集向量的标注点valpos=LabeledPoint(1.0,Vectors.dense(1.0,0.0,3.0))创建带有负标签和稀疏向量的标注点valneg=LabeledPoint(0.0,Vectors.sparse(3,Array(0,2),Array(1.0,3.0)))标注点是一种带有标签的本地向量,标注点通常用于监督学习算法中,MLlib使用Double数据类型存储标签,因此可以在回归和分类中使用标记点。稀疏向量数据在机器学习应用中较为常见,MLlib支持读取LIBSVM的格式数据,LIBSVM格式是一种每一行表示一个标签稀疏向量的文本格式,其格式如下:labelindex1:value1index2:value2……上述格式中,label是该样本点的标签值,“index:value”代表了该样本向量中所有非零的索引和元素值,需要注意的是,index是以1递增的。数据类型本地矩阵1.密集矩阵
importorg.apache.spark.mllib.linalg.{Matrix,Matrices}创建一个3行2列的密集矩阵scala>valdm:Matrix=Matrices.dense(3,2,Array(1.0,3.0,5.0,2.0,4.0,6.0))密集矩阵将所有元素的值存储在一个列优先的双精度数组中。数据类型本地矩阵2.稀疏矩阵
稀疏矩阵则将以列优先的非零元素压缩到稀疏列(CSC)格式中。创建一个3行2列的密集矩阵scala>valsm:Matrix=Matrices.sparse(3,2,Array(0,1,3),Array(0,2,1),
Array(9,6,8))25小结熟悉本地向量数据类型熟悉标注点数据类型熟悉本地矩阵数据类型通信数据分析与实战SparkMLlib机器学习算法库第八章第4节27熟悉统计方法学习目标TARGETSparkMLlib基本统计方法名称相关说明count列的大小mean每列的均值variance每列的方差max每列的最大值min每列的最小值numNonzeros每列非零向量的个数MLlib提供了很多统计方法,包含摘要统计、相关统计、分层抽样、假设检验、随机数生成等统计方法,利用这些统计方法可帮助用户更好地对结果数据进行处理和分析。统计量的计算用到Statistics类,摘要统计主要方法如下所示。SparkMLlib基本统计#导包scala>importorg.apache.spark.mllib.linalg.Vectorsscala>importorg.apache.spark.mllib.stat.{MultivariateStatisticalSummary,Statistics}#创建密集矩阵scala>valobservations=sc.parallelize(Seq(Vectors.dense(1.0,10.0,100.0),Vectors.dense(2.0,20.0,200.0),Vectors.dense(3.0,30.0,300.0)))#计算列摘要统计信息scala>valsummary:MultivariateStatisticalSummary=Statistics.colStats(observations)#打印平均值scala>println(summary.mean)[2.0,20.0,200.0]#打印方差scala>println(summary.variance)[1.0,100.0,10000.0]#打印每列非零元素的个数scala>println(summary.numNonzeros)[3.0,3.0,3.0]SparkMLlib基本统计相关系数是反应两个变量之间相关关系密切程度的统计指标,这也是统计学中常用的统计方式,MLlib提供了计算多个序列之间相关统计的方法,目前MLlib默认采用皮尔森相关系数计算方法。皮尔森相关系数也称皮尔森积矩相关系数,它是一种线性相关系数。相关统计SparkMLlib基本统计相关统计importorg.apache.spark.mllib.linalg._importorg.apache.spark.mllib.stat.Statisticsimportorg.apache.spark.rdd.RDD#创建序列scala>valseriesX:RDD[Double]=sc.parallelize(Array(1,2,3,3,5))scala>valseriesY:RDD[Double]=sc.parallelize(Array(11,22,33,33,555))#计算seriesX,seriesY的相关系数scala>valcorrelation:Double=Statistics.corr(seriesX,seriesY,"pearson")Correlationis:0.8500286768773001#利用皮尔森方法计算密集矩阵相关系数scala>valdata:RDD[Vector]=sc.parallelize(Seq(Vectors.dense(1.0,10.0,100.0),Vectors.dense(2.0,20.0,200.0),Vectors.dense(5.0,33.0,366.0)))
scala>valcorrelMatrix:Matrix=Statistics.corr(data,"pearson")1.00.97888346588947310.99038956952756730.97888346588947311.00.99774832339861010.99038956952756730.99774832339861011.0SparkMLlib基本统计分层抽样法也叫类型抽样法,将总体按某种特征分为若干层级,再从每一层内进行独立取样,组成一个样本的统计学计算方法。例如某手机厂家估算当地潜在用户,可以将当地居民消费水平作为分层基础,减少样本中的误差,如果不采取分层抽样,仅在消费水平较高的用户中做调查,是不能准确的估算出潜在的用户。分层抽样SparkMLlib基本统计分层抽样#创建键值对RDDscala>valdata=sc.parallelize(Seq((1,'a'),(1,'b'),(2,'c'),(2,'d'),(2,'e'),(3,'f')))#设定抽样格式scala>valfractions=Map(1->0.1,2->0.6,3->0.3)#从每层获取抽样样本scala>valapproxSample=data.sampleByKey(withReplacement=false,fractions=fractions)
#从每层获取精确样本scala>valexactSample=data.sampleByKeyExact(withReplacement=false,fractions=fractions)
#打印抽样样本scala>approxSample.foreach(println)(2,e)#打印精确样本scala>exactSample.foreach(println)(2,d)(3,f)(1,b)(2,c)34小结熟悉统计方法通信数据分析与实战SparkMLlib机器学习算法库第八章第5节36熟悉Mllib的分类学习目标TARGET分类分析方法相关算法二元分类线性支持向量机、逻辑回归、决策树、随机森林、梯度提升树、朴素贝叶斯多元分类逻辑回归、决策树、随机森林、朴素贝叶斯分类是指将事物分成不同类别,在分类模型中,可根据一组特征来判断类别,这些特征代表了物体、事物或上下文的相关属性。分类算法又被称为分类器,它是数据挖掘和机器学习领域中的一个重要分支。MLlib支持多种分类分析方法,例如二元分类、多元分类,表中列出了不同种类的问题可采用不同的分类算法。分类线性支持向量机1.线性支持向量机线性支持向量机是一种常见判别方法,在机器学习领域中是一个有监督学习模型,用来进行模式识别、分类以及回归分析。使用MLlib提供的线性支持向量机算法训练模型,需要导入线性支持向量机所需包。分类线性支持向量机//导入线性支持向量机所需包importorg.apache.spark.mllib.classification.{SVMModel,SVMWithSGD}//导入二元分类评估类importorg.apache.spark.mllib.evaluation.BinaryClassificationMetrics
//MLUtils提供了一些辅助方法,用于加载,保存和预处理MLLib中使用的数据importorg.apache.spark.mllib.util.MLUtils#加载Spark官方提供数据集scala>valdata=MLUtils.loadLibSVMFile(sc,"file:///export/servers/spark/data/mllib/sample_libsvm_data.txt")#将数据的60%分为训练数据,40%分为测试数据scala>valsplits=data.randomSplit(Array(0.6,0.4),seed=11L)scala>valtraining=splits(0).cache()scala>valtest=splits(1)#设置迭代次数scala>valnumIterations=100执行算法来构建模型scala>valmodel=SVMWithSGD.train(training,numIterations)
#用测试数据评估模型scala>valscoreAndLabels=test.map{point=>valscore=model.predict(point.features)(score,point.label)}#获取评估指标scala>valmetrics=newBinaryClassificationMetrics(scoreAndLabels)#计算二元分类的PR和ROC曲线下的面积scala>valauROC=metrics.areaUnderROC()auROC:Double=1.0#保存并加载模型scala>model.save(sc,"target/tmp/scalaSVMWithSGDModel")scala>valsameModel=SVMModel.load(sc,"target/tmp/scalaSVMWithSGDModel"分类2.逻辑回归逻辑回归又称为逻辑回归分析,是一个概率模型的分类算法,用于数据挖掘、疾病自动诊断及经济预测等领域。例如在流行病学研究中,探索引发某一疾病的危险因素,根据模型预测在不同自变量情况下,推测发生某一疾病。分类#导入逻辑回归所需包importorg.apache.spark.mllib.classification.{LogisticRegressionModel,LogisticRegressionWithLBFGS}#导入分类评估器importorg.apache.spark.mllib.evaluation.MulticlassMetricsimportorg.apache.spark.mllib.regression.LabeledPointimportorg.apache.spark.mllib.util.MLUtils#加载Spark官方提供数据集scala>valdata=MLUtils.loadLibSVMFile(sc,"file:///export/servers/spark/data/mllib/sample_libsvm_data.txt")#将数据的60%分为训练数据,40%分为测试数据scala>valsplits=data.randomSplit(Array(0.6,0.4),seed=11L)scala>valtraining=splits(0).cache()scala>valtest=splits(1)分类#运行训练算法来构建模型scala>valmodel=newLogisticRegressionWithLBFGS().setNumClasses(10).run(training)#用测试数据评估模型scala>valpredictionAndLabels=test.map{caseLabeledPoint(label,features)=> valprediction=model.predict(features)(prediction,label)}#获取评估指标scala>valmetrics=newMulticlassMetrics(predictionAndLabels)scala>valaccuracy=metrics.accuracyaccuracy:Double=1.0#保存并加载模型model.save(sc,"target/tmp/scalaLogisticRegressionWithLBFGSModel")valsameModel=LogisticRegressionModel.load(sc,"target/tmp/scalaLogisticRegressionWithLBFGSModel")43小结熟悉MLlib的分类通信数据分析与实战SparkMLlib机器学习算法库第八章第6节45熟悉推荐模型的分类掌握推荐系统案例实现学习目标TARGET推荐模型分类推荐系统的研究已相当广泛,也是最为大众所知的一种机器学习模型,目前最为流行的推荐系统所应用的算法是协同过滤,协同过滤用于推荐系统,这项技术是为填补关联矩阵的缺失项而实现推荐效果。简单的说,协同过滤是利用大量已有的用户偏好,来估计用户对其未接触过的物品的喜好程度。在协同过滤算法中有着两个分支:
基于物品的协同过滤(ItemCF)基于群体用户的协同过滤(UserCF)
推荐模型分类1.基于物品的推荐(ItemCF)基于物品的推荐是利用现有用户对物品的偏好或是评级情况,计算物品之间的某种相似度,以用户接触过的物品来表示这个用户,再寻找出和这些物品相似的物品,并将这些物品推荐给用户。2.基于用户的推荐(UserCF)基于用户的推荐,可用“志趣相投”一词所表示,通常是对用户历史行为数据分析,如购买、收藏商品或搜索内容,通过某种算法将用户喜好物品进行打分。根据不同用户对相同物品或内容数据的态度和偏好程度计算用户间关系程度,在相同喜好用户间进行商品推荐。利用MLlib实现电影推荐在电影推荐系统中,通常分为针对用户推荐电影和针对电影推荐用户两种方式。若采用基于用户的推荐模型,则会利用相似用户的评级来计算对某个用户的推荐。若采用基于物品的推荐模型,则会依靠用户接触过的物品与候选物品之间的相似度来获得推荐。在SparkMLlib实现了交替最小二乘(ALS)算法,它是机器学习的协同过滤式推荐算法,机器学习的协同过滤式推荐算法是通过观察所有用户给产品的评分来推断每个用户的喜好,并向用户推荐合适的产品。利用MLlib实现电影推荐1.准备训练模型数据利用MLlib实现电影推荐用户评分文件,即u.data文件利用MLlib实现电影推荐电影数据文件,即u.item文件利用MLlib实现电影推荐1.将数据文件解压上传到HDFS/spark/mldata/下(1)上传到Hadoop01cd/export/data/rz(2)解压ml-100kyuminstallunzip#如果没有安装,需要先安装unzip–jmk-100k(3)上传到HDFShadoopfs–put–rml-100k/spark/mkdata/利用MLlib实现电影推荐2.编写程序,训练模型(1)采用Spark-Shell读取u.data数据文件,将其转换为RDD$spark-shell--masterlocal[2]scala>valdataRdd=sc.textFile("/spark/mldata/ml-100k/u.data")scala>dataRdd.first()res0:String=1962423881250949(2)使用take()方法提取前三个字段scala>valdataRdds=dataRdd.map(_.split("\t").take(3))scala>dataRdds.first()res1:Array[String]=Array(196,242,3)利用MLlib实现电影推荐2.编写程序,训练模型importorg.apache.spark.mllib.recommendation.Rating(3)将RDD的数据转换成Rating类型scala>valratings=dataRdds.map{caseArray(user,movie,rating)=>Rating(user.toInt,movie.toInt,rating.toDouble)}scala>ratings.first()res6:org.apache.spark.mllib.recommendation.Rating=Rating(196,242,3.0)利用MLlib实现电影推荐2.编写程序,训练模型(4)使用train()函数训练模型importorg.apache.spark.mllib.recommendation.ALSscala>valmodel=ALS.train(ratings,50,10,0.01)model:org.apache.spark.mllib.recommendation.MatrixFactorizationModel=org.apache.spark.mllib.recommendation.MatrixFactorizationModel@6580f76c利用MLlib实现电影推荐3.为用户推荐多个电影#定义用户idscala>valuserid=100#定义推荐数量scala>valnum=10scala>valtopRecoPro=model.recommendProducts(userid,num)topRecoPro:Array[org.apache.spark.mllib.recommendation.Rating]=Array(Rating(100,207,5.704436943409341),Rating(100,845,4.957373351732721),Rating(100,489,4.955561012970148),Rating(100,242,4.930681946988706),Rating(100,315,4.927258436518516),Rating(100,316,4.905582861372857),Rating(100,313,4.8170984786843265),Rating(100,12,4.795107
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 5《大学之道》说课稿 2024-2025学年统编版高中语文选择性必修上册
- 福建省南平市吴屯中学2021-2022学年高一化学月考试卷含解析
- 个人续签合同:2024年合作合同书意向确认版B版
- 2024弃土场租赁合同环保验收标准范本3篇
- 2023-2024学年人教版高中信息技术必修一第二章第三节《程序设计基本知识》说课稿
- 科学复习赢在期末
- 镜头下的旅行故事
- 培训服务合同(2篇)
- 《自救器的使用与创伤急救》培训课件2025
- 2024淘宝代运营服务合作协议及年度店铺运营策略优化协议3篇
- 第十七届山东省职业院校技能大赛市场营销赛项赛卷第一套
- 塔吊司机和指挥培训
- 红色简约2025蛇年介绍
- 专题3-6 双曲线的离心率与常用二级结论【12类题型】(解析版)-A4
- 光伏电站运维课件
- 粮库工程合同范本
- 江苏省苏州市2023-2024学年高一上学期期末学业质量阳光指标调研试题+物理 含解析
- 农业合作社线上线下营销方案
- 研发实验室安全培训
- 电信公司网络安全管理制度
- 安全生产标准化知识培训考核试卷
评论
0/150
提交评论