【机器学习笔记二】回归分析 - 随机梯度下降

参考资料:

【1】    Spark MLlib 机器学习实践

【2】    机器学习之梯度下降 http://www.cnblogs.com/rcfeng/p/3958926.html

【3】   统计学习方法

1、回归分析概念

在统计学中,线性回归(Linear Regression)是利用称为线性回归方程的最小平方函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析。

2、梯度下降的概念

梯度下降是一个寻找函数极值的过程,在低维度下非常容易理解。例如存在函数,则我们有导数

假设当前x=1,假设dx的步长为0.1,则我们有,即下一次x的取值应为0.8,得到新的更小的y值

备注:在机器学习的应用场景里,梯度下降只是自变量的维度变多,也可以理解梯度下降的方向变多而已。

3、梯度下降算法

1)假设存在建模函数

2)则有对应的代价函数

3)每次迭代时求代价函数的偏导数,并根据负梯度的思想更新权值

4)迭代多次直到满足代价函数的收敛阈值

备注:

此处要区分的是梯度下降算法的两种常见类型,一个是随机梯度下降、另一个是批量梯度下降。对于批量梯度下降,需要对所有的训练样本完成遍历后,将偏差的总和再去更新参数值。而对于随机梯度下降,每一个训练样本都会马上更新参数值,因此速度更快,但也更容易获取局部最优解。

上面的例子属于批量随机下降,而随机梯度下降公式为:,注意这里没有对m个参数的求总和。也就是说不在每一个时刻考虑所有方向(维度)的最优值,而是随便找一个方向(维度)就开始做负梯度下降。

4、随机梯度下降Spark Mlib例子

package com.fredric.spark.lr

import org.apache.spark.{SparkContext, SparkConf}
import org.apache.spark.mllib.linalg.Vectors
import org.apache.spark.mllib.regression.{LabeledPoint, LinearRegressionWithSGD}

import scala.util.Random

/*-
 * 线性回归-随机梯度下降
 * Fredric 2017
 */
object lr {
  def main(args:Array[String]): Unit ={

    val conf = new SparkConf().setMaster("local").setAppName("Lr01")
    val sc   = new SparkContext(conf)

    //以二元线性回归y = 7*x1 + 5*x2 + 3为例,初始化数据
    val Array = new Array[LabeledPoint](500)

    for(t <- 1 to 500){

      val random = new Random();

      val x1 = random.nextInt(4) + random.nextDouble();
      val x2 = random.nextInt(3) + random.nextDouble();
      val y = 7 * x1 + 5 * x2 + (new Random()).nextDouble() + 3;

      //注意对于常量3,需要预留对应的向量,根据矩阵相乘,应填写1
      Array(t-1) = new LabeledPoint(y,  Vectors.dense(x1, x2, 1));
    }

    val data = sc.makeRDD(Array);

    //Train a linear regression model with no regularization using Stochastic Gradient Descent
    val model = new LinearRegressionWithSGD();
    model.optimizer.setNumIterations(100);//迭代100次

    val res = model.run(data);

    //输出结果为 [7.0162907792955345,5.013683400288775,3.4386169185061966],分别对应x1 x2和常数
    println(res.weights)
  }
}

原文地址:https://www.cnblogs.com/Fredric-2013/p/8495969.html

时间: 2024-10-12 16:07:58

【机器学习笔记二】回归分析 - 随机梯度下降的相关文章

机器学习笔记:线性规划,梯度下降

主要内容来自stanford Andrew Ng视频课程的总结. 讲的非常好,还有相应的习题,课程能够在以下站点搜索到. https://www.coursera.org/ 机器学习的目的是在训练数据的基础上得出一个模型,该模型对于给定的输入x.给出对应的输出y. 用公式表示就是:y = h(x). 注意x表示一维向量,x={x1,x2,x3...}.这里的xi也就是特征(feature),h就是模型. 若输出y是连续值.则是回归预測问题.若y是离散值,则是分类问题.假设给定的训练数据是(输入-

猪猪机器学习笔记(六)梯度下降和拟牛顿

梯度下降和拟牛顿 作者:樱花猪   摘要:     本文为七月算法(julyedu.com)12月机器学习第六次次课在线笔记.本节课主要介绍了一种在机器学习需要经常使用到的计算方法——梯度下降法并在最后提出了另一种下降法的思路——拟牛顿法.梯度下降法是一个连接理论和计算机计算的桥梁,这种方法通过迭代来逐步完成对于目标函数的演化,将离散和连续有机的结合起来.实际上梯度下降法在许多有关偏微分方程算法中也有所用到,例如水平集.主动轮廓模型等.通过本次课程的学习,我们能够更加具体和感性的理解梯度下降,从

机器学习笔记 1 LMS和梯度下降(批梯度下降) 20170617

# 概念 LMS(least mean square):(最小均方法)通过最小化均方误差来求最佳参数的方法. GD(gradient descent) : (梯度下降法)一种参数更新法则.可以作为LMS的参数更新方法之一. The normal equations : (正则方程式,将在下一篇随笔中介绍)一种参数更新法则.也可以作为LMS的参数更新方法之一. 三者的联系和区别:LMS是一种机器学习算法.但是最小化均方误差的方法不唯一,采用GD或者正则方程式都是方法之一. # 准备样本  必须要先

ng机器学习视频笔记(十五) ——大数据机器学习(随机梯度下降与map reduce)

ng机器学习视频笔记(十五) --大数据机器学习(随机梯度下降与map reduce) (转载请附上本文链接--linhxx) 一.概述 1.存在问题 当样本集非常大的时候,例如m=1亿,此时如果使用原来的梯度下降算法(也成为批量梯度下降算法(batch gradient descent),下同),则速度会非常慢,因为其每次遍历整个数据集,才完成1次的梯度下降的优化.即计算机执行1亿次的计算,仅仅完成1次的优化,因此速度非常慢. 2.数据量考虑 在使用全量数据,而不是摘取一部分数据来做机器学习,

机器学习算法(优化)之一:梯度下降算法、随机梯度下降(应用于线性回归、Logistic回归等等)

本文介绍了机器学习中基本的优化算法-梯度下降算法和随机梯度下降算法,以及实际应用到线性回归.Logistic回归.矩阵分解推荐算法等ML中. 梯度下降算法基本公式 常见的符号说明和损失函数 X :所有样本的特征向量组成的矩阵 x(i) 是第i个样本包含的所有特征组成的向量x(i)=(x(i)1,x(i)2...,x(i)n) y(i) 第i个样本的label,每个样本只有一个label,y(i)是标量(一个数值) hθ(x(i)) :拟合函数,机器学习中可以用多种类型的拟合函数 θ 是函数变量,

机器学习(一):梯度下降、神经网络、BP神经网络

这几天围绕论文A Neural Probability Language Model 看了一些周边资料,如神经网络.梯度下降算法,然后顺便又延伸温习了一下线性代数.概率论以及求导.总的来说,学到不少知识.下面是一些笔记概要. 一. 神经网络 神经网络我之前听过无数次,但是没有正儿八经研究过.形象一点来说,神经网络就是人们模仿生物神经元去搭建的一个系统.人们创建它也是为了能解决一些其他方法难以解决的问题. 对于单一的神经元而言,当生物刺激强度达到一定程度,其就会被激发,然后做出一系列的反应.模仿这

机器学习算法 --- 逻辑回归及梯度下降

一.逻辑回归简介 logistic回归又称logistic回归分析,是一种广义的线性回归分析模型,常用于数据挖掘,疾病自动诊断,经济预测等领域. logistic回归是一种广义线性回归(generalized linear model),因此与多重线性回归分析有很多相同之处. 其公式如下: 其图像如下: 我们通过观察上面的图像可以发现,逻辑回归的值域为(0, 1),当输入为0时,其输出为0.5:当输入小于0,并且越来越小时,其输出越来越接近于0:相反的,当其输入大于0,并且越来越大时,其输出越来

深度学习之(十一)Deep learning中的优化方法:随机梯度下降、受限的BFGS、共轭梯度法

Deep learning中的优化方法 三种常见优化算法:SGD(随机梯度下降),LBFGS(受限的BFGS),CG(共轭梯度法). 1.SGD(随机梯度下降) 随机梯度下降(Stochastic Gradient Descent, SGD)是随机和优化相结合的产物,是一种很神奇的优化方法,属于梯度下降的一种,适用于大规模问题. 要想扯清楚它,还得先谈谈梯度下降.众所周知,每个优化问题都会有一个目标函数F(w)F(w),梯度下降采用迭代的策略,从初始点w0w0开始,每次沿着目标函数在当前点的负梯

梯度下降法的变形 - 随机梯度下降 -minibatch -并行随机梯度下降

问题的引入: 考虑一个典型的有监督机器学习问题,给定m个训练样本S={x(i),y(i)},通过经验风险最小化来得到一组权值w,则现在对于整个训练集待优化目标函数为: 其中为单个训练样本(x(i),y(i))的损失函数,单个样本的损失表示如下: 引入L2正则,即在损失函数中引入,那么最终的损失为: 注意单个样本引入损失为(并不用除以m): 正则化的解释 这里的正则化项可以防止过拟合,注意是在整体的损失函数中引入正则项,一般的引入正则化的形式如下: 其中L(w)为整体损失,这里其实有: 这里的 C