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会把特征映射到低位空间,让数据在低维空间表示的方差最大化,从而忽略一些无用的维度。
- 要计算这种映射,我们要构建出正规化的相关矩阵,并使用这个矩阵的奇异向量和奇异值。
- 与最大的一部分奇异值相对应的奇异向量可以用来重建原始数据的主要成分。
- 主成分分析(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)原语。
- 奇异值分解
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Spark学习之Spark Streaming(9)
Spark学习之Spark Streaming(9) 1. Spark Streaming允许用户使用一套和批处理非常接近的API来编写流式计算应用,这就可以大量重用批处理应用的技术甚至代码。 2. Spark Streaming使用离散化(discretized steam)作为抽象表示,叫做DStream。DStream是随时间推移而收到的数据的序列。 3. DSteam支持两种操作:转换操作(transformation),会生成一个新的DStream;另一种是输出操作(output operation),可以把数据写入到外部系统中。 4. Spark Stream的简单例子 需求:使用maven或者sbt打包编译出来独立应用的形式运行。从一台服务器的7777端口接受一个以换行符分隔的多行文本,要从中筛选出包含单词error的行,并打印出来。 //Maven 索引 groupID = org.apache.spark artifactID = spark-steaming_2.10 version = 1.2.0 //Scala流计算import声明 import org.apa...
- 下一篇
maven 不依赖 jar(解决 jar 冲突 )
如图找到 含有该 jar 的 配置 然后 再pom 中 exclusions 掉 <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-common</artifactId> <version>${hadoop_versoin}</version> <exclusions> <exclusion> <artifactId>javax.servlet.jsp</artifactId> <groupId>jsp-api</groupId> </exclusion> </exclusions> </dependency> 捐助开发者 在兴趣的驱动下,写一个免费的东西,有欣喜,也还有汗水,希望你喜欢我的作品,同时也能支持一下。 当然,有钱捧个钱场(右上角的爱心标志,支持支付宝和Pa...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS关闭SELinux安全模块
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS8编译安装MySQL8.0.19
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Red5直播服务器,属于Java语言的直播服务器