您的位置:首页 > 编程语言 > Python开发

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

2019-02-17 15:15 513 查看

     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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: