统计学知识6:逻辑回归的极大似然求解(梯度下降实现)

  • Post author:
  • Post category:其他





逻辑回归的极大似然推导:








由于似然函数是样本的函数,需要知道其分布,并且假设相互独立。


上述公式就推导出梯度下降更新的方向



梯度更新的方法:






逻辑回归编程实现(

按步骤手工编程




假设我们有一个数据,共有100个样本,含两个x变量,x1、x2,一个目标变量y。数据如下:



我们的目标是求出参数θ0、θ1、θ2。



步骤1:定义sigmoid函数



logistic转化成预测概率。





步骤2:定义线性回归函数z的表达式





步骤3:定义初始值

θ





步骤4:根据对数似然函数,写出J(

θ

),并写出损失函数







θ初始值为0时,此时的损失函数的值为ln(0.5)


步骤5:计算每个参数的梯度下降方向


步骤6:定义样本数据的刷新重排


每次迭代后需要重新刷新数据:


步骤7:梯度下降算法模块




1)设置不同的迭代停止策略,



共有三种策略:根据迭代次数、根据两次迭代目标值的变化、根据梯度值。



2)定义梯度下降公式。



3)定义梯度下降的方法






梯度下降有三种方法:




  • 批量梯度下降法:



    在更新参数时使用所有样本来进行更新.



  • 随机梯度下降法:



    批量梯度下降法原理类似,区别在与求梯度时没有用所有的n个样本的数据,而是仅仅选取1个样本来求梯度。和批量梯度下降法是两个极端值



  • 小批量梯度下降法:



    是批量梯度下降法和随机梯度下降法的折中,也就是对于n个样本,我们采用m个样子来迭代,1<m<n。一般可以取m=10,当然根据样本的数据,可以调整这个m的值。



步骤8:梯度下降算法实施案例。


可尝试不同的方法和策略


1、对比不同的停止策略,采用批量梯度下降法


1)策略1:采用限制迭代次数停止法。迭代策略设置为5000次。最后损失值为0.63





2)策略2:采用目标值变化的限制,两次目标值的变动小于0.000001时则停止。大约迭代了109901次,最后的损失值为0.38.



3)停止策略3:采用梯度值的方法限制,梯度值的限制为0.05。大约迭代了140045次,最后的损失值为0.49.




也可以看出迭代次数越多效果越好。




2、对比不同梯度下降法



1)采用随机梯度下降法:取

1个样本来求梯度






可以看出模型不稳定。尝试调小学习率,增加迭代次数




2)采用小批量梯度下降法:取10个样本来求梯度


结果仍然不太稳定。



3、数据标准化之后的处理


尝试下对数据进行标准化 将数据按其属性(按列进行)减去其均值,然后除以其方差。最后得到的结果是,对每个属性/每列来说所有数据都聚集在0附近,方差值为1。




1)批量梯度下降法,迭代5000次,求解目标值为0.38.数据预处理非常重要,可以提高迭代效率。



2)批量梯度下降法,迭代次数增加,可以使损失函数降的更多



更多的迭代次数会使得损失下降的更多。




3)小批量梯度下降法,增加迭代次数,下降效果更好






步骤10:定义精确度,并求解优化前及优化后的精度对比。



计算精度


当theta=

array([[ 0.,  0.,  0.]])时,计算精度为:





当theta为梯度优化后的值时,求出的精度为89%




Theta: [[ 1.49844241  3.5261332   3.27347064]]


关于逻辑回归的知识,可参考:


统计知识3:逻辑回归函数、Sigmoid函数、极大似然



关于梯度下降的知识,可参考:


统计知识4:梯度下降