《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)。关于岭回归可以参考下面两篇:

7 分类

分类算法,包括 逻辑回归、支持向量机SVM、贝叶斯等。

逻辑回归

跟线性回归差不多,多了一个sigmoid函数,输出的内容也稍有变化。
另外,对于损失函数的推导也不同了,这里需要最大似然估计的知识!

基本的流程就是,确定1或者0的概率,然后推导出极大似然公式,然后取对数,求导...最终基于梯度下降,优化参数。
由于忘记最大似然估计,所以这里真是理解不上去.

支持向量机

求解的是划分边界的最优解,他的名字听起来像一种很高级的机器人,其实跟逻辑回归差不多,就是选取一条最优的线把数据分作两类。

这里有疑问的可以参考——逻辑回归和SVM的区别是什么?各适合解决什么问题?
https://www.zhihu.com/question/24904422?sort=created

暂时不知道它的损失函数是怎么算出来的...慢慢研究吧

朴素贝叶斯

明明就是计算概率,非叫这么高大上的名字。

本文转自博客园xingoo的博客,原文链接:《Spark MLlib 机器学习实战》1——读后总结,如需转载请自行联系原博主。

时间: 2024-10-14 12:23:37

《Spark MLlib 机器学习实战》1——读后总结的相关文章

《Spark大数据处理》—— 读后总结

前几章 工作机制 本文转自博客园xingoo的博客,原文链接:<Spark大数据处理>-- 读后总结,如需转载请自行联系原博主.

Apache Spark源码走读(十一)浅谈mllib中线性回归的算法实现&amp;Spark MLLib中拟牛顿法L-BFGS的源码实现

<一>浅谈mllib中线性回归的算法实现 概要 本文简要描述线性回归算法在Spark MLLib中的具体实现,涉及线性回归算法本身及线性回归并行处理的理论基础,然后对代码实现部分进行走读. 线性回归模型 机器学习算法是的主要目的是找到最能够对数据做出合理解释的模型,这个模型是假设函数,一步步的推导基本遵循这样的思路 假设函数 为了找到最好的假设函数,需要找到合理的评估标准,一般来说使用损失函数来做为评估标准 根据损失函数推出目标函数 现在问题转换成为如何找到目标函数的最优解,也就是目标函数的最

推荐系统那点事 —— 基于Spark MLlib的特征选择

在机器学习中,一般都会按照下面几个步骤:特征提取.数据预处理.特征选择.模型训练.检验优化.那么特征的选择就很关键了,一般模型最后效果的好坏往往都是跟特征的选择有关系的,因为模型本身的参数并没有太多优化的点,反而特征这边有时候多加一个或者少加一个,最终的结果都会差别很大. 在SparkMLlib中为我们提供了几种特征选择的方法,分别是VectorSlicer.RFormula和ChiSqSelector. 下面就介绍下这三个方法的使用,强烈推荐有时间的把参考的文献都阅读下,会有所收获! Vect

Spark MLlib中的OneHot哑变量实践

在机器学习中,线性回归和逻辑回归算是最基础入门的算法,很多书籍都把他们作为第一个入门算法进行介绍.除了本身的公式之外,逻辑回归和线性回归还有一些必须要了解的内容.一个很常用的知识点就是虚拟变量(也叫做哑变量)-- 用于表示一些无法直接应用到线性公式中的变量(特征). 举个例子: 通过身高来预测体重,可以简单的通过一个线性公式来表示,y=ax+b.其中x为身高,y为体重. 现在想要多加一些特征(参数),比如性别. 那么问题来了:如何在一个公式中表示性别呢? 这就是哑变量的作用,它可以通过扩展特征值

协同过滤算法 R/mapreduce/spark mllib多语言实现

用户电影评分数据集下载 http://grouplens.org/datasets/movielens/ 1) Item-Based,非个性化的,每个人看到的都一样 2) User-Based,个性化的,每个人看到的不一样 对用户的行为分析得到用户的喜好后,可以根据用户的喜好计算相似用户和物品,然后可以基于相似用户或物品进行推荐.这就是协同过滤中的两个分支了,基于用户的和基于物品的协同过滤. 在计算用户之间的相似度时,是将一个用户对所有物品的偏好作为一个向量,而在计算物品之间的相似度时,是将所有

(课程)基于Spark的机器学习经验

Hi,大家好!我是祝威廉,本来微博也想叫祝威廉的,可惜被人占了,于是改名叫·祝威廉二世.然后总感觉哪里不对.目前在乐视云数据部门里从事实时计算,数据平台.搜索和推荐等多个方向.曾从事基础框架,搜索研发四年,大数据平台架构.推荐三年多,个人时间现专注于集群自动化部署,服务管理,资源自动化调度等方向. 今天会和大家分享三个主题. 不过限于时间,第三个只是会简单提及下, 等未来有机会可以更详细的分享. 如何基于Spark做机器学习(Spark-Shell其实也算的上即席查询了) 基于Spark做新词发

Spark MLlib - Decision Tree源码分析

以决策树作为开始,因为简单,而且也比较容易用到,当前的boosting或random forest也是常以其为基础的 决策树算法本身参考之前的blog,其实就是贪婪算法,每次切分使得数据变得最为有序   那么如何来定义有序或无序? 无序,node impurity  对于分类问题,我们可以用熵entropy或Gini来表示信息的无序程度  对于回归问题,我们用方差Variance来表示无序程度,方差越大,说明数据间差异越大 information gain 用于表示,由父节点划分后得到子节点,所

读后有感 - 残忍但诚实的忠告:您没钱,就不要掺和这事了

读后有感 - 残忍但诚实的忠告:您没钱,就不要掺和这事了 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 人民日报微信公众号该文原链接 对于此文,本人没有任何感想,处于五感抽搐,三观沉浮的游离状

为什么我的计算结果是1?(机器学习实战,第3张的熵)

问题描述 为什么我的计算结果是1?(机器学习实战,第3张的熵) 想请教各位大神,我在学<机器学习实战 第三章>时,遇到一个问题,就是课程上得出的答案是0,我得出的答案却是1. 代码链接 解决方案 机器学习实战笔记1(机器学习基础) 解决方案二: 本人创建的机器学习研究QQ群445858879,欢迎爱好机器学习的朋友来此交流学习心得,群里有数据挖掘的高手跟大家切磋 解决方案三: 你看看你的数据集,你的1代表第一个特征是最好的划分.书上是第零个