[Python 机器学习] 梯度下降法(一) - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
datayes2015
V2EX    推广

[Python 机器学习] 梯度下降法(一)

  •  
  •   datayes2015 2016-11-30 11:33:12 +08:00 5677 次点击
    这是一个创建于 3237 天前的主题,其中的信息可能已经有所发展或是发生改变。
    前言
    梯度下降法( Gradient escent )是机器学习中最常用的优化方法之一,常用来求解目标函数的极值。
    其基本原理非常简单:沿着目标函数梯度下降的方向搜索极小值(也可以沿着梯度上升的方向搜索极大值)。
    假设需要求解目标函数是 func(x) = x * x 的极小值,由于 func 是一个凸函数,因此它唯一的极小值同时也是它的最小值,其一阶导函数 为 dfunc(x) = 2 * x 。

    import numpy as np
    import matplotlib.pyplot as plt

    # 目标函数:y=x^2
    def func(x):
    return np.square(x)

    # 目标函数一阶导数:dy/dx=2*x
    def dfunc(x):
    return 2 * x

    梯度下降法函数:
    实盘回测代码请移步: https://uqer.io/community/share/58204a27228e5ba8f85715a8

    假设起始搜索点为-5 ,迭代周期为 5 ,学习率为 0.3 :
    实盘回测代码请移步: https://uqer.io/community/share/58204a27228e5ba8f85715a8



    从运行结果来看,当学习率为 0.3 的时候,迭代 5 个周期似乎便能得到较理想的效果。

    学习率对梯度下降法的影响
    设置学习率分别为 0.1 、 0.3 与 0.9 进行测试:


    从下图输出结果可以看出两点,在迭代周期不变的情况下:

    学习率较小时,收敛到正确结果的速度较慢。
    学习率较大时,容易在搜索过程中发生震荡。
    学习率大小对梯度下降法的搜索过程起着非常大的影响!
    18 条回复    2016-12-01 18:42:36 +08:00
    airqj
        1
    airqj  
       2016-11-30 11:55:16 +08:00 via Android   1
    mark
    bazingaterry
        2
    bazingaterry  
       2016-11-30 13:15:47 +08:00
    刚好在人工智能的课上学到了这个,用逻辑回归做分类的时候用到了。
    datayes2015
        3
    datayes2015  
    OP
       2016-11-30 13:47:17 +08:00
    @bazingaterry 嗯嗯,很实用的一个方法:)
    raysonx
        4
    raysonx  
       2016-11-30 13:59:30 +08:00   3
    现在的广告都在一本正经地普及小学知识
    mhqschen
        5
    mhqschen  
       2016-11-30 14:05:27 +08:00
    这个广告打得刚刚的。。。
    billgreen1
        6
    billgreen1  
       2016-11-30 16:57:38 +08:00 via iPhone
    建议看看 numpy 的实现,那叫一个漂亮
    hikkikuma1991
        7
    hikkikuma1991  
       2016-11-30 16:58:10 +08:00
    @raysonx 严重同意
    hosiet
        8
    hosiet  
       2016-11-30 17:10:55 +08:00 via Android
    这大概不是小学知识,但大学里相关专业肯定会学这东西,真的有必要科普?=_=
    lightening
        9
    lightening  
       2016-11-30 17:27:39 +08:00
    @bazingaterry 是对数回归……
    mimzy
        10
    mimzy  
       2016-11-30 17:32:51 +08:00
    @lightening 逻辑回归( logistic regression )是其中的一种译法 你俩都没说错
    lightening
        11
    lightening  
       2016-11-30 18:03:01 +08:00
    @mimzy
    我发现了,简直坑爹。“逻辑的”英文是 logical, "对数的“ 英文是 logarithmical 。 logistic 其实是“物流”的意思。

    所以到底是翻译的锅还是原作者用错了单词?
    lll9p
        12
    lll9p  
       2016-11-30 18:17:41 +08:00
    @lightening 逻辑回归是从逻辑斯谛回归过来的,省了两个字完全不一样的感觉。
    mimzy
        13
    mimzy  
       2016-11-30 18:18:42 +08:00
    @lightening 这名字确实很让人困惑 查了一下有这么个解释 http://stats.stackexchange.com/questions/111035/what-does-the-name-logistic-regression-mean 最近看到的书基本都翻译成「逻辑回归」了 有的干脆直接就叫「 logistic 回归」
    lightening
        14
    lightening  
       2016-11-30 18:25:19 +08:00
    @lll9p
    @mimzy 好吧,看来是上世纪初 logistic 这个词和对数有点关系,就一直这样叫过来了
    jedihy
        15
    jedihy  
       2016-12-01 10:17:13 +08:00
    这不是牛顿法么
    xarrow
        16
    xarrow  
       2016-12-01 15:50:48 +08:00
    突然觉得高中数学好有用
    bxb100
        17
    bxb100  
       2016-12-01 16:04:00 +08:00 via Android
    @mimzy 对数几率回归
    staticor
        18
    staticor  
       2016-12-01 18:42:36 +08:00
    @lightening 一般叫 LR 就好了 不必翻译
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5563 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 08:57 PVG 16:57 LAX 01:57 JFK 04:57
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86