随机梯度下降算法

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

算法实现如下:

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)
  }


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

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

如有问题,欢迎提问

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值