内容简介:在机器学习领域,梯度下降算法分为三种
在机器学习领域,梯度下降算法分为三种
-
批量梯度下降算法(BGD,Batch gradient descent algorithm)
-
随机梯度下降算法(SGD,Stochastic gradient descent algorithm)
-
小批量梯度下降算法(MBGD,Mini-batch gradient descent algorithm)
批量梯度下降算法
BGD是最原始的梯度下降算法,每一次迭代使用全部的样本,即权重的迭代公式中(公式中用
θ 代替
这里的m代表所有的样本,表示从第一个样本遍历到最后一个样本。
特点:
-
能达到全局最优解,易于并行实现
-
当样本数目很多时,训练过程缓慢
随机梯度下降算法
SGD的思想是更新每一个参数时都使用一个样本来进行更新,即公式(1)中m为1。每次更新参数都只使用一个样本,进行多次更新。这样在样本量很大的情况下,可能只用到其中的一部分样本就能得到最优解了。
但是,SGD伴随的一个问题是噪音较BGD要多,使得SGD并不是每次迭代都向着整体最优化方向。
特点:
-
训练速度快
-
准确度下降,并不是最优解,不易于并行实现
小批量梯度下降算法
MBGD的算法思想就是在更新每一参数时都使用一部分样本来进行更新,也就是公式(1)中的m的值大于1小于所有样本的数量。
相对于随机梯度下降,Mini-batch梯度下降降低了收敛波动性,即降低了参数更新的方差,使得更新更加稳定。相对于批量梯度下降,其提高了每次学习的速度。并且其不用担心内存瓶颈从而可以利用矩阵运算进行高效计算。一般而言每次更新随机选择[50,256]个样本进行学习,但是也要根据具体问题而选择,实践中可以进行多次试验,选择一个更新速度与更次次数都较适合的样本数。mini-batch梯度下降可以保证收敛性,常用于神经网络中
补充
在样本量较小的情况下,可以使用批量梯度下降算法,样本量较大的情况或者线上,可以使用随机梯度下降算法或者小批量梯度下降算法。
在机器学习中的无约束优化算法,除了梯度下降以外,还有前面提到的最小二乘法,此外还有牛顿法和拟牛顿法。
梯度下降法和最小二乘法相比,梯度下降法需要选择步长,而最小二乘法不需要。梯度下降法是迭代求解,最小二乘法是计算解析解。如果样本量不算很大,且存在解析解,最小二乘法比起梯度下降法要有优势,计算速度很快。但是如果样本量很大,用最小二乘法由于需要求一个超级大的逆矩阵,这时就很难或者很慢才能求解解析解了,使用迭代的梯度下降法比较有优势。
梯度下降法和牛顿法/拟牛顿法相比,两者都是迭代求解,不过梯度下降法是梯度求解,而牛顿法/拟牛顿法是用二阶的海森矩阵的逆矩阵或伪逆矩阵求解。相对而言,使用牛顿法/拟牛顿法收敛更快。但是每次迭代的时间比梯度下降法长。
sklearn中的SGD
sklearn官网上查了一下,并没有找到BGD和MBGD的相关文档,只是看到可SGD的,感兴趣的可以直接去官网看英文文档,点击SGD查看: SGD ,这也有一个中文的 SGD
In [1]: from sklearn.linear_model import SGDClassifier In [2]: X = [[0., 0.], [1., 1.]] In [3]: y = [0, 1] In [4]: clf = SGDClassifier(loss="hinge", penalty="l2") In [5]: clf.fit(X, y) Out[5]: SGDClassifier(alpha=0.0001, average=False, class_weight=None, epsilon=0.1, eta0=0.0, fit_intercept=True, l1_ratio=0.15, learning_rate='optimal', loss='hinge', n_iter=5, n_jobs=1, penalty='l2', power_t=0.5, random_state=None, shuffle=True, verbose=0, warm_start=False) In [6]: clf.predict([[2., 2.]]) Out[6]: array([1]) In [7]: clf.coef_ Out[7]: array([[ 9.91080278, 9.91080278]]) In [8]: clf.intercept_ Out[8]: array([-9.97004991])
参考:
-
https://www.cnblogs.com/pinard/p/5970503.html
-
http://blog.csdn.net/uestc_c2_403/article/details/74910107
以上所述就是小编给大家介绍的《Spark 排序算法系列之 GBTs 基础:三种梯度下降算法》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 深度策略梯度算法是真正的策略梯度算法吗?
- 动量梯度下降算法
- 梯度下降算法
- 机器学习笔记(八):随机梯度上升/下降算法调优
- 梯度下降推导与优化算法的理解和Python实现
- AI界的集邮学?回眸ES,粒子群PSO,遗传(进化)算法,GA等无梯度优化方法
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
精通Java并发编程(第2版)
[西] 哈维尔·费尔南德斯·冈萨雷斯 / 唐富年 / 人民邮电出版社 / 2018-10 / 89.00元
Java 提供了一套非常强大的并发API,可以轻松实现任何类型的并发应用程序。本书讲述Java 并发API 最重要的元素,包括执行器框架、Phaser 类、Fork/Join 框架、流API、并发数据结构、同步机制,并展示如何在实际开发中使用它们。此外,本书还介绍了设计并发应用程序的方法论、设计模式、实现良好并发应用程序的提示和技巧、测试并发应用程序的工具和方法,以及如何使用面向Java 虚拟机的......一起来看看 《精通Java并发编程(第2版)》 这本书的介绍吧!