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