`
kavy
  • 浏览: 868398 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Spark 机器学习:聚类和分类

 
阅读更多

1、机器学习概述

机器学习的定义:
(1)在维基百科上对机器学习提出以下几种定义:

  • “机器学习是一门人工智能的科学,该领域的主是如何在经验学习中改善具体算法的性能”。
  • “机器学习是对能通过经验自动改进的计算机算法的研究”。
  • “机器学习是用数据或以往的经验,以此优化计算机程序的性能标准。”一种经常引用的英文定义是:A computer program is said to learn from experience with respect to some class of tasks T and performance measure P, if its performance at tasks in T,as measured by P, improves with experience E。

 

 

(2)可以看出机器学习强调三个关键词:算法、经验、性能,其处理过程如下图所示。
 
 

机器学习是数据通过算法构建出模型并对模型进行评估,评估的性能如果达到要求就拿这个模型来测试其他的数据,如果达不到要求就要调整算法来重新建立模型,再次进行评估,如此循环往复,最终获得满意的经验来处理其他的数据。

参考文献:云端机器学习 Pipeline 资源:
1、AWS Sagemaker:https://aws.amazon.com/cn/sagemaker/
2、Google AutoML:https://cloud.google.com/automl/

1.1.监督学习

监督是从给定的训练数据集中学习一个函数(模型),当新的数据到来时,可以根据这个函数(模型)预测结果。监督学习的训练集要求包括输入和输出,也可以说是特征和目标。训练集中的目标是由人标注(标量)的。在监督式学习下,输入数据被称为“训练数据”,每组训练数据有一个明确的标识或结果,如对防垃圾邮件系统中“垃圾邮件”、“非垃圾邮件”,对手写数字识别中的“1”、“2”、“3”等。在建立预测模型时,监督式学习建立一个学习过程,将预测结果与“训练数据”的实际结果进行比较,不断调整预测模型,直到模型的预测结果达到一个预期的准确率。常见的监督学习算法包括回归分析和统计分类:

  • 二元分类是机器学习要解决的基本问题,将测试数据分成两个类,如垃圾邮件的判别、房贷是否允许等问题的判断。
  • 多元分类是二元分类的逻辑延伸。例如,在因特网的流分类的情况下,根据问题的分类,网页可以被归类为体育、新闻、技术等,依此类推。

监督学习常常用于分类,因为目标往往是让计算机去学习我们已经创建好的分类系统。数字识别再一次成为分类学习的常见样本。一般来说,对于那些有用的分类系统和容易判断的分类系统,分类学习都适用。

 

监督学习是训练神经网络和决策树的最常见技术。神经网络和决策树技术高度依赖于事先确定的分类系统给出的信息。对于神经网络来说,分类系统用于判断网络的错误,然后调整网络去适应它;对于决策树,分类系统用来判断哪些属性提供了最多的信息,如此一来可以用它解决分类系统的问题。
 
 

1.2 无监督学习

与监督学习相比,无监督学习的训练集没有人为标注的结果。在非监督式学习中,数据并不被特别标识,学习模型是为了推断出数据的一些内在结构。常见的应用场景包括关联规则的学习以及聚类等。常见算法包括 Apriori 算法和 k-Means 算法。这类学习类型的目标不是让效用函数最大化,而是找到训练数据中的近似点。聚类常常能发现那些与假设匹配的相当好的直观分类,例如基于人口统计的聚合个体可能会在一个群体中形成一个富有的聚合,以及其他的贫穷的聚合。
无监督学习的目标是我们不告诉计算机怎么做,而是让它(计算机)自己去学习怎样做一些事情。非监督学习一般有两种思路:其中一种思路是在指导 Agent 时不为其指定明确的分类,而是在成功时采用某种形式的激励制度。需要注意的是,这类训练通常会置于决策问题的框架里,因为它的目标不是产生一个分类系统,而是做出最大回报的决定。这种思路很好地概括了现实世界,Agent 可以对那些正确的行为做出激励,并对其他的行为进行处罚。

1.3 半监督学习

半监督学习(Semi-supervised Learning)是介于监督学习与无监督学习之间一种机器学习方式,是模式识别和机器学习领域研究的重点问题。它主要考虑如何利用少量的标注样本和大量的未标注样本进行训练和分类的问题。半监督学习对于减少标注代价,提高学习机器性能具有非常重大的实际意义。主要算法有五类:基于概率的算法;在现有监督算法基础上进行修改的方法;直接依赖于聚类假设的方法等,在此学习方式下,输入数据部分被标识,部分没有被标识,这种学习模型可以用来进行预测,但是模型首先需要学习数据的内在结构以便合理地组织数据来进行预测。应用场景包括分类和回归,算法包括一些对常用监督式学习算法的延伸,这些算法首先试图对未标识数据进行建模,在此基础上再对标识的数据进行预测,如图论推理算法(Graph Inference)或者拉普拉斯支持向量机(Laplacian SVM)等。半监督学习分类算法提出的时间比较短,还有许多方面没有更深入的研究。半监督学习从诞生以来,主要用于处理人工合成数据,无噪声干扰的样本数据是当前大部分半监督学习方法使用的数据,而在实际生活中用到的数据却大部分不是无干扰的,通常都比较难以得到纯样本数据。

1.4 强化学习

 

 

强化学习通过观察来学习动作的完成,每个动作都会对环境有所影响,学习对象根据观察到的周围环境的反馈来做出判断。在这种学习模式下,输入数据作为对模型的反馈,不像监督模型那样,输入数据仅仅是作为一个检查模型对错的方式,在强化学习下,输入数据直接反馈到模型,模型必须对此立刻做出调整。常见的应用场景包括动态系统以及机器人控制等。常见算法包括 Q-Learning 以及时间差学习(Temporal difference learning)。
 
 

在企业数据应用的场景下,人们最常用的可能就是监督式学习和非监督式学习的模型。在图像识别等领域,由于存在大量的非标识的数据和少量的可标识数据,目前半监督式学习是一个很热的话题。而强化学习更多地应用在机器人控制及其他需要进行系统控制的领域。

1.5 深度学习

 

 

深度学习算法是对人工神经网络的发展,在近期赢得了很多关注,特别是百度也开始发力深度学习后,更是在国内引起了很多关注。在计算能力变得日益廉价的今天,深度学习试图建立大得多也复杂得多的神经网络。很多深度学习的算法是半监督式学习算法,用来处理存在少量未标识数据的大数据集。常见的深度学习算法包括:受限波尔兹曼机(Restricted Boltzmann Machine, RBN)、 Deep Belief Networks(DBN)、卷积网络(Convolutional Network)、堆栈式自动编码器(Stacked Auto�encoders)。
 
 

 

网络结构:
 
 

1.5 集成学习

集成算法用一些相对较弱的学习模型独立地对同样的样本进行训练,然后把结果整合起来进行整体预测。集成算法的主要难点在于究竟集成哪些独立的较弱的学习模型以及如何把学习结果整合起来。这是一类非常强大的算法,同时也非常流行。常见的算法包括:Boosting、Bootstrapped Aggregation(Bagging)、AdaBoost、堆叠泛化(Stacked Generalization, Blending)、梯度推进机(Gradient Boosting Machine, GBM)、随机森林(Random Forest)。
参考文档:https://xgboost.readthedocs.io/en/latest/

2. Spark MLlib 介绍

Spark 之所以在机器学习方面具有得天独厚的优势,有以下几点原因:
(1)机器学习算法一般都有很多个步骤迭代计算的过程,机器学习的计算需要在多次迭代后获得足够小的误差或者足够收敛才会停止,迭代时如果使用 Hadoop 的MapReduce 计算框架,每次计算都要读/写磁盘以及任务的启动等工作,这会导致非常大的 I/O 和 CPU 消耗。而 Spark 基于内存的计算模型天生就擅长迭代计算,多个步骤计算直接在内存中完成,只有在必要时才会操作磁盘和网络,所以说 Spark 正是机器学习的理想的平台。
(2)从通信的角度讲,如果使用 Hadoop 的 MapReduce 计算框架,由于是通过heartbeat 的方式来进行的通信和传递数据,会导致非常慢的执行速度,而 Spark 具有出色而高效的 Akka 和 Netty 通信系统,通信效率极高。

 

 

MLlib(Machine Learnig lib) 是 Spark 对常用的机器学习算法的实现库,同时包括相关的测试和数据生成器。Spark 的设计初衷就是为了支持一些迭代的 Job, 这正好符合很多机器学习算法的特点。在 Spark 官方首页中展示了 Logistic Regression 算法在 Spark和 Hadoop 中运行的性能比较,如图下图所示。
 
 

可以看出在 Logistic Regression 的运算场景下,Spark 比 Hadoop 快了 100 倍以上!

MLlib 目前支持 4 种常见的机器学习问题: 分类、回归、聚类和协同过滤,MLlib 在

 

Spark 整个生态系统中的位置如图下图所示。
 
 

MLlib 基于 RDD,天生就可以与 Spark SQL、GraphX、Spark Streaming 无缝集成,以 RDD 为基石,4 个子框架可联手构建大数据计算中心!

 

 

MLlib 是 MLBase 一部分,其中 MLBase 分为四部分:MLlib、MLI、ML Optimizer 和MLRuntime。ML Optimizer 会选择它认为最适合的已经在内部实现好了的机器学习算法和相关参数,来处理用户输入的数据,并返回模型或别的帮助分析的结果;MLI 是一个进行特征抽取和高级 ML 编程抽象的算法实现的 API 或平台;MLlib 是 Spark 实现一些常见的机器学习算法和实用程序,包括分类、回归、聚类、协同过滤、降维以及底层优化,该算法可以进行可扩充; MLRuntime 基于 Spark计算框架,将 Spark 的分布式计算应用到机器学习领域。
 
 

2.1 Spark MLlib 架构解析

从架构图可以看出 MLlib 主要包含三个部分:

  • 底层基础:包括 Spark 的运行库、矩阵库和向量库;

  • 算法库:包含广义线性模型、推荐系统、聚类、决策树和评估的算法;

  •  

     

    实用程序:包括测试数据的生成、外部数据的读入等功能。
     
     

2.1 MLlib 算法库分析

 
 
2.2.1 分类算法

支持向量机(SVM)算法把输入数据映射到一个高阶的向量空间, 在这些高阶向量空间里, 有些分类或者回归问题能够更容易解决。

 
 
开源实现:libsvm 介绍(https://www.csie.ntu.edu.tw/~cjlin/libsvm/

 

2.2.2 回归算法

线性回归是利用称为线性回归方程的函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析方法,只有一个自变量的情况称为简单回归,大于一个自变量情况的叫做多元回归,在实际情况中大多数都是多元回归。
线性回归(Linear Regression)问题属于监督学习(Supervised Learning)范畴,又称分类(Classification)或归纳学习(Inductive Learning)。这类分析中训练数据集中给出的数据类型是确定的。机器学习的目标是,对于给定的一个训练数据集,通过不断的分析和学习产生一个联系属性集合和类标集合的分类函数(Classification Function)或预测函数(Prediction Function),这个函数称为分类模型(Classification
Model——或预测模型(Prediction Model)。通过学习得到的模型可以是一个决策树、规格集、贝叶斯模型或一个超平面。通过这个模型可以对输入对象的特征向量预测或对对象的类标进行分类。
回归问题中通常使用最小二乘(Least Squares)法来迭代最优的特征中每个属性的比重,通过损失函数(Loss Function)或错误函数(Error Function)定义来设置收敛状态,即作为梯度下降算法的逼近参数因子。

 

logistic 回归主要是进行二分类预测,也即是对于 0~1 之间的概率值,当概率大于0.5 预测为 1,小于 0.5 预测为 0.显然,我们不能不提到一个函数,即sigmoid=1/(1+exp(-inX)),该函数的曲线类似于一个 s 型,在 x=0 处,函数值为 0.5。
 
 
2.2.3. 聚类算法

所谓聚类问题,就是给定一个元素集合 D,其中每个元素具有 n 个可观察属性,使用某种算法将 D 划分成 k 个子集,要求每个子集内部的元素之间相异度尽可能低,而不同子集的元素相异度尽可能高。其中每个子集叫做一个簇。

K-Means 属于基于平方误差的迭代重分配聚类算法,其核心思想十分简单:

  1. 随机选择 K 个中心点;
  2. 计算所有点到这 K 个中心点的距离,选择距离最近的中心点为其所在的簇;
  3. 简单地采用算术平均数(mean)来重新计算 K 个簇的中心;
  4. 重复步骤 2 和 3,直至簇类不再发生变化或者达到最大迭代值;
  5. 输出结果。

总结:
1、 课程整体总结:
(1)首先讲的是存储
(2)数据转化、清洗
(3)人工智能
2、 深度学习是基于gpu的大量使用和数据的丰富才变得非常热门的。



作者:梦捷者
链接:https://www.jianshu.com/p/7c1fa0a89da4
 
分享到:
评论

相关推荐

    spark机器学习Kmeans聚类

    spark机器学习,Scala语言开发,能够实现Kmeans聚类。

    Spark2.x机器学习实战(算法篇:基于Kaggle竞赛数据集,六大算法模型构建)视频教程

    Spark2.x机器学习实战(算法篇:基于Kaggle竞赛数据集,六大算法模型构建),本课程主要讲解基于Spark 2.x的机器学习库,MLlib实现了常用的机器学习,如:聚类、分类、回归等6大算法,使用Kaggle竞赛数据集模型构建...

    专注大数据 Spark ML 机器学习:监督学习、无监督学习

    专注大数据 Spark ML 机器学习:监督学习、无监督学习,主要有:分类算法、回归算法、聚类算法、推荐算法、频繁模式挖掘算法.zip

    Spark2.x机器学习实战(算法篇:基于Kaggle竞赛数据集,六大算法模型构建).rar

    Spark2.x机器学习实战,本课程主要讲解基于Spark 2.x的机器学习库,MLlib实现了常用的机器学习,如:聚类、分类、回归等6大算法,使用Kaggle竞赛数据集模型构建。本课拒绝枯燥的讲述,将循序渐进从Spark2.x的基础...

    Spark 机器学习.xmind.zip

    MLlib是Spark的机器学习(ML)库。其目标是使实用的机器学习可扩展且容易,思维导图中详细地描述了Spark ML机器学习库相关的技术点及使用示例

    基于Spark框架的聚类算法研究

    大数据的挖掘是当今的研究热点,也有着巨大的商业价值。新型框架Spark部署在...该文研究了Spark中的机器学习中的聚类算法KMeans,先分析了算法思想,再通过实验分析其应用的方法,然后通过实验结果分析其应用场景和不足。

    基于Spark的机器学习应用框架研究与实现

    聚类分析和分类分析是机器学习的重要领域,K-means算法和随机 森林算法分别是聚类分析和分类分析中最常用的算法之一。然而, K-means算法和随机森林算法都存在一些限制和缺点。K-means算法中 的群组数目K值需要使用...

    机器学习聚类分支.xmind

    对机器学习中的聚类算法做了一个全局的思维导图,包括聚类主流算法,当前应用实现途径(python、 spark),算法性能评价指标,相似性度量种类

    基于Spark的机器学习平台设计与实现

    论文主要针对机器学习任务中的常见场景,基于Spark平台设计和实现了其 中经典的算法,包括并行化的线性回归、支持向量机、KMeans聚类算法,基于 图计算模型抽象的矩阵分解、PageRank算法,以及数据流KMeans聚类算法...

    Spark框架机器学习算法

    Spark框架里面,各种机器学习算法的实现,包括 贝叶斯分类器, 关联规则, 聚类, 决策树,协同过滤推荐算法

    SparkML算法详解(关于DataFrame的API操作)--机器学习(Scala与Java版)

    Spark的机器学习(ML)库提供了许多分布式ML算法。这些算法包括特征提取、分类、回归、聚类、推荐等任务。ML还提供了用于构建工作流的ML管道、用于调优参数的交叉验证器以及用于保存和加载模型的模型持久性等工具。 其...

    用Spark进行大数据处理之机器学习篇

    Spark机器学习API包含两个package:spark.mllib和spark.ml。spark.mllib包含基于弹性数据集(RDD)的原始Spark机器学习API。它提供的机器学习技术有:相关性、分类和回归、协同过滤、聚类和数据降维。spark.ml提供...

    spark机器学习库学习记录.zip

    随着统计学的发展,统计学习在机器学习中占据了重要地位,支持向量机(SVM)、决策树和随机森林等算法的提出和发展,使得机器学习能够更好地处理分类、回归和聚类等任务。进入21世纪,深度学习成为机器学习领域的...

    毕业设计源码-基于Spark的Kmeans聚类算法优化+源代码+文档说明

    1、资源内容:毕业设计源码-基于Spark的Kmeans聚类算法优化... (2)ML聚类程序:利用Spark的机器学习库的聚类函数进行聚类测试。 (3)MD聚类程序:将网上提供的那个优化算法进行优化聚类测试。 (4)数据库操作程序:

    基于Spark2.x机器学习十大案例全方位剖析视频教程

    基于Spark2.x机器学习十大案例全方位剖析视频教程 十大案例全方位剖析: 案例1、基于Kaggle的StumbleUpon数据集构建分类系统 案例2、基于BikeSharing数据集构建回归模型 案例3、基于NewsCorpora数据集文本处理新闻...

    57Spark MLlib之分类与聚类.docx

    Spark Mllib学习敲代码

    spark数据分析

    大数据数据分析类

    基于 Spark 框架的文本主题特征提取与分类

    主题模型目前广泛应用于机器学习与自然语言分析等领域,该模型自动分析一系列未识别的文档,试图通过统计信息发现多个抽象主题。主题模型在新闻文本智能处理与推荐领域的应用前景十分广阔。本文首先从文档自动分类为...

    MLlib--Spark提供的可扩展的机器学习库.zip

    MLlib(Machine Learnig lib) 是Spark对常用的机器学习算法的实现库,同时包括相关的测试和数据生成器。MLlib目前支持4种常见的机器学习问题: 分类、回归、聚类和协同过滤。

Global site tag (gtag.js) - Google Analytics