python系列-逻辑回归算法(logistic回归)之梯度上升算法理解及python实现

     Logistic回归主要用于处理二分类问题,其实现需用到梯度上升与下降算法来寻找最优参数,这里通过简单的例子对梯度上升算法进行介绍与pyhon实现。

1.梯度

    梯度方向就是函数值上升最大的方向!!!

2.实例:二次函数求极值问题

二次函数如下:f(x)=-x^2+x,其函数图像如下:

在这里插入图片描述

    学过导数都知道这个函数的导数为:f’=-2x+2 ,在x=1处存在极大值,极大值为0;
    但是实际问题中要求极大值不会这么简单,导数的求解可能很困难,直至无法求解,这时候就需要用到梯度上升或者下降算法对近似最优进行求解。
    该函数的梯度为:▽f=-2x+2

    梯度上升算法迭代公式:x:=x+α▽f,其中α为步长,即每次更新的大小,控制学习的速度步长大,学习速度快,但可能会错过极值;步长小,学习速度较慢;
    求解过程如下:设定步长为0.01,初始x0为0,设定当两次迭代的值小于0.00000001 则停止迭代,虽有依次迭代,直到满足终止条件为止。

3.python代码实现

#pyhton3.6
def gradientAscent():
    def testFun(x_old):           #f(x)的导数
        return -2 * x_old + 2
    x_old = -1                    #初始值,给一个小于x_new的值
    x_new = 0        #梯度上升算法初始值,即从(0,0)开始
    alpha = 0.01     #步长,每次更新的大小,学习速率
    presision = 0.00000001           #精度,即达到进度范围停止迭代
    while abs(x_new - x_old) > presision:
        x_old = x_new
        x_new = x_old + alpha * testFun(x_old) #上面提到的公式
    print(x_new)                     #打印最终求解的极值近似值
  a = gradientAscent()
  0.999999518302382
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值