
spark.mllib源码阅读与分析
文章平均质量分 90
重点介绍Spark中的机器学习算法、研读相关算法的Spark实现方式。
大愚若智_
.
展开
-
spark.mllib源码阅读-聚类算法1-KMeans
KMeans聚类是聚类分析比较简单的一种,由于其简单、高效、易于理解实现等优点被广泛用于探索性数据分析中。 关于KMeans算法的介绍、分析的相关文章可谓汗牛充栋,留给我能写的东西并不多了,在这里,我通过罗列相关文章的方式,将涉及KMeans聚类的各方面做一个尽量详尽的总结。最后简单介绍一下Spark下KMeans聚类的实现过程。KMeans聚类算法原理:关于KMeans算法的原理及单机版实现,可原创 2017-04-21 15:16:18 · 4427 阅读 · 1 评论 -
spark.mllib源码阅读-分类算法5-GradientBoostedTrees
Gradient-Boosted Trees(GBT或者GBDT) 和 RandomForests 都属于集成学习的范畴,相比于单个模型有限的表达能力,组合多个base model后表达能力更加丰富。关于集成学习的理论知识,包括GBT和Random Forests的一些比较好的参考资料:周志华教授的"Ensemble Methods: Foundations and Algorithms",系统的原创 2017-04-19 15:23:38 · 4525 阅读 · 0 评论 -
spark.mllib源码阅读-分类算法4-DecisionTree
本篇博文主要围绕Spark上的决策树来讲解,我将分为2部分来阐述这一块的知识。第一部分会介绍一些决策树的基本概念、Spark下决策树的表示与存储、结点分类信息的存储、结点的特征选择与分类;第二部分通过一个Spark自带的示例来看看Spark的决策树的训练算法。另外,将本篇与上一篇博文"spark.mllib源码阅读bagging方法"的bagging子样本集抽样方法结合,也就理解了Spark下的决原创 2017-04-11 09:58:52 · 4450 阅读 · 0 评论 -
spark.mllib源码阅读-bagging方法
在训练集成分类器时,关键的一步在于如何从全训练样本集中构建子样本集提供给子分类器进行训练。目前主流的两种子样本集构造方式是bagging方法和boosting方法。bagging方法的思想是从全样本集中有放回的进行抽样来构造多个子样本集,每个子样本集中可以包含重复的样本。对每个子样本集训练一个模型,然后取平均得到最后的集成结果。baggingbagging方法的主要目的是为了降低模型的varian原创 2017-04-05 20:59:45 · 2504 阅读 · 0 评论 -
spark.mllib源码阅读-分类算法3-SVM
Spark2.1版本目前只实现了linear SVM(即线性支持向量机),非线性SVM及核技巧目前还没有实现。因此本篇主要介绍的是Spark中的线性SVM及参数求解。SVM的理论及推导可以参考支持向量机通俗导论(理解SVM的三层境界)由于Spark实现的是线性SVM,在此,我将简单介绍一下线性分类器与线性可分、线性SVM、线性不可分下的线性SVM等基本概念与原理,最后再结合Spark介绍以下线性S原创 2017-03-31 13:35:01 · 3548 阅读 · 0 评论 -
spark.mllib源码阅读-分类算法2-NaiveBayes
朴素贝叶斯模型简述:贝叶斯模型通过使用后验概率和类的概率分布来估计先验概率,具体的以公式表达为P(Y)可以使用训练样本的类分布进行估计。如果X是单特征也很好估计,但如果X={x1,x2,..,xn}等n个特征构成,那估计n个特征的联合概率分布P(X)=P(x1,x2,...,xn)将变得非常困难。由于贝叶斯模型的参数难于估计,限制了其的应用。朴素贝叶斯模型是贝叶斯模型的简化版本,通过假设特征之间独原创 2017-03-29 17:47:08 · 3686 阅读 · 0 评论 -
spark.mllib源码阅读-分类算法1-LogisticRegression
传统的线性回归模型z(x)=wx+b,其输出为负无穷至正无穷的区间,如果输出值为一个事件发生的概率,那么就要求输出区间为[0,1],传统的一些线性回归模型就不能work了,一个很简单的想法就是在z(x)线性输出的基础上增加一个从0到1光滑的单调递增的函数。同时对于很多事件来说,在事件确定发生的概率区间内 条件的微弱变化几乎不影响事件的发生,而在事件发生与不发生的交界区间 条件的微弱变化对事件发生的原创 2017-03-25 15:20:47 · 3104 阅读 · 0 评论 -
spark.mllib源码阅读-回归算法2-IsotonicRegression
IsotonicRegression是Spark1.3版本引入的一个带约束的回归模型。IsotonicRegression又称保序回归,保序回归确保拟合得到一个非递减逼近函数的条件下 最小化均方误差,相关的介绍可以阅读http://fa.bianp.net/blog/2013/isotonic-regression/,借用该文的一篇图来说明一下图中横轴为序号,纵轴y为输入数据,假设x为要拟合的数据原创 2017-03-24 13:22:53 · 2718 阅读 · 0 评论 -
spark.mllib源码阅读-回归算法1-LinearRegression
Spark实现了三类线性回归方法:1、LinearRegression:普通线性回归模型2、LassoRegression:加L1正则化的线性回归3、RidgeRegression:加L1正则化的线性回归Spark采用了模型和训练分离定义的方式,模型和模型的迭代计算都很清晰:如LinearRegressionModel和LinearRegressionWithSGD,LassoModel和Lass原创 2017-03-23 10:25:33 · 2677 阅读 · 0 评论 -
spark.mllib源码阅读-优化算法3-Optimizer
Spark中的求解器,根据输入的训练数据及设定的迭代次数、正则化项、参数收敛精度等进行迭代求解模型的参数。Spark内部实现来两类求解器,基于随机梯度下降(miniBatch选取样本)的GradientDescent、基于大规模数值优化算法的LBFGS。在整体架构上,两个类都继承自Optimizer,并需要调用Gradient和UpdaterGradientDescentGradientDesce原创 2017-03-22 16:14:51 · 2840 阅读 · 0 评论 -
spark.mllib源码阅读-优化算法2-Updater
Updater是Spark中进行机器学习时对用于更新参数的轮子,参数更新的过程是1、第i轮的机器学习求解得到的参数wi2、第i+1轮计算得到的梯度值3、正则化选项来计算第i+1轮的机器学习要求解的参数wi+1 Spark实现了三类Updater,SimpleUpdater、L1Updater及SquaredL2Updater,他们之间关系为SimpleUpdater:无正则化的Updater,直接原创 2017-03-21 15:11:52 · 2121 阅读 · 0 评论 -
spark.mllib源码阅读-优化算法1-Gradient
Spark中定义的损失函数及梯度,在看源码之前,先回顾一下机器学习中定义了哪些损失函数,毕竟梯度求解是为优化求解损失函数服务的。监督学习问题是在假设空间F中选取模型f作为决策函数,对于给定的输入X,由f(X)给出相应的输出Y,这个输出的预测值f(X)与真实值Y可能一致也可能不一致,用一个损失函数(lossfunction)或代价函数(cost function)来度量预测错误的程度。损失函数是f(原创 2017-03-20 13:03:10 · 3122 阅读 · 0 评论