大数据BIGDATA第四章大数据挖掘工具4.1Mahout4.2SparkMLlib4.3其他数据挖掘工具习题of4424.1Mahout《大数据》配套PPT课件Mahout简介定义:ApacheMahout是一个由Java语言实现的开源的可扩展的机器学习算法库2008年之前2010年以后ApacheLucene开源搜索引擎的子项目实现Lucene框架中的聚类以及分类算法吸纳协调过滤项目Taste成为独立子项目发展历史成为Apache顶级项目实现聚类、分类和协同过滤等机器学习算法既可以单机运行也可在Hadoop平台上运行目标:机器学习平台,提供类似R的DSL以支持线性代数运算(如分布式向量计算)、大数据统计等基本功能驱象人of4434.1Mahout《大数据》配套PPT课件Mahout在各平台支持的机器学习算法算法单机MapReduceSparkH2O聚类算法————Canopydeprecateddeprecated——k-meansxx——模糊k-meansxx——流k-meansxx——谱聚类—x——分类算法————逻辑回归x———朴素贝叶斯—xx—随机森林—x——隐马尔可夫模型x———多层感知器x———协同过滤算法————基于用户的协同过滤x—x—基于物品的协同过滤xxx—基于ALS的矩阵分解xx——基于ALS的矩阵分解(隐式反馈)xx——加权矩阵分解x———降维算法————奇异值分解xxxxLanczosdeprecateddeprecated——随机SVDxxxxPCAxxxxQR分解xxxxof4444.1Mahout《大数据》配套PPT课件1.下载Mahout安装包2.解压并安装Mahout3.启动并验证Mahout安装环境:Linux操作系统(CentOS6.5)、Hadoop平台(Hadoop2.5.1)镜像网站《大数据》配套PPT课件K-means聚类算法基于Mahout命令运行k-means算法基于MahoutAPI运行k-means算法基于多维输入数据运行k-means算法同一个簇中对象具有高相似度无监督学习算法Canopy、k-means、模糊k-means、流k-means和谱聚类等都是聚类算法本节重点of4464.1.2聚类算法4.1Mahout《大数据》配套PPT课件基于Mahout命令运行k-means算法12个二维数据110111210211101102…运行聚类算法(1.5,10.5)(10.5,1.5)(10.5,10.5)聚类中心坐标以上述3个坐标为中心,半径为(0.5,0.5),生成3个聚类,每个聚类4个成员3次迭代of4474.1Mahout《大数据》配套PPT课件基于MahoutAPI运行k-means算法给出初始聚类中心1101011010调用MahoutAPI运行k-means聚类算法,指定Hadoop配置信息、输入数据、初始聚类中心,迭代2次得到聚类结果of4484.1Mahout《大数据》配套PPT课件基于多维输入数据运行k-means算法60维数据样本600条60维趋势数据(600行60列)表达了正常、循环、渐增、渐减、向上偏移和向下偏移6类趋势每类100条每类取一条做初始聚类中心运行KmeansDemo类将计算出的聚类中心数据导入到Excel文件6个聚类中心所代表的趋势曲线of4494.1Mahout《大数据》配套PPT课件考察已被分类的样本数据,学习训练分类规则有监督学习算法进行输入数据的类别判定垃圾邮件广告点击金融诈骗用电异常分类预测垃圾邮件检测of44104.1.3分类算法4.1Mahout《大数据》配套PPT课件逻辑回归算法Mahout下基于随机梯度下降(SGD)实现的逻辑回归(LogisticRegression)算法是一种二元分类算法,只能在单机上运行,适合分类算法的入门学习。可视化表达样本数据分类模型正确分类训练学习模型评估of44114.1Mahout《大数据》配套PPT课件朴素贝叶斯算法新闻网页数据数据清洗训练分类模型新闻类别判定共53条测试数据正确分类51条未正确分类2条of44124.1Mahout《大数据》配套PPT课件通过收集大量用户(协同)的喜好信息,以自动预测(过滤)用户感兴趣的商品协同过滤算法基于物品的协同过滤算法基于ALS的矩阵分解算法计算物品相似性矩阵通过矩阵分解进行预测of44134.1.4协同过滤算法4.1Mahout《大数据》配套PPT课件基于物品的协同过滤算法物品1物品2物品3物品4用户1552—用户22—35用户3—5—3用户43——5物品1物品2物品3物品4物品1—0.250.660.5物品20.25—0.330.25物品30.660.33—0.25物品40.50.250.25—物品1物品2物品3物品4用户15524.25用户223.335用户33.6754.143用户434.03.555用户评分矩阵物品相似性矩阵用户评分矩阵(补入预测评分)空白处未评分物品相似度预测评分of44144.1Mahout《大数据》配套PPT课件基于物品的协同过滤算法实现代码publicclassItemCFDemoextendsConfiguredimplementsTool{publicstaticvoidmain(String[]args)throwsException{ToolRunner.run(newConfiguration(),newItemCFDemo(),args);}@Overridepublicintrun(String[]args)throwsException{Configurationconf=getConf();try{FileSystemfs=FileSystem.get(conf);Stringdir=/itemcfdemo;if(!fs.exists(newPath(dir))){System.err.println(Pleasemakedirector/itemcfdemo);return2;}Stringinput=dir+/input;if(!fs.exists(newPath(input))){System.err.println(Pleasemakedirector/itemcfdemo/input);return2;}Stringoutput=dir+/output;Pathp=newPath(output);if(fs.exists(p)){fs.delete(p,true);}Stringtemp=dir+/temp;Pathp2=newPath(temp);if(fs.exists(p2)){fs.delete(p2,true);}RecommenderJobrecommenderJob=newRecommenderJob();recommenderJob.setConf(conf);recommenderJob.run(newString[]{--input,input,--output,output,--tempDir,temp,--similarityClassname,TanimotoCoefficientSimilarity.class.getName(),--numRecommendations,4});}catch(Exceptione){e.printStackTrace();}return0;}}of44154.1Mahout《大数据》配套PPT课件基于ALS的矩阵分解算法特征维度1特征维度2特征维度3用户11.121.490.48用户21.31-0.520.59用户31.130.67-0.52用户41.390.050.45用户特征矩阵U特征维度1特征维度2特征维度3物品11.811.620.74物品22.661.71-1.08物品31.73-0.230.78物品43.16-0.240.90物品特征矩阵M物品1物品2物品3物品4用户14.7965.0091.9693.614用户21.9651.9582.8464.795用户32.7464.7131.3952.942用户42.9303.2972.7444.785预测评分矩阵A_k用户评分矩阵A用户评分矩阵U用户评分矩阵MA=U×MT预测评分矩阵A_kof4416第四章大数据挖掘工具4.1Mahout4.2SparkMLlib4.3其他数据挖掘工具习题of44174.2SparkMLlib《大数据》配套PPT课件离散型连续型有监督的机器学习分类逻辑回归支持向量机(SVM)朴素贝叶斯决策树随机森林梯度提升决策树(GBT)回归线性回归决策树随机森林梯度提升决策树(GBT)保序回归无监督的机器学习聚类k-means高斯混合快速迭代聚类(PIC)隐含狄利克雷分布(LDA)二分k-means流k-means协同过滤、降维交替最小二乘(ALS)奇异值分解(SVD)主成分分析(PCA)MLlib支持的机器学习算法SparkMLlib运行在Spark平台上专为在集群上并行运行而设计内存中更快地实现多次迭代,适用于大规模数据集of44184.2SparkMLlib《大数据》配套PPT课件importorg.apache.spark.mllib.clustering.{KMeans,KMeansModel}importorg.apache.spark.mllib.linalg.Vectors//Loadandparsethedatavaldata=sc.textFile(data/mllib/points.txt)valparsedData=data.map(s=Vectors.dense(s.split(\\s+).map(_.toDouble))).cache()//ClusterthedataintothreeclassesusingKMeansvalk=3valnumIterations=20valclusters=KMeans.train(parsedData,k,numIterations)for(c-clusters.clusterCenters){println(c)}clusters.predict(Vectors.dense(10,10))//EvaluateclusteringbycomputingWithinSetSumofSquaredErrorsvalWSSSE=clusters.computeCost(parsedData)println(WithinSetSumofSquaredErrors=+WSSSE)[1.5,10.5][10.5,1.5][10.5,10.5]2WithinSetSumofSquaredErrors=6.000000000000057实现代码输出结果与Mahout下的k-means聚类应用相比,无论在代码量、易用性及运行方式上,MLlib都具有明显的优势of44194.2.1聚类算法4.2SparkMLlib《大数据》配套PPT课件回归算法和分类算法都是有监督的学习,分类算法预测的结果是离散的类别,而回归算法预测的结果是连续的数值线性回归——最常用的算法之一,使用输入值的线性组合来预测输出值类LinearRegressionWithSGD——MLlib实现线性回归算法的常用类之一,基于随机梯度下降实现线性回归输入函数y=0.5*x1+0.2*x2输入数据weights:[0.5000000000539042,0.1999999999989402],intercept:0.0trainingMeanSquaredError=9.576567731363342E-20输出结果of44204.2.2回归算法4.2SparkMLlib《大数据》配套PPT课件0,1000,2000,3000,4001