热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

《Scala机器学习》一一3.4机器学习库

3.4机器学习库Spark是基于内存的存储系统,它本质上能提高节点内和节点之间的数据访问速度。这似乎与ML有一种自然契合,因为许多算法需要对数据进行多

3.4 机器学习库
Spark是基于内存的存储系统,它本质上能提高节点内和节点之间的数据访问速度。这似乎与ML有一种自然契合,因为许多算法需要对数据进行多次传递或重新分区。MLlib是一个开源库,但仍有一些私人公司还在不断按自己的方式来实现MLlib中的算法。
在第5章会看到大多数标准机器学习算法可以表示为优化问题。例如,经典线性回归会最小化回归直线与实际y值之间的距离平方和:
image

其中,是由下面的线性表达式所得到的预测值:
image

A通常称为斜率,B通常称为截距。线性优化问题更一般化的公式可以写成最小化加法函数:
image

其中,L(w | xi, yi)称为损失函数,R(w)是正则函数。正则函数增加了模型函数的复杂性,比如参数的数量(或基于此的自然对数)。下表给出了大多数常见的损失函数:
image

正则化的目的是惩罚更复杂的模型,以避免过拟合和降低泛化错误。MLlib当前支持如下的正则化:
image

其中,sign (w)是w中所有元素对应的符号向量。
当前MLlib实现了如下的算法:
基本统计
概要统计(summary statistics)
相关性
分层抽样(stratified sampling)
假设检验
流式显著性检验
随机数据生成
分类与回归
线性模型(SVM、logistic回归和线性回归)
朴素贝叶斯
决策树
集成树(随机森林和梯度提升树)
保序回归
协同过滤
交替最小二乘(alternating least squares,ALS)
聚类
k-means
Gaussian混合
Power迭代聚类(PIC)
隐狄利克雷分布(Latent Dirichlet allocation,LDA)
二分(Bisecting)k-means
流式(Streaming)k-means
降维
奇异值分解(SVD)
主成分分析(PCA)
特征提取与变换
频繁模式挖掘
FP-growth
关联规则
PrefixSpan
优化
随机梯度下降(SGD)
有限内存BFGS(L-BFGS)
第5章将会介绍其中的一些算法,而更复杂的非结构化机器学习方法将在第6章介绍。
3.4.1 SparkR
R是用流行的S编程语言实现的(S语言是当时在贝尔实验室工作的John Chambers所创建的),它目前由R统计计算基金会支持。调查表明R的人气近年来在不断增加。SparkR提供了一个轻量级前端来使用基于R的Apache Spark。从Spark 1.6.0开始,SparkR提供了一个分布式DataFrame,它支持选择、过滤、聚合等操作,这与R的DataFrame和dplyr类似,但是SparkR处理的是非常大的数据集。SparkR还支持基于MLlib的分布式机器学习。
SparkR需要R的3.0版本或更高版本,可通过./bin/sparkR来运行shell。本书将在第8章介绍SparkR。
3.4.2 图算法:Graphx和GraphFrames
图算法是其中最难的算法之一,因为若图本身不能被分割(即它能表示成一组断开的子图),那么图算法需要在节点之间有恰当的分布。对节点规模高大数百万的社交网络上进行分析开始流行的原因是,一些公司(如Facebook、谷歌和LinkedIn)的研究人员已经提出了新的方法来规范图表示、算法以及问答类型。
GraphX是一个图计算的现代框架,在2013年的一篇论文提出了这种框架(GraphX: A Resilient Distributed Graph System on Spark by Reynold Xin, Joseph Gonzalez, Michael Franklin和Ion Stoica, GRADES(SIGMOD workshop), 2013)。之前的图并行框架有Pregel和PowerGraph。GraphX中的图由两个RDD表示:一个用于表示顶点;另一个用于表示边。一旦RDD加入,GraphX支持类似于Pregel的API或类似于MapReduce的API,其中map函数应用于节点的近邻,而reduce是在map结果之上进行聚合。
在写本书时,GraphX实现了如下的图算法:
PageRank
连通分量
三角计数
标签传播(label propagation)
SVD ++(协同过滤)
强连通分量
由于GraphX是一个开源库,因此其修改会被列出来。GraphFrames是Databricks公司给出的一种新的实现,它构建在DataFrame之上,完全支持如下这三种语言:Scala、Java和Python。第7章会讨论其具体的实现。



推荐阅读
  • 本文介绍了在Win10上安装WinPythonHadoop的详细步骤,包括安装Python环境、安装JDK8、安装pyspark、安装Hadoop和Spark、设置环境变量、下载winutils.exe等。同时提醒注意Hadoop版本与pyspark版本的一致性,并建议重启电脑以确保安装成功。 ... [详细]
  • 本文介绍了使用Spark实现低配版高斯朴素贝叶斯模型的原因和原理。随着数据量的增大,单机上运行高斯朴素贝叶斯模型会变得很慢,因此考虑使用Spark来加速运行。然而,Spark的MLlib并没有实现高斯朴素贝叶斯模型,因此需要自己动手实现。文章还介绍了朴素贝叶斯的原理和公式,并对具有多个特征和类别的模型进行了讨论。最后,作者总结了实现低配版高斯朴素贝叶斯模型的步骤。 ... [详细]
  • TableAPI报一下异常:FieldtypesofqueryresultandregisteredTableSink
    报错信息如下:Exceptioninthread“main”org.apache.flink.table.api.ValidationException:Fieldtypesofq ... [详细]
  • spark的任务已经执行完成:scalavallinesc.textFile(hdfs:vm122:9000dblp.rdf)line:org.apache ... [详细]
  • 基于,docker,快速,部署,多,需求,spark ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
  • 也就是|小窗_卷积的特征提取与参数计算
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了卷积的特征提取与参数计算相关的知识,希望对你有一定的参考价值。Dense和Conv2D根本区别在于,Den ... [详细]
  • 分享2款网站程序源码/主题等后门检测工具
    本文介绍了2款用于检测网站程序源码和主题中是否存在后门的工具,分别是WebShellkiller和D盾_Web查杀。WebShellkiller是一款支持webshell和暗链扫描的工具,采用多重检测引擎和智能检测模型,能够更精准地检测出已知和未知的后门文件。D盾_Web查杀则使用自行研发的代码分析引擎,能够分析更为隐藏的WebShell后门行为。 ... [详细]
  • ASP.NET2.0数据教程之十四:使用FormView的模板
    本文介绍了在ASP.NET 2.0中使用FormView控件来实现自定义的显示外观,与GridView和DetailsView不同,FormView使用模板来呈现,可以实现不规则的外观呈现。同时还介绍了TemplateField的用法和FormView与DetailsView的区别。 ... [详细]
  • 本文介绍了Linux Shell中括号和整数扩展的使用方法,包括命令组、命令替换、初始化数组以及算术表达式和逻辑判断的相关内容。括号中的命令将会在新开的子shell中顺序执行,括号中的变量不能被脚本余下的部分使用。命令替换可以用于将命令的标准输出作为另一个命令的输入。括号中的运算符和表达式符合C语言运算规则,可以用在整数扩展中进行算术计算和逻辑判断。 ... [详细]
  • 在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板
    本文介绍了在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板的方法和步骤,包括将ResourceDictionary添加到页面中以及在ResourceDictionary中实现模板的构建。通过本文的阅读,读者可以了解到在Xamarin XAML语言中构建控件模板的具体操作步骤和语法形式。 ... [详细]
  • Tomcat安装与配置教程及常见问题解决方法
    本文介绍了Tomcat的安装与配置教程,包括jdk版本的选择、域名解析、war文件的部署和访问、常见问题的解决方法等。其中涉及到的问题包括403问题、数据库连接问题、1130错误、2003错误、Java Runtime版本不兼容问题以及502错误等。最后还提到了项目的前后端连接代码的配置。通过本文的指导,读者可以顺利完成Tomcat的安装与配置,并解决常见的问题。 ... [详细]
  • Linux Shell脚步的格式
    Shell脚步等多个命令的组合,可以做成一个shell文件(1.sh)赋权执行执行命令的方式前两张新的进程中执行,对当前进程不产生影响(cdtmp;pwds ... [详细]
author-avatar
乔父系_377
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有