Spark学习之基于MLlib的机器学习

Spark学习之基于MLlib的机器学习

1. 机器学习算法尝试根据训练数据(training data)使得表示算法行为的数学目标最大化,并以此来进行预测或作出决定。

2. MLlib完成文本分类任务步骤:

(1)首先用字符串RDD来表示你的消息

(2)运行MLlib中的一个特征提取(feature extraction)算法来把文本数据转换为数值特征(适合机器学习算法处理);该操作会返回一个向量RDD。

(3)对向量RDD调用分类算法(比如逻辑回归);这步会返回一个模型对象,可以使用该对象对新的数据点进行分类。

(4)使用MLlib的评估函数在测试数据集上评估模型。

3. MLlib包含的主要数据类型:

  • Vector
  • LabeledPoint
  • Rating
  • 各种Model类

4. 操作向量

  • 向量有两种:稠密向量和稀疏向量
    • 稠密向量:把所有维度的值存放在一个浮点数数组中
    • 稀疏向量:只把各维度的非零值存储下来
    • 优先考虑稀疏向量,也是关键的优化手段
  • 创建向量的方式在各语言上有一些细微差别

5. 算法

  • 特征提取
    • TF-IDF(词频——逆文档频率)使用用来从文本文档(例如网页)中生成特向量的简单方法。
    • MLlib用两个算法来计算TF-IDF:Hashing和IDF,都在mllib.feature包内。
    • 缩放,大多数要考虑特征向量中各元素的幅值,并且在特征缩放调整为平等对待时表现最好。
    • 正规化,在准备输入数据时,把向量正规化为长度1。使用Normalizer类可以实现。
    • Word2Vec是一个基于神经网络的文本特征算法,可以用来将数据传给许多下游算法。
  • 统计
  • 分类和归类
    • 分类与回归是监督学习的两种形式。
    • 监督学习是指算法尝试使用有标签的训练数据根据对象的特征预测结果。
    • 在分类中,预测出的变量是离散的。
    • 在回归中,预测出的变量是连续的。
    • MLlib中包含许多分类与回归算法:如简单的线性算法以及决策树和森林算法。
  • 聚类
    • 聚类算法是一种无监督学习任务,用于将对象分到具有高度相似性的聚类中。
    • 聚类算法主要用于数据探索(查看一个新数据集是什么样子)以及异常检测(识别与任意聚类都相聚较远的点)。
    • MLlib中包含两个聚类中流行的K-means算法,以及一个叫做K-means||的变种,可以提供为并行环境提供更好的初始化策略。
  • 协同过滤与推荐
    • 协同过滤是一种根据用户对各种产品的交互与评分来推荐新产品的推荐系统技术。
    • 交替最小二乘(ALS),会为每个用户和产品都设一个特征向量,这样用户向量和产品向量的点积就接近于他们的得分。
  • 降维
    • 主成分分析(PCA)
      • PCA会把特征映射到低位空间,让数据在低维空间表示的方差最大化,从而忽略一些无用的维度。
      • 要计算这种映射,我们要构建出正规化的相关矩阵,并使用这个矩阵的奇异向量和奇异值。
      • 与最大的一部分奇异值相对应的奇异向量可以用来重建原始数据的主要成分。
//Scala中的PCA

import org.apache.spark.mllib.linalg.Matrix
import org.apache.spark.mllib.linalg.distributed.RowMatrix

val points:RDD[Vector]=//...
val mat:RowMatrix = new RowMatrix(points)
val pc:Matrix = mat.computerPrincipalComponents(2)

//将点投影到低维空间中
val projected = mat.nultiply(pc).rows

//在投影出的二维数据上训练k-means模型
val model = KMeans.train(projected,10)
  • 降维
    • 奇异值分解
      • MLlib也提供底层的奇异值分解(简称SVD)原语。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数据处理

回归

看一下损失函数的导函数tanh(x),当x偏离0时,tanh(x)趋向+1或者-1

652
来自专栏PPV课数据科学社区

KNN算法在保险业精准营销中的应用

一、KNN算法概述 KNN是Machine Learning领域一个简单又实用的算法,与之前讨论过的算法主要存在两点不同: 它是一种非参方法。即不必像线性回归、...

2736
来自专栏小樱的经验随笔

【机器学习笔记之八】使用朴素贝叶斯进行文本的分类

使用朴素贝叶斯进行文本的分类 引言 朴素贝叶斯由贝叶斯定理延伸而来的简单而强大的概率模型,它根据每个特征的概率确定一个对象属于某一类别的概率。该方法基于一个假设...

3435
来自专栏MixLab科技+设计实验室

深度学习生成舞蹈影片01之MDN

Dance generator using Variational Autoencoder, LSTM and Mixture Density Network.

1503
来自专栏人工智能LeadAI

机器学习之分类性能度量指标 : ROC曲线、AUC值、正确率、召回率

在分类任务中,人们总是喜欢基于错误率来衡量分类器任务的成功程度。错误率指的是在所有测试样例中错分的样例比例。实际上,这样的度量错误掩盖了样例如何被分错的事实。在...

5014
来自专栏专知

机器学习的Pytorch实现资源集合

【导读】该项目用pytorch实现了从最基本的机器学习算法:回归、聚类,到深度学习、强化学习等。该项目的目的不是生成尽可能优化和计算效率的算法,而是以透明和可访...

1461
来自专栏AI2ML人工智能to机器学习

广义XX分布概述

对于常见的分布,大家对一些指数簇分布(Exponential Family Distribution)都很熟悉,譬如正太分布,二项式分布,当然不是所有的分布都是...

792
来自专栏利炳根的专栏

学习笔记CB008:词义消歧、有监督、无监督、语义角色标注、信息检索、TF-IDF、

词义消歧,句子、篇章语义理解基础,必须解决。语言都有大量多种含义词汇。词义消歧,可通过机器学习方法解决。词义消歧有监督机器学习分类算法,判断词义所属分类。词义消...

43824
来自专栏利炳根的专栏

学习笔记CB006:依存句法、LTP、N-最短路径、由字构词分词法、图论、概率论

依存句法分析,法国语言学家L.Tesniere1959年提出。句法,句子规则,句子成分组织规则。依存句法,成分间依赖关系。依赖,没有A,B存在错误。语义,句子含...

4163
来自专栏机器学习算法原理与实践

用scikit-learn学习K-Means聚类

    在K-Means聚类算法原理中,我们对K-Means的原理做了总结,本文我们就来讨论用scikit-learn来学习K-Means聚类。重点讲述如何选择...

531

扫码关注云+社区