zoukankan      html  css  js  c++  java
  • A-04 坐标轴下降法


    更新、更全的《机器学习》的更新网站,更有python、go、数据结构与算法、爬虫、人工智能教学等着你:https://www.cnblogs.com/nickchen121/p/11686958.html

    坐标轴下降法

    坐标轴下降法顾名思义,沿着坐标轴下降。坐标轴下降法和梯度下降法使用的都是迭代法,即使用启发式的方式一步一步迭代求解函数的最小值。

    可以想象一个可微的凸函数J(ω),其中ω是一个n1维的向量。如果在这n维空间中存在着某一点ω¯能够使得J(ω)在每一个坐标轴上都是最小的,那么我们则可以说J(ω¯)是全局最小值。如二维空间(x,y)中的曲线x2,当xy都是最小的时候,即为曲线x2最小值的时候。(注:Lasso回归的目标函数虽然不可微,但是由于目标函数非正则项是可微的,L1正则项是凸函数,因此也可以使用该结论。)

    一、坐标轴下降法流程

    坐标轴下降法即在ω的每个坐标轴上做迭代下降,当每个坐标轴上的值都收敛时,则可以说明达到了J(ω)的全局最小值。

    1. ω取初值记为ω(0),其中(0)表示迭代的轮数,初轮数为0。
    2. 对于第k轮的迭代,依次求解ωi(k)(i=1,2,,n),即

    ωi(k)argminωiJ(ω1(k),ω2(k),,ωn(k))

    其中由于在每次单独对一个坐标轴迭代的时候其他坐标轴上的值为常数。也就是ωi(k)是使J(ω1(k),ωi1(k),ωi+1(k),,ωn(k))为最小的值,除了ωi(k)为变量外,其他参数都为常数,则对J(ω1(k),ωi1(k),ωi+1(k),,ωn(k))求导即可得该函数的最小值。
    3. 检查ω(k)ω(k1)在每个维度上的变化情况,如果所有维度的变换都小于某个阈值,则ω(k)为最终结果,否则循环第2步,进入k+1次迭代。

    二、坐标轴下降法和梯度下降法的异同

    1. 两者都是迭代方法,并且每一轮迭代都需要O(mn)的计算量,其中m为样本数,n为特征数。
    2. 坐标轴下降法固定n1个坐标,沿着剩下的一个坐标轴迭代,得到函数的局部最小值;梯度下降法则是沿着梯度的负方向得到函数的局部最小值。
    3. 坐标轴下降法是一种非梯度优化算法,但是一个周期中循环使用不同的坐标方向迭代,相当于梯度下降的一轮迭代。
    4. 由于坐标轴下降法是利用当前坐标方向迭代,不需要求目标函数的倒数;梯度下降法是利用目标函数的偏导数来确定迭代方向的。
  • 相关阅读:
    python基础-迭代器,闭包
    python基础-练习题
    python基础-函数的进阶
    python基础-函数
    python实现十大经典算法
    Auto-Encoders实战
    Variational Auto-Encoders原理
    Reparameterization Trick
    Adversarial Auto-Encoders
    AutoEncoders变种
  • 原文地址:https://www.cnblogs.com/abdm-989/p/14117954.html
Copyright © 2011-2022 走看看