信用评分之六--逻辑回归模型梯度下降法跟牛顿法比较

本文详细介绍了机器学习中两种重要的优化方法——梯度下降法和牛顿法。通过对这两种方法的基本原理、算法步骤及Java代码示例的阐述,帮助读者理解其在求解目标函数极值中的应用。

1、综述

机器学习的优化问题中,梯度下降法和牛顿法是常用的两种凸函数求极值的方法,他们都是为了求得目标函数的近似解。梯度下降的目的是直接求解目标函数极小值,而牛顿法则变相地通过求解目标函数一阶导为零的参数值,进而求得目标函数最小值。在逻辑回归模型的参数求解中,一般用改良的梯度下降法,也可以用牛顿法。

2 梯度下降法

2.1算法描述

1、确定误差范围和下降的步长,确定函数的导函数

2、while(|新值 -旧值| >误差)

3、       旧值=新值

4、       新值=初始值-步长*导函数值,来进行梯度下降

算法的一些问题:每一步走的距离在极值点附近非常重要,如果走的步子过大,容易在极值点附近震荡而无法收敛。解决办法:将alpha设定为随着迭代次数而不断减小的变量,但太小会导致迭代次数很多。

2.2、java代码示例

代码转自:http://www.lailook.net/klxx/04/2016-01-05/51426.html

 /**

 * 梯度下降算法,求解 f(x)=x^4-3x^3+2 最小值
 * 导数为: f'(x)=4x^3-9x^2
 * @author Zealot
 * @date 2015年12月13日
 */
public class GradientDescent {
//	经过计算, we expect that the local minimum occurs at x=9/4
 
	double x_old = 0;
	static double x_new = 6; // 从 x=6 开始迭代
	double gamma = 0.01; // 每次迭代的步长
	double precision = 0.00001;//误差
	static int iter = 0;//迭代次数
	//目标函数的导数
	private double  derivative(double x) {
		return 4 * Math.pow(x, 3) - 9 *Math.pow(x, 2);
	}
	
	private void getmin() {
		while (Math.abs(x_new - x_old) > precision){
			iter++;
			x_old = x_new;
		    x_new = x_old - gamma * derivative(x_old);
		}
	}
	
	public static void main(String[] args) {
		GradientDescent gd = new GradientDescent();
		gd.getmin();
		System.out.println(iter+": "+x_new);
	}
}
 

3、牛顿法

3.1算法描述

求解f(x)=0,如果f(x)可导,等价为迭代x = x-f(x)/f'(x)的最小值,算法如下:

输入:初始值x0,误差荣制TOL;最大迭代次数m

输入: 近似解p或者失败信息

1、 p0=x0

2、while (小于迭代次数)

3、   p= p0-f(p0)/f'(p0)

4、  若|p-p0|<TOL,停机,否则p0=p

3.2例子

4、参考文档

机器学习中梯度下降法跟牛顿法的比较

http://www.myexception.cn/cloud/1987100.html

梯度下降法(一)入门

http://blog.csdn.net/nupt123456789/article/details/8281923

java实现梯度下降算法

http://blog.csdn.net/nupt123456789/article/details/8281923

梯度下降、牛顿法、拟牛顿法

http://blog.csdn.net/luo86106/article/details/40510383

讲解更深入和详细的如下:

梯度下降法与牛顿法的解释与对比

http://www.cnblogs.com/happylion/p/4172632.html

牛顿法、雅克比矩阵、海森矩阵

http://blog.csdn.net/ubunfans/article/details/41520047

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小小她爹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值