您好,登錄后才能下訂單哦!
小編給大家分享一下spark mllib如何實現隨機梯度下降法,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
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("最終結果θ值為 " + θ)//顯示結果 } }
看完了這篇文章,相信你對“spark mllib如何實現隨機梯度下降法”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。