• A-04 坐标轴下降法



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

    坐标轴下降法

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

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

    一、坐标轴下降法流程

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

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

    [{omega_i}^{(k)} in underbrace{argmin}_{omega_i}\,J({omega_1}^{(k)},{omega_2}^{(k)},cdots,{omega_n}^{(k)}) ]

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

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

    1. 两者都是迭代方法,并且每一轮迭代都需要(O(mn))的计算量,其中(m)为样本数,(n)为特征数。
    2. 坐标轴下降法固定(n-1)个坐标,沿着剩下的一个坐标轴迭代,得到函数的局部最小值;梯度下降法则是沿着梯度的负方向得到函数的局部最小值。
    3. 坐标轴下降法是一种非梯度优化算法,但是一个周期中循环使用不同的坐标方向迭代,相当于梯度下降的一轮迭代。
    4. 由于坐标轴下降法是利用当前坐标方向迭代,不需要求目标函数的倒数;梯度下降法是利用目标函数的偏导数来确定迭代方向的。
  • 相关阅读:
    16 类成员
    [Tips] WSL ubuntu 18.04 安装python3
    [Tips]ubuntu安装go
    [Notes] 随笔的标题格式说明
    [Tips]Ubuntu手动修改DNS
    [BUG]Ubuntu 16.04 出现“sudo unable to resolve host”
    [Tips]ubuntu 换源
    [Tips]将本地git文件夹上传云端
    [Notes] Dockerfile中COPY命令的简单性
    [BUG]Ubuntu server 16.04安装,无网卡驱动解决
  • 原文地址:https://www.cnblogs.com/nickchen121/p/11686723.html
Copyright © 2020-2023  润新知