随机梯度下降算法

随机梯度的下降算法:(类似补偿算法)

算法实现如下:

package tide

import scala.collection.mutable

object SGD
{
  val data=mutable.HashMap[Int,Int]()
  def getdata():mutable.HashMap[Int,Int]={                    //生成数据集,数据集的大小需要调节观察,寻找数据集大小对迭代的影响
    for(i<-1 to 50){
    data+= (i -> (12*i))
  }
  data


}
var a:Double=0
var b:Double=0.2


def sgd(x:Double,y:Double)={
    a=a-b*((a*x)-y)//补偿算法(随机梯度下降算法,当寻找到最优化的参数时,a的变化趋于平滑)
}

  def main(args: Array[String]): Unit = {
    val source=getdata()
    source.foreach(m=>
    {sgd(m._1,m._2)}
    )
    println("final anwser: "+a)
  }


运行结果如下:
 要点:变量 的系数从零开始逼近,不断的补偿,直到找到最优化的系数,注意防止过拟合。 
  

过拟合的解决方法:使用线性回归的方法解决

如有问题,欢迎提问

你可能感兴趣的:(sparkMlib,机器学习基础)