Spark入门:SparkMLlib介绍

机器学习可以看做是一门人工智能的科学,该领域的主要研究对象是人工智能。机器学习利用数据或以往的经验,以此优化计算机程序的性能标准。一种经常引用的英文定义是:

AcomputerprogramissaidtolearnfromexperienceEwithrespecttosomeclassoftasksTandperformancemeasureP,ifitsperformanceattasksinT,asmeasuredbyP,improveswithexperienceE。

机器学习强调三个关键词:算法、经验、性能,其处理过程如上图所示。在数据的基础上,通过算法构建出模型并对模型进行评估。评估的性能如果达到要求,就用该模型来测试其他的数据;如果达不到要求,就要调整算法来重新建立模型,再次进行评估。如此循环往复,最终获得满意的经验来处理其他的数据。机器学习技术和方法已经被成功应用到多个领域,比如个性推荐系统,金融反欺诈,语音识别,自然语言处理和机器翻译,模式识别,智能控制等。

传统的机器学习算法,由于技术和单机存储的限制,只能在少量数据上使用。即以前的统计/机器学习依赖于数据抽样。但实际过程中样本往往很难做好随机,导致学习的模型不是很准确,在测试数据上的效果也可能不太好。随着HDFS(HadoopDistributedFileSystem)等分布式文件系统出现,存储海量数据已经成为可能。在全量数据上进行机器学习也成为了可能,这顺便也解决了统计随机性的问题。然而,由于MapReduce自身的限制,使得使用MapReduce来实现分布式机器学习算法非常耗时和消耗磁盘IO。因为通常情况下机器学习算法参数学习的过程都是迭代计算的,即本次计算的结果要作为下一次迭代的输入,这个过程中,如果使用MapReduce,我们只能把中间结果存储磁盘,然后在下一次计算的时候从新读取,这对于迭代频发的算法显然是致命的性能瓶颈。

MLlib是Spark的机器学习(MachineLearning)库,旨在简化机器学习的工程实践工作,并方便扩展到更大规模。MLlib由一些通用的学习算法和工具组成,包括分类、回归、聚类、协同过滤、降维等,同时还包括底层的优化原语和高层的管道API。具体来说,其主要包括以下几方面的内容:

Spark机器学习库从1.2版本以后被分为两个包:

使用MLPipelineAPI可以很方便的把数据处理,特征转换,正则化,以及多个机器学习算法联合起来,构建一个单一完整的机器学习流水线。这种方式给我们提供了更灵活的方法,更符合机器学习过程的特点,也更容易从其他语言迁移。Spark官方推荐使用spark.ml。如果新的算法能够适用于机器学习管道的概念,就应该将其放到spark.ml包中,如:特征提取器和转换器。开发者需要注意的是,从Spark2.0开始,基于RDD的API进入维护模式(即不增加任何新的特性),并预期于3.0版本的时候被移除出MLLib。

在接下来的几个章节里,我们将从基本的机器学习算法入手,循序渐进的来学习Spark平台下的机器学习。

厦门大学软件工程系副教授,2009年毕业于中国人民大学计算机系获工学博士学位。主要研究方向是网络数据管理,车载网络,大数据分析和管理。

THE END
1.学习算法需要什么样的数学基础?具体看做哪方面的算法,普通码农有高数基础就行了,大数据需要概率论和数理统计方面的知识,机器学习需要线性代数、数值分析、最优化、概率论、随机过程等知识,密码学涉及到线性代数、抽象代数、代数几何等,网上这些课程都有。https://zhidao.baidu.com/question/655607816979994805.html
2.深度强化学习:一万字带你从入门到放弃51CTO博客要理解并掌握 DQN 算法,需要增强学习和深度学习的多方面知识,笔者在 2014 年底开始接触 DQN,但由于对基础知识掌握不全,导致竟然花了近 1 年的时间才真正理解 DQN 的整个算法。因此,本专栏从今天开始推出 **DQN 从入门到放弃 系列 ** 文章,意在通过对增强学习,深度学习等基础知识的讲解,以及基于 Tensorflow 的https://blog.51cto.com/azelearining/3178108
3.什么是数据结构?什么是算法?怎么学习数据结构与算法?学习算法,我们不需要死记硬背那些冗长复杂的背景知识、底层原理、指令语法……需要做的是领悟算法思想、理解算法对内存空间和性能的影响,以及开动脑筋去寻求解决问题的最佳方案。相比编程领域的其他技术,算法更纯粹,更接近数学,也更具有趣味性。 本文将回顾数据结构与算法的基础知识,学习日常所接触场景中的一些算法和策https://maimai.cn/article/detail?fid=1744039689&efid=u2sSJyH6RePBrCh7o1dCfA
4.迁移学习基础知识及DAN算法代码解析· 为什么需要迁移学习 · 迁移学习的研究领域 · 迁移学习的应用 · 基础知识 · 迁移学习的基本方法 · 迁移学习算法-TCA · 迁移学习算法-Deep Adaptation Networks 定义 · 迁移学习是一种学习的思想和模式。 · 迁移学习作为机器学习的一个重要分支,侧重于将已经学习过的知识迁移应用于新的问题中。 http://www.360doc.com/content/12/0121/07/4310958_893222638.shtml
5.算法工程师要学什么常见问题算法工程师必备七大技能:数据结构和算法编程语言数学基础算法设计与分析分布式系统机器学习和深度学习软件工程实践,助力解决计算机科学和工业中的复杂问题。 算法工程师必修技能 算法工程师是计算机科学领域的专业人员,负责设计、分析和实现高效算法来解决计算问题。要成为一名合格的算法工程师,需要掌握以下核心技能: 1. 数据https://m.php.cn/faq/816502.html
6.思考一下,联邦学习可以训练大语言模型吗?澎湃号·湃客但真实状况下的联邦学习,客户端节点很多是手机、平板,FedLLM 并不能适配这些情况。同样的问题也存在于客户端节点数据量的情况,即 FedLLM 假设客户端是足够容纳训练本地 LLM 所需要的数据量的。最后,FedLLM 并没有讨论什么样的聚合算法适合 FL for LLM,也没有讨论是否需要改进客户端训练 LLM 的算法,这对于真正https://www.thepaper.cn/newsDetail_forward_23798909
7.人工智能岗位需要具备哪些技能?二、数学与统计学基础: 人工智能技术依赖于数学和统计学的基础。线性代数、概率论、统计学等领域的知识对于理解和设计机器学习算法至关重要。对于深度学习等复杂模型,掌握微积分和优化理论也是必不可少的。这些数学和统计学基础将帮助您更好地理解算法原理,进行模型调整和改进。 https://www.cda.cn/view/203040.html
8.科学网—[转载]强化学习在资源优化领域的应用2.2 强化学习算法基础 根据智能体在与环境交互过程中具体学习的内容,可以把无须对环境进行建模(即model-free)的强化学习算法分为两大类:直接学习动作执行策略的策略优化算法(如REINFORCE)和通过学习一个值函数进而做出动作执行决策的值优化算法(如Q-learning)。 https://blog.sciencenet.cn/blog-3472670-1312677.html
9.BP神经网络基础算法腾讯云开发者社区BP神经网络基础算法 BP算法是一种有监督式的学习算法,其主要思想是:输入学习样本,使用反向传播算法对网络的权值和偏差进行反复的调整训练,使输出的向量与期望向量尽可能地接近,当网络输出层的误差平方和小于指定的误差时训练完成,保存网络的权值和偏差。具体步骤如下:https://cloud.tencent.com/developer/article/2034926
10.统计学习方法(豆瓣)—— 引自章节:第一篇 监督学习 算法2.2 (感知机学习算法的对偶形式) (3) 如果 y_i(\sum_{j=1}^N \alpha_j y_j x_j \dot x_i+b) \le 0, \alpha_i \leftarrow \alpha_i+\eta b \leftarrow b + \eta y_i (查看原文) https://book.douban.com/subject/10590856/
11.腾讯算法岗武功秘籍(上)尤其最后的两三道编程题,其实腾讯出的都是常规题,只要数据结构和算法基础扎实,AC两三道应该没问题。 ★ 语言组织能力也很重要,逻辑能力好点,做过的事给面试官讲清楚。就算很水的项目,多介绍下原理,多说说自己的理解,多讲讲自己的改进,还是有很多谈资的。 ★ 腾讯机器学习算法岗的面试算是非常正规的了,整套https://www.flyai.com/article/930
12.深度学习高手笔记卷1:基础算法本书通过扎实、详细的内容和清晰的结构,从算法理论、算法源码、实验结果等方面对深度学习算法进行分析和介绍。本书共三篇,第一篇主要介绍深度学习在计算机视觉方向的一些卷积神经网络,从基础骨干网络、轻量级 CNN、模型架构搜索 3 个方向展开,介绍计算机视觉方向的里程碑算法;第二篇主要介绍深度学习在自然语言处理方向的https://www.epubit.com/bookDetails?id=UB7d8623610d375
13.入门必看算法基础知识讲解小白都也能看得懂就比如我需要输出1到100范围内的所有数值,我们会考虑到使用循环语句输出,使用循环语句输出这个思路就可以说是算法,然后实际上根据这个思路编写出来的代码就可以称为程序。 四、算法效率的度量方法 四、算法效率的度量方法 通过上文的介绍,大家已经对算法有了初步的了解,但是,实际情况如何衡量一个算法的好坏呢,相https://blog.csdn.net/m0_63174618/article/details/138362160
14.机器学习和深度学习之数学基础线性代数是机器学习和深度学习算法的数学基础之一,这个系列的文章主要描述在AI算法中可能涉及的线性代数相关的基本概念和运算。本文主要参考Garrett Thomas(2018),Marc Peter Deisenroth(2018),Strang(2003),José Miguel Figueroa-O’Farrill, Isaiah Lankham(UCD, MAT67,2012)等教授的相关讲座和教材。本文的主要内容包https://www.jianshu.com/p/2134923e1f5b