《Spark MLlib 机器学习实战》1——读后总结
1 概念
2 安装
3 RDD
RDD包含两种基本的类型:Transformation和Action。RDD的执行是延迟执行,只有Action算子才会触发任务的执行。
宽依赖和窄依赖用于切分任务,如果都是窄依赖,那么就可以最大化的利用并行。
常用操作:
- cache 缓存
- cartesian 笛卡尔积
- coalesce 重分区
- countByValue 分组统计
- distinct 去除重复
- filter 过滤
- flatMap
- map
- groupBy 分组
- keyBy 增加key
- reduce 拼接
- sortBy 排序
- zip 合并压缩
4 基本概念
基本的数据结构
MLlib中提供几种向量和矩阵的数据结构:
- Local vector,本地向量
- Labeld point,带标签的向量
- Local Matrix,本地矩阵
- Distributed matrix,分布式矩阵
一般向量或者矩阵都有两个方法,dense表示密集版,sparse表示稀疏版,稀疏版是可以指定下标的。
基本的统计方法
- colStats 以列统计基本数据,count个数、max最大值、mean最小值、normL1欧几里德距离、normL2曼哈顿距离、numNonzeros不为0的个数、variance标准差
- chiSqTest 皮尔逊距离计算,
Statistics.corr(rddx,rddy,"spearman")
- corr 数据集相关系数计算,
Statistics.corr(rddx,rddy)
- 分层抽样
data.sampleByKey(withReplacement=false,fractions,0)
- 假设检验
自由度、统计量、P值、卡方检验
- 随机数
RandomRDDs.normalRDD(sc,100)
5 协同过滤
协同过滤可以基于人也可以基于物品,不足之处在于:
- 基于人会对热点物品不够精确
- 基于物品,但是没有什么多样性
相似度度量
- 基于欧几里德距离的计算
- 基于夹角余弦的相似度计算
他们的区别:
- 欧几里德注重空间上的差异
- 夹角余弦注重趋势
最小二乘法
最小二乘,就是基于均方误差寻找最佳匹配函数的过程。在矩阵中就是把大矩阵拆分成连个小矩阵的计算。
实践
new ALS()
rank 隐藏的因子数
iterations 迭代次数
lambda 正则项参数
implicitPref 显示反馈还是隐式反馈
alpha 拟合修正的幅度
6 线性回归
梯度下降
道士下山的例子,以及随机梯度下降中 θ=θ-α*J'(θ)
公式的原理。
正则项
避免过拟合,可以使用正则项——lasso回归(L1)和岭回归(L2)。关于岭回归可以参考下面两篇:
- http://baike.baidu.com/link?url=Z51DHIIFnkdsYyx13q7qk24hB_-XUqW3e7IdHsz4gZbjbNx718tzMxVfWibdZOG7Y0Aa4HOZdqhsHDA1rEbW9z-8iNYAb4ykjU6kyhNakSoHQ9Yjk7EyAJnidhE3B_Gx
- http://www.ics.uci.edu/~welling/teaching/KernelsICS273B/Kernel-Ridge.pdf
7 分类
分类算法,包括 逻辑回归、支持向量机SVM、贝叶斯等。
逻辑回归
跟线性回归差不多,多了一个sigmoid函数,输出的内容也稍有变化。
另外,对于损失函数的推导也不同了,这里需要最大似然估计的知识!
基本的流程就是,确定1或者0的概率,然后推导出极大似然公式,然后取对数,求导...最终基于梯度下降,优化参数。
由于忘记最大似然估计,所以这里真是理解不上去.
支持向量机
求解的是划分边界的最优解,他的名字听起来像一种很高级的机器人,其实跟逻辑回归差不多,就是选取一条最优的线把数据分作两类。
这里有疑问的可以参考——逻辑回归和SVM的区别是什么?各适合解决什么问题?
https://www.zhihu.com/question/24904422?sort=created
暂时不知道它的损失函数是怎么算出来的...慢慢研究吧
朴素贝叶斯
明明就是计算概率,非叫这么高大上的名字。
《Spark MLlib 机器学习实战》1——读后总结的更多相关文章
- Spark MLlib 机器学习
本章导读 机器学习(machine learning, ML)是一门涉及概率论.统计学.逼近论.凸分析.算法复杂度理论等多领域的交叉学科.ML专注于研究计算机模拟或实现人类的学习行为,以获取新知识.新 ...
- 《Spark MLlib机器学习实践》内容简介、目录
http://product.dangdang.com/23829918.html Spark作为新兴的.应用范围最为广泛的大数据处理开源框架引起了广泛的关注,它吸引了大量程序设计和开发人员进行相 ...
- Spark MLlib机器学习
前言 Spark MLlib是Spark对常用的机器学习算法的实现库,同时包括相关的测试和数据生成器.
- Spark MLlib机器学习(一)——决策树
决策树模型,适用于分类.回归. 简单地理解决策树呢,就是通过不断地设置新的条件标准对当前的数据进行划分,最后以实现把原始的杂乱的所有数据分类. 就像下面这个图,如果输入是一大堆追求一个妹子的汉子,妹子 ...
- Spark Mllib里的向量标签概念、构成(图文详解)
不多说,直接上干货! Labeled point: 向量标签 向量标签用于对Spark Mllib中机器学习算法的不同值做标记. 例如分类问题中,可以将不同的数据集分成若干份,以整数0.1.2,... ...
- Spark Mllib里如何采用保序回归做回归分析(图文详解)
不多说,直接上干货! 相比于决策树,保序回归的应用范围没有决策树算法那么广泛. 特别在数据处理较为庞大的时候,采用保序回归做回归分析,可以极大地节省资源,从而提高计算效率. 保序回归的思想,是对数据进 ...
- Spark Mllib里的卡方检验
不多说,直接上干货! import org.apache.spark.mllib.stat.Statistics 具体,见 Spark Mllib机器学习实战的第4章 Mllib基本数据类型和Mlli ...
- Spark Mllib里的分层抽样(使用map作为分层抽样的数据标记)
不多说,直接上干货! 具体,见 Spark Mllib机器学习实战的第4章 Mllib基本数据类型和Mllib数理统计
- Spark Mllib里的如何对单个数据集用斯皮尔曼计算相关系数
不多说,直接上干货! import org.apache.spark.mllib.stat.Statistics 具体,见 Spark Mllib机器学习实战的第4章 Mllib基本数据类型和Mlli ...
随机推荐
- JDK8新特性:函数式接口@FunctionalInterface的使用说明
我们常用的一些接口Callable.Runnable.Comparator等在JDK8中都添加了@FunctionalInterface注解. 通过JDK8源码javadoc,可以知道这个注解有以下特 ...
- Ninject在.NET WebForm和MVC中的使用
1.建立项目:Models/BLL/DAL/IBLL/IDAL/WebSite 2.WebSite要引用其余几个项目 3.NuGet中搜索Ninject,安装 Ninject.Ninject.Web. ...
- FIX protocol tutorial : Fix Session is not connecting how to diagnose it ?
In this blog post of FIX protocol tutorial series I would like to share my experience with connectiv ...
- spark VS mapreduce
Apache Spark,一个内存数据处理的框架,现在是一个顶级Apache项目. 这是Spark迈向稳定的重要一步,因为它越来越多地在下一代大数据应用中取代MapReduce. MapReduce是 ...
- Python中where()函数的用法
where()的用法 首先强调一下,where()函数对于不同的输入,返回的只是不同的. 1当数组是一维数组时,返回的值是一维的索引,所以只有一组索引数组 2当数组是二维数组时,满足条件的数组值返回的 ...
- numpy中三维数组转变成二维数组
numpy中reshape()函数对三维数组进行转换成二维数组,见下面例子: >>>a=np.reshape(np.arange(18),(3,3,2)) >>> ...
- Alpha阶段测试报告(示例)
http://www.cnblogs.com/Flamenco/p/7834393.html Alpha阶段测试报告
- git 回退到某个特定提交
1.先用git log commit aba290c570d3894f4f39a1fdf52aa512c0231525 Author: huzhengbo <@qq.com> Date: ...
- AngularJS-$scope类
一.$scope的作用 用来在controller和view中进行数据.事件的传递 二.$scope和$rootscope的区别 1.$rootscope根作用域 2.$rootscope可以实现多个 ...
- curl:get,post 以及SoapClien访问webservice数据
一.curl get模式 public function close_order(){ $url="http://192.168.2.50:7777/U8API.asmx?op=Insert ...