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

本文涉及的产品
交互式建模 PAI-DSW,5000CU*H 3个月
简介:

本节书摘来自华章计算机《Scala机器学习》一书中的第3章,第3.4节,作者:[美] 亚历克斯·科兹洛夫(Alex Kozlov),更多章节内容可以访问云栖社区“华章计算机”公众号查看。

3.4 机器学习库

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

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

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

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

![image](https://yqfile.alicdn.com/e39fdf5c557f1c69634afa363d66905697d198aa.png)

正则化的目的是惩罚更复杂的模型,以避免过拟合和降低泛化错误。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章会讨论其具体的实现。

相关实践学习
使用PAI-EAS一键部署ChatGLM及LangChain应用
本场景中主要介绍如何使用模型在线服务(PAI-EAS)部署ChatGLM的AI-Web应用以及启动WebUI进行模型推理,并通过LangChain集成自己的业务数据。
机器学习概览及常见算法
机器学习(Machine Learning, ML)是人工智能的核心,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能,它是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。 本课程将带你入门机器学习,掌握机器学习的概念和常用的算法。
相关文章
|
3天前
|
机器学习/深度学习 PyTorch TensorFlow
【Python机器学习专栏】Python环境下的机器学习库概览
【4月更文挑战第30天】本文介绍了Python在机器学习中的重要性及几个主流库:NumPy用于数值计算,支持高效的数组操作;Pandas提供数据帧和序列,便利数据处理与分析;Matplotlib是数据可视化的有力工具;Scikit-learn包含多种机器学习算法,易于使用;TensorFlow和Keras是深度学习框架,Keras适合初学者;PyTorch则以其动态计算图和调试工具受到青睐。这些库助力机器学习研究与实践。
|
2月前
|
机器学习/深度学习 存储 监控
使用Scala编写控制局域网上网软件的机器学习算法
在当今数字化世界中,对于使用控制局域网上网软件控制上网活动的需求越来越迫切。无论是家庭、学校还是企业,都需要有效的方法来监控和管理用户在局域网上的上网行为。本文将介绍如何使用Scala编写机器学习算法来实现这一目标,同时提供一些代码示例来说明具体的实现方式。
117 0
|
机器学习/深度学习 分布式计算 Hadoop
|
机器学习/深度学习 人工智能 分布式计算
|
机器学习/深度学习 分布式计算 算法
《Scala机器学习》一一3.7 总结
本节书摘来自华章出版社《Scala机器学习》一 书中的第3章,第3.7节,作者:[美] 亚历克斯·科兹洛夫(Alex Kozlov)著 ,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
992 0
|
存储 机器学习/深度学习 分布式计算
《Scala机器学习》一一3.6 运行Hadoop的HDFS
本节书摘来自华章出版社《Scala机器学习》一 书中的第3章,第3.6节,作者:[美] 亚历克斯·科兹洛夫(Alex Kozlov)著 ,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1601 0
|
机器学习/深度学习 分布式计算 资源调度
《Scala机器学习》一一3.5 Spark的性能调整
本节书摘来自华章出版社《Scala机器学习》一 书中的第3章,第3.5节,作者:[美] 亚历克斯·科兹洛夫(Alex Kozlov)著 ,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1344 0
|
机器学习/深度学习 分布式计算 算法
《Scala机器学习》一一3.4 机器学习库
本节书摘来自华章出版社《Scala机器学习》一 书中的第3章,第3.4节,作者:[美] 亚历克斯·科兹洛夫(Alex Kozlov)著 ,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
2291 0
|
存储 分布式计算 Shell
《Scala机器学习》一一3.3 应用
本节书摘来自华章出版社《Scala机器学习》一 书中的第3章,第3.3节,作者:[美] 亚历克斯·科兹洛夫(Alex Kozlov)著 ,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1352 0
|
存储 分布式计算 资源调度
《Scala机器学习》一一3.2 理解Spark的架构
本节书摘来自华章出版社《Scala机器学习》一 书中的第3章,第3.2节,作者:[美] 亚历克斯·科兹洛夫(Alex Kozlov)著 ,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1744 0

热门文章

最新文章