基于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

目录
相关文章
|
3月前
|
机器学习/深度学习 数据采集 人工智能
AI与机器学习:从理论到实践
【10月更文挑战第2天】本文将深入探讨AI和机器学习的基本概念,以及它们如何从理论转化为实际的应用。我们将通过Python代码示例,展示如何使用机器学习库scikit-learn进行数据预处理、模型训练和预测。无论你是AI领域的初学者,还是有一定基础的开发者,这篇文章都将为你提供有价值的信息和知识。
|
2月前
|
人工智能 JSON 算法
Qwen2.5-Coder 系列模型在 PAI-QuickStart 的训练、评测、压缩及部署实践
阿里云的人工智能平台 PAI,作为一站式、 AI Native 的大模型与 AIGC 工程平台,为开发者和企业客户提供了 Qwen2.5-Coder 系列模型的全链路最佳实践。本文以Qwen2.5-Coder-32B为例,详细介绍在 PAI-QuickStart 完成 Qwen2.5-Coder 的训练、评测和快速部署。
Qwen2.5-Coder 系列模型在 PAI-QuickStart 的训练、评测、压缩及部署实践
|
23天前
|
编解码 机器人 测试技术
技术实践 | 使用 PAI+LLaMA Factory 微调 Qwen2-VL 模型快速搭建专业领域知识问答机器人
Qwen2-VL是一款具备高级图像和视频理解能力的多模态模型,支持多种语言,适用于多模态应用开发。通过PAI和LLaMA Factory框架,用户可以轻松微调Qwen2-VL模型,快速构建文旅领域的知识问答机器人。本教程详细介绍了从模型部署、微调到对话测试的全过程,帮助开发者高效实现定制化多模态应用。
|
1月前
|
机器学习/深度学习 人工智能 算法
人工智能浪潮下的编程实践:构建你的第一个机器学习模型
在人工智能的巨浪中,每个人都有机会成为弄潮儿。本文将带你一探究竟,从零基础开始,用最易懂的语言和步骤,教你如何构建属于自己的第一个机器学习模型。不需要复杂的数学公式,也不必担心编程难题,只需跟随我们的步伐,一起探索这个充满魔力的AI世界。
49 12
|
2天前
|
人工智能 容灾 Serverless
AI推理新纪元,PAI全球化模型推理服务的创新与实践
本次分享主题为“AI推理新纪元,PAI全球化模型推理服务的创新与实践”,由阿里云高级产品经理李林杨主讲。内容涵盖生成式AI时代推理服务的变化与挑战、play IM核心引擎的优势及ES专属网关的应用。通过LM智能路由、多模态异步生成等技术,PAI平台实现了30%以上的成本降低和显著性能提升,确保全球客户的业务稳定运行并支持异地容灾,目前已覆盖16个地域,拥有10万张显卡的推理集群。
|
1月前
|
机器学习/深度学习 存储 运维
分布式机器学习系统:设计原理、优化策略与实践经验
本文详细探讨了分布式机器学习系统的发展现状与挑战,重点分析了数据并行、模型并行等核心训练范式,以及参数服务器、优化器等关键组件的设计与实现。文章还深入讨论了混合精度训练、梯度累积、ZeRO优化器等高级特性,旨在提供一套全面的技术解决方案,以应对超大规模模型训练中的计算、存储及通信挑战。
69 4
|
2月前
|
人工智能 边缘计算 JSON
DistilQwen2 蒸馏小模型在 PAI-QuickStart 的训练、评测、压缩及部署实践
本文详细介绍在 PAI 平台使用 DistilQwen2 蒸馏小模型的全链路最佳实践。
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
探索机器学习:从理论到实践
在这篇文章中,我们将深入探讨机器学习的世界。我们将首先了解机器学习的基本概念和原理,然后通过一个简单的代码示例,展示如何实现一个基本的线性回归模型。无论你是初学者还是有经验的开发者,这篇文章都将帮助你更好地理解和应用机器学习。
|
2月前
|
机器学习/深度学习 数据采集 人工智能
探索机器学习:从理论到Python代码实践
【10月更文挑战第36天】本文将深入浅出地介绍机器学习的基本概念、主要算法及其在Python中的实现。我们将通过实际案例,展示如何使用scikit-learn库进行数据预处理、模型选择和参数调优。无论你是初学者还是有一定基础的开发者,都能从中获得启发和实践指导。
55 2
|
2月前
|
机器学习/深度学习 数据采集 人工智能
探索机器学习:从理论到实践
【10月更文挑战第35天】在这篇文章中,我们将深入探讨机器学习的世界。我们将从基础理论开始,然后逐步过渡到实际应用,最后通过代码示例来展示如何实现一个简单的机器学习模型。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的信息和见解。