MLlib的设计原理:把数据以RDD的形式表示,然后在分布式数据集上调用各种算法。MLlib就是RDD上一系列可供调用的函数的集合。

操作步骤:

1、用字符串RDD来表示信息。

2、运行MLlib中的一个特征提取算法来吧文本数据转换为数值的特征。给操作会返回一个向量RDD。

3、对向量RDD调用分类算法,返回一个模型对象,可以使用该对象对新的数据点进行分类。

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

机器学习基础

机器学习算法尝试根据 训练数据 使得表示算法行为的数学目标最大化,并以此来进行预测或作出决定。包括分类、回归、聚类,每种都有不一样的目标。 所有的学习算法都需要定义每个数据点的特征集,也就是传给学习函数的值。

更重要的在于如何去正确的定义特征。  例如: 在产品推荐的任务中,仅仅机上一个额外的特征(推荐给用户的书籍也可能取决于用户看过的电影),就有可能极大地改进结果。 当数据已成为特征向量的形式后,大多数机器学习算法会根据这些向量优化一个定义好的数学模型。 然后算法会再运行结束时返回一个代表学习决定的模型。

MLlib数据类型

1、Vector

一个数学向量。MLlib既支持稠密向量也支持稀疏向量。前者表示向量的每一位都存储下来,后者则存储非零位以节省空间。

稠密向量:把所有唯独的值存放在一个浮点整数组中。

稀疏向量只把各维度中的非零值存储下来。当最多只有10%的元素为非零元素时,通常更倾向于使用稀疏向量。

spark中创建向量的方式有

import org.apache.spark.mllib.linalg.Vectors

//创建稠密向量<1.0,2.0,3.0>;Vectors.dense接收一串值或一个数组
val denseVec1 = Vectors.dense(1.0,2.0,3.0))
val denseVec2 = Vectors.dense(Array(1.0,2.0,3.0)) //创建稀疏向量<1.0,0.0,2.0,0.0>
向量的维度(4) 以及非零位的位置和对应的值
val sparseVec1 = Vectors.sparse(4,Array(0,2),Array(1.0,2.0))

2、LabeledPoint

诸如分类和回归的算法这样的监督学习算法中,LabeledPoint用来表示带标签的数据点。它包含一个特征向量与一个标签(由一个浮点数表示),位置在mllib.regression包中。

3、Rating

用户对一个产品的评分,在mllib.recomendation包中,用于产品推荐。

4、各种Model类

每个Model都是训练算法的结果,一般有一个predict()方法可以用来对新的数据点或数据点组成的RDD应用该模型进行预测。

特征转化

TF-IDF:词频,逆文档频率是一种用来从文本文档中生成特征向量的简单方法。它为文档中的每个词计算两个统计值:一个是词频(TF),也就是每个词在文档中出现的次数,另一个是逆文档频率(IDF),用来衡量一个词语特定文档的相关度。

MLlib有两个算法可以用来计算TF-IDF:HashTF和TF

HashTF从一个文档中计算出给定大小的词频向量。为了将词和向量顺序对应起来,所以使用了哈希。HashingTF使用每个单词对所需向量的长度S取模得出的哈希值,把所有单词映射到一个0到S-1之间的数字上。由此可以保证生成一个S维的向量。随后当构建好词频向量后,使用IDF来计算逆文档频率,然后将它们与词频相乘计算TF-IDF。

MLlib统计

1、Statistics.colStats(rdd)

计算由向量组成的RDD的统计性综述,保存着向量集合中每列的最大值、最小值、平均值和方差。

2、statistics.corr(rdd,method_

计算由向量组成的RDD中的列间的相关矩阵,使用皮卡森相关或斯皮尔曼相关中的一种。

3、statistics.corr(rdd1,rdd2,method)

计算两个由浮点值组成的RDD的相关矩阵。

4、Statistics.chiSqTest(rdd)

计算由LabeledPoint对象组成的RDD中每个特征与标签的皮卡森独立性测试结果。返回一个ChiSqTestResult对象,其中有p值、测试统计及每个特征的自由度。

分类与回归

监督试学习指算法尝试使用有标签的训练数据(已知结果的数据点)根据对象的特征预测的结果。在分类中,预测出的变量是离散的(就是一个在有限集中的值,叫做类别) 。比如,分类可能是将邮件文卫垃圾邮件和非垃圾邮件,也有可能是文本所使用的语言。在回归中,预测出的是变量是连续的(根据年龄和体重预测一个人的身高)

线性回归:

1、numIteratrions

要运行的迭代次数(默认值:100)

2、stepSize

梯度下降的步长(默认值:1.0)

3、intercept

是否给数据加上一个干扰特征或者偏差特征--也就是一个值始终未1的特征(默认值:false)

4、regParam

Lasso和ridge的正规化参数(默认值:1.0)

import org.apache.spark.mllib.regression.LabeledPoint
import org.apache.spark.mllib.regression.LinearRegressionWithSGD val points: RDD[LabeledPoint] = //..
val lr = new LinearRegressiionWithSGD().setNumIterations(200).setIntercept(true)
val model = lr.run(points)
println("weight: %s, intercept: %s".format(model.weights, model.intercept))

逻辑回归

用来寻找一个分割阴性和阳性示例的线性分割平面。在MLlib中,接收一组标签为0或1的LabeledPoint,返回可以预测新点的分类的LogisticRegressionModel对象。

决策树与随机深林

决策树是一个灵活的模型,可以用来进行分类,也可以用来进行回归。决策树以节点树的形式表示,每个节点基于数据的特征作出一个二元决定(比如这个人的年龄是否大于20?),而树的每个叶节点则包含一种预测结果(例如,这个人是不是会买一个产品?)决策树的吸引力在于模型本身容易检查,而且决策树既支持分类的特征,也支持连续的特征。

参考于:《Spark快速大数据分析》

Spark MLlib知识点学习整理的更多相关文章

  1. spark MLlib collaborativeFilltering学习

    package ML.collaborativeFilltering; import org.apache.spark.SparkConf; import org.apache.spark.api.j ...

  2. jQuery知识点学习整理

    零.jQuery中操作css的方法 1.$("p").css("background-color"); 返回首个匹配元素的background-color的值. ...

  3. Spark MLlib Deep Learning Convolution Neural Network (深度学习-卷积神经网络)3.1

    3.Spark MLlib Deep Learning Convolution Neural Network (深度学习-卷积神经网络)3.1 http://blog.csdn.net/sunbow0 ...

  4. Spark MLlib Deep Learning Deep Belief Network (深度学习-深度信念网络)2.3

    Spark MLlib Deep Learning Deep Belief Network (深度学习-深度信念网络)2.3 http://blog.csdn.net/sunbow0 第二章Deep ...

  5. spark MLLib的基础统计部分学习

    参考学习链接:http://www.itnose.net/detail/6269425.html 机器学习相关算法,建议初学者去看看斯坦福的机器学习课程视频:http://open.163.com/s ...

  6. Spark MLlib Deep Learning Deep Belief Network (深度学习-深度信念网络)2.1

    Spark MLlib Deep Learning Deep Belief Network (深度学习-深度信念网络)2.1 http://blog.csdn.net/sunbow0 Spark ML ...

  7. Spark MLlib Deep Learning Convolution Neural Network (深度学习-卷积神经网络)3.2

    3.Spark MLlib Deep Learning Convolution Neural Network(深度学习-卷积神经网络)3.2 http://blog.csdn.net/sunbow0 ...

  8. Spark MLlib Deep Learning Deep Belief Network (深度学习-深度信念网络)2.2

    Spark MLlib Deep Learning Deep Belief Network (深度学习-深度信念网络)2.2 http://blog.csdn.net/sunbow0 第二章Deep ...

  9. Spark MLlib Deep Learning Convolution Neural Network (深度学习-卷积神经网络)3.3

    3.Spark MLlib Deep Learning Convolution Neural Network(深度学习-卷积神经网络)3.3 http://blog.csdn.net/sunbow0 ...

随机推荐

  1. POJ 1321 棋盘问题 --- DFS

    POJ 1321 题目大意:给定一棋盘,在其棋盘区域放置棋子,需保证每行每列都只有一颗棋子. (注意 .不可放 #可放) 解题思路:利用DFS,从第一行开始依次往下遍历,列是否已经放置棋子用一个数组标 ...

  2. HDU-4614 Vases and Flowers (线段树区间更新)

    题目大意:有n个花瓶,每个花瓶中只能放一朵花.两种操作,一种是从A开始放F朵花,如果有的花瓶中已经有花则跳过这个花瓶,往下一个花瓶放:第二种是将区间[A,B]之间花瓶中的花清空.如果是第一种操作,输出 ...

  3. eclipse adt 项目依赖,使用git上的项目

    从git下载的android工程不能直接导入eclipse,有的项目要依赖这个项目,怎么办呢 好像只能新建一个android项目,然后把libs,res,src,AndroidManifest.xml ...

  4. dll--二进制层面的复用

    积木式思想其实是很自然的一个过程,从c的库函数到C++的标准库,再到dll.com.com+都是这种思想推动下的结果,和现实生活中的人们的思维方式并无二致,只不过软件是在一个虚拟的世界中,并分化出许多 ...

  5. WaitAny, WaitAll 和 SignalAndWait

    除了Set 和 WaitOne方法外,在类WaitHandle中还有一些用来创建复杂的同步过程的静态方法. WaitAny, WaitAll 和 SignalAndWait使跨多个可能为不同类型的等待 ...

  6. Viewpager图片自动轮播,网络图片加载,图片自动刷新

    package com.teffy.viewpager; import java.util.ArrayList; import java.util.concurrent.Executors; impo ...

  7. c# 加密转载 备忘

    public sealed class EncryptUtils { #region Base64加密解密 /// <summary> /// Base64加密 /// </summ ...

  8. 028. asp.net数据绑定控件值DataList控件

    DataList控件可以使用模板与定义样式来显示数据并进行数据的选择, 删除及编辑工作. DataList控件的最大特点是一定要通过模板来定义数据的显示格式. 如果要设计出美观的界面, 就需要花费一番 ...

  9. 使用JavaScript 实现注册表单的校验

    说明:在点击提交时进行表单校验,具体要求如下: 1)用户名为3~16个字符,且不能包含”@”和”#”字符: 2)密码和校验密码必须一致,且长度在8个字符到16个字符: 3)兴趣爱好至少选择一项: 4) ...

  10. CentOS6.4系统启动失败故障排查

    转:http://www.centoscn.com/CentosBug/osbug/2014/1028/4011.html 操作系统启动失败如下图报错: 故障现象: 从图中可以看到,操作系统启动的过程 ...