spark mllib 随机梯度下降 SGD
2016-07-28 00:00
274 查看
摘要: 随机梯度下降法(stochastic gradient descent,SGD)
SGD是最速梯度下降法的变种。
使用最速梯度下降法,将进行N次迭代,直到目标函数收敛,或者到达某个既定的收敛界限。
每次迭代都将对m个样本进行计算,计算量大。
为了简便计算,SGD每次迭代仅对一个样本计算梯度,直到收敛。
随机梯度下降,即(最快速从紫金山山顶下去)
SGD是最速梯度下降法的变种。
使用最速梯度下降法,将进行N次迭代,直到目标函数收敛,或者到达某个既定的收敛界限。
每次迭代都将对m个样本进行计算,计算量大。
为了简便计算,SGD每次迭代仅对一个样本计算梯度,直到收敛。
随机梯度下降,即(最快速从紫金山山顶下去)
运行代码如下
package spark.regressionAnalysis /** * 随机梯度下降法(stochastic gradient descent,SGD) * SGD是最速梯度下降法的变种。 * 使用最速梯度下降法,将进行N次迭代,直到目标函数收敛,或者到达某个既定的收敛界限。 * 每次迭代都将对m个样本进行计算,计算量大。 * 为了简便计算,SGD每次迭代仅对一个样本计算梯度,直到收敛。 * 随机梯度下降,即(最快速从紫金山山顶下去) * * Created by eric on 16-7-10. */ import scala.collection.mutable.HashMap object SGD { val data = HashMap[Int,Int]() //创建数据集 def getData():HashMap[Int,Int] = {//生成数据集内容 for(i <- 1 to 50){ //创建50个数据 data += (i -> (16*i))//写入公式y=16x } data //返回数据集 } var θ:Double = 0 //第一步假设θ为0 var α:Double = 0.1 //设置步进系数,每次下降的幅度大小 def sgd(x:Double,y:Double) = {//设置迭代公式 θ = θ - α * ( (θ*x) - y) //迭代公式 } def main(args: Array[String]) { val dataSource = getData() //获取数据集 dataSource.foreach(myMap =>{//开始迭代 sgd(myMap._1,myMap._2)//输入数据 }) println("最终结果θ值为 " + θ)//显示结果 } }
结果如图
![](http://static.oschina.net/uploads/space/2016/0728/163650_AFnf_192561.png)
相关文章推荐
- Spark RDD API详解(一) Map和Reduce
- 使用spark和spark mllib进行股票预测
- Spark随谈——开发指南(译)
- Spark,一种快速数据分析替代方案
- eclipse 开发 spark Streaming wordCount
- Understanding Spark Caching
- ClassNotFoundException:scala.PreDef$
- Windows 下Spark 快速搭建Spark源码阅读环境
- Spark中将对象序列化存储到hdfs
- 使用java代码提交Spark的hive sql任务,run as java application
- Spark机器学习(一) -- Machine Learning Library (MLlib)
- Spark机器学习(二) 局部向量 Local-- Data Types - MLlib
- Spark机器学习(三) Labeled point-- Data Types
- Spark初探
- Spark Streaming初探
- Spark本地开发环境搭建
- 直播|易观CTO郭炜:精益化数据分析——如何让你的企业具有BAT一样的分析能力
- 挨踢部落第一期:Spark离线分析维度 推荐
- Configuring Hive On Spark