zoukankan      html  css  js  c++  java
  • 最小二乘法与梯度下降法

      常用的求解线性回归参数的方法:最小二乘法梯度下降法

      假设函数:

      目标:选择合适的参数,使得建模误差的平方和最小。即最小化代价函数:

             (其中:m为训练样本的数量)

      (1)最小二乘法:

      (2)梯度下降法:

      开始时我们随机选择一个参数的组合(θ0,θ1,...,θn),计算代价 函数,然后我们寻找下一个能让代价函数值下降最多的参数组合,直到找到一个局部最小值(local minimum)。因为我们并没有尝试完所有的参数组合,所以不能确定我们得到的局部最小值是否便是全局最小值(global minimum),选择不同的初始参数组合, 可能会找到不同的局部最小值。

      梯度下降法的过程:是包含所有参数的一维向量,我们先初始化一个,在这个值之上,用梯度下降法去求出下一组的值,由于是梯度下降的,所以损失函数的值在下降。当迭代到一定程度,的值趋于稳定,此时的即为要求得的值。

      迭代函数如下:

      

      每次迭代,我们用当前的求出求出等式右边的值,并覆盖得到迭代后的值。

      这里:

      

      其中 α 是学习率(learning rate),它决定了我们沿着能让代价函数下降程度最大的方向向下迈出的步子有多大,在批量梯度下降中,我们每一次都同时让所有的参数减去学习速率乘以代价函数的导数。

    随机梯度下降和批量梯度下降

      随机梯度下降法和批梯度下降法是对于多样本迭代的两种策略,其中,随机梯度下降法是在每一次迭代中,随机的选择m个样本来求取的值,而批梯度下降法在每次迭代中,需要先求出所有样本的梯度值。相比之下,随机梯度下降法高效。

      A. 随机梯度下降法:

         Repeat{

                for i = 1 to m{

                         对于每一个j进行操作

                }

         }

        这里的m为随机选择的m个样本。

      B. 批梯度下降法:

          Repeat 直到收敛{

                   对于每一个j进行操作

          }

          这里的m为整个样本数。需要先求出在本次迭代中整个样本关于j的导数和,再计算出,对于大样本,很耗时。

      最小二乘法与梯度下降法比较:

    最小二乘法  梯度下降
    不需要选择学习率 需要选择学习率
    一次运算得出结果 多次迭代

    需要计算矩阵乘积求逆,如果特征数量较大,则

    运算代价大,因为矩阵求逆的时间复杂度为O(n^3)

    特征数量大时也能较好的适用
    只用于线性模型,不适合逻辑回归等模型 适用于各种类型的模型
  • 相关阅读:
    样式问题
    布局
    通用模板实现可变参数函数
    使用单例模式实习string类
    动态生成一维数组和二维数组
    自定义的类传数据到主窗口控件上的方法
    使用TableView
    G480折腾上了黑苹果,完美了,哈哈
    error C2383: 此符号中不允许有默认参数
    动态链接库的隐式动态链接和显示动态链接
  • 原文地址:https://www.cnblogs.com/alfred2017/p/6621483.html
Copyright © 2011-2022 走看看