基于Spark的机器学习实践 (二) - 初识MLlib(下)

简介: 基于Spark的机器学习实践 (二) - 初识MLlib(下)

2 MLlib的数据结构

2.1 本地向量(Local vector)

具有整数类型和基于0的索引和双类型值

本地向量的基类是Vector,我们提供了两个实现:DenseVectorSparseVector

◆ 本地向量是存储在本地节点上的,其基本数据类型是Vector.

其有两个子集,分别是密集的与稀疏的

  • 密集向量由表示其条目值的双数组支持
  • 而稀疏向量由两个并行数组支持:索引和值


我们一般使用Vectors工厂类来生成

例如:


◆ Vectors.dense(1.0,2.0,3.0) 主要使用稠密的

◆ Vectors.sparse(3,(0,1),(1,2),(2,3)) 稀疏的了解即可


向量(1.00.03.0)可以密集格式表示为1.00.03.0,或以稀疏格式表示为(3,02,1.03.0),其中3是矢量的大小。

2.2 标签数据(Labeled point)

与标签/响应相关联的局部矢量,密集或稀疏

在MLlib中,用于监督学习算法。 我们使用双重存储标签,所以我们可以在回归和分类中使用标记点

对于二进制分类,标签应为0(负)或1(正)

对于多类分类,标签应该是从零开始的类索引:0,1,2,…


标记点由事例类 LabeledPoint 表示


◆ 我们在前面介绍过"监督学习”, 知道监督学习是(x,y)数据形式,其中这个y就是标签,X是特征向量

标签数据也是一样,我们看一下这个代码

LabeledPoint(1.0,Vectors.dense(1.0,2.0,3.0))

2.3 本地矩阵

本地矩阵具有整数类型的行和列索引和双类型值,存储在单个机器上。 MLlib支持密集矩阵,其入口值以列主序列存储在单个双阵列中,稀疏矩阵的非零入口值以列主要顺序存储在压缩稀疏列(CSC)格式中


与向量相似,本地矩阵类型为Matrix , 分为稠密与稀疏两种类型。同样使

用工厂方法Matrices来生成。但是要注意,MLlib的矩阵是按列存储的。

例如下面创建一个3x3的单位矩阵:

Matrices.dense(3,3,Array(1,0,0,0,1,0,0,0,1))

类似地,稀疏矩阵的创建方法

Matrices.sparse(3,3,Array(0,1,2,3),Array(0,1,2),Array(1,1,1))

2.4 分布式矩阵

◆ 把一个矩数据分布式存储到多个RDD中

将分布式矩阵进行数据转换需要全局的shuffle函数

最基本的分布式矩阵是RowMatrix.


分布式矩阵具有长类型的行和列索引和双类型值,分布式存储在一个或多个RDD中。选择正确的格式来存储大型和分布式矩阵是非常重要的。将分布式矩阵转换为不同的格式可能需要全局shuffle,这是相当昂贵的。到目前为止已经实现了四种类型的分布式矩阵。


基本类型称为RowMatrix。 RowMatrix是没有有意义的行索引的行向分布式矩阵,例如特征向量的集合。它由其行的RDD支持,其中每行是局部向量。我们假设RowMatrix的列数不是很大,因此单个本地向量可以合理地传递给驱动程序,也可以使用单个节点进行存储/操作。 IndexedRowMatrix与RowMatrix类似,但具有行索引,可用于标识行和执行连接。 CoordinateMatrix是以坐标 list(COO) 格式存储的分布式矩阵,由其条目的RDD支持。 BlockMatrix是由MatrixBlock的RDD支持的分布式矩阵,它是(Int,Int,Matrix)的元组。


2.5 分布式数据集

◆ RDD Dataset DataFrame都是Spark的分布式数据集的数据格式

三者在一定程度上可以互相转化,有各自的适用范围

其中RDD是最为基础与简单的一种数据集形式


2.5.1 RDD

◆ RDD(Resilient Distributed Datasets),弹性分布式数据集,是Spark中结构最简单,也是最常用的一类数据集形 式。

可以理解为把输入数据进行简单的封装之后形成的对内存数据的抽象。

image.png

2.5.2 Dataset

◆ 与RDD分行存储,没有列的概念不同,Dataset 引入了列的概念,这一点类似于一个CSV文件结构。类似于一个简单的2维表

image.png

2.5.3 DataFrame

DataFrame结构与Dataset 是类似的,都引|入了列的概念

与Dataset不同的是,DataFrame中的毎一-行被再次封装刃Row的対象。需要通过该対象的方法来获取到具体的值.

3 MLlib与ml

3.1 Spark提供的机器学习算法

◆ 通用算法

分类,回归,聚类等

◆ 特征工程类

降维,转换,选择,特征提取等

◆数学工具

概率统计 ,矩阵运算等

◆ pipeline 等

3.2 MLlib与ml的区别

MLlib采用RDD形式的数据结构,而ml使用DataFrame的结构.

◆ Spark官方希望 用ml逐步替换MLlib

◆ 教程中两者兼顾

如无特殊指明,MLlib指代Spark的机器学习组件

4 MLlib的应用场景

4.1 海量数据的分析与挖掘

◆ 例如对海量的房屋出租,出售信息进行数据挖掘,预测房价价格,租金

◆ 典型数据集:波士顿房价数据集

◆ 主要用到传统的数据挖掘算法,例如使用回归算法

4.2 大数据机器学习系统

◆ 例如自然语言处理类的系统,推荐系统等

◆ 推荐系统,需要实时进行数据的收集,统计,任务调度,定期更新训练模型

◆ 核心实现: Spark Streaming +MLlib

目录
相关文章
|
5月前
|
机器学习/深度学习 数据采集 分布式计算
【机器学习】Spark ML 对数据进行规范化预处理 StandardScaler 与向量拆分
标准化Scaler是数据预处理技术,用于将特征值映射到均值0、方差1的标准正态分布,以消除不同尺度特征的影响,提升模型稳定性和精度。Spark ML中的StandardScaler实现此功能,通过`.setInputCol`、`.setOutputCol`等方法配置并应用到DataFrame数据。示例展示了如何在Spark中使用StandardScaler进行数据规范化,包括创建SparkSession,构建DataFrame,使用VectorAssembler和StandardScaler,以及将向量拆分为列。规范化有助于降低特征重要性,提高模型训练速度和计算效率。
|
5月前
|
机器学习/深度学习 分布式计算 算法
【机器学习】Spark ML 对数据特征进行 One-Hot 编码
One-Hot 编码是机器学习中将离散特征转换为数值表示的方法,每个取值映射为一个二进制向量,常用于避免特征间大小关系影响模型。Spark ML 提供 OneHotEncoder 进行编码,输入输出列可通过 `inputCol` 和 `outputCol` 参数设置。在示例中,先用 StringIndexer 对类别特征编码,再用 OneHotEncoder 转换,最后展示编码结果。注意 One-Hot 编码可能导致高维问题,可结合实际情况选择编码方式。
|
4月前
|
机器学习/深度学习 分布式计算 API
技术好文:Spark机器学习笔记一
技术好文:Spark机器学习笔记一
34 0
|
5月前
|
机器学习/深度学习 分布式计算 算法
使用Spark进行机器学习
【5月更文挑战第2天】使用Spark进行机器学习
55 2
|
5月前
|
机器学习/深度学习 分布式计算 算法
Spark MLlib简介与机器学习流程
Spark MLlib简介与机器学习流程
|
3天前
|
机器学习/深度学习 人工智能 自然语言处理
【MM2024】阿里云 PAI 团队图像编辑算法论文入选 MM2024
阿里云人工智能平台 PAI 团队发表的图像编辑算法论文在 MM2024 上正式亮相发表。ACM MM(ACM国际多媒体会议)是国际多媒体领域的顶级会议,旨在为研究人员、工程师和行业专家提供一个交流平台,以展示在多媒体领域的最新研究成果、技术进展和应用案例。其主题涵盖了图像处理、视频分析、音频处理、社交媒体和多媒体系统等广泛领域。此次入选标志着阿里云人工智能平台 PAI 在图像编辑算法方面的研究获得了学术界的充分认可。
【MM2024】阿里云 PAI 团队图像编辑算法论文入选 MM2024
|
6天前
|
机器学习/深度学习 算法 决策智能
【机器学习】揭秘深度学习优化算法:加速训练与提升性能
【机器学习】揭秘深度学习优化算法:加速训练与提升性能
|
3天前
|
机器学习/深度学习 算法 Python
探索机器学习中的决策树算法:从理论到实践
【10月更文挑战第5天】本文旨在通过浅显易懂的语言,带领读者了解并实现一个基础的决策树模型。我们将从决策树的基本概念出发,逐步深入其构建过程,包括特征选择、树的生成与剪枝等关键技术点,并以一个简单的例子演示如何用Python代码实现一个决策树分类器。文章不仅注重理论阐述,更侧重于实际操作,以期帮助初学者快速入门并在真实数据上应用这一算法。
|
27天前
|
机器学习/深度学习 算法 TensorFlow
交通标志识别系统Python+卷积神经网络算法+深度学习人工智能+TensorFlow模型训练+计算机课设项目+Django网页界面
交通标志识别系统。本系统使用Python作为主要编程语言,在交通标志图像识别功能实现中,基于TensorFlow搭建卷积神经网络算法模型,通过对收集到的58种常见的交通标志图像作为数据集,进行迭代训练最后得到一个识别精度较高的模型文件,然后保存为本地的h5格式文件。再使用Django开发Web网页端操作界面,实现用户上传一张交通标志图片,识别其名称。
63 6
交通标志识别系统Python+卷积神经网络算法+深度学习人工智能+TensorFlow模型训练+计算机课设项目+Django网页界面
|
7天前
|
机器学习/深度学习 算法
机器学习入门(三):K近邻算法原理 | KNN算法原理
机器学习入门(三):K近邻算法原理 | KNN算法原理