在很多数据挖掘的算法中,我们经常可以看到损失函数(Loss Function)的存在,我们总是想损失函数越小越好,这时候最优化的方法就自然而然地出现在我们眼前。在大学数学中,由于是学术型的学习研究,很多问题都是以严格的凸函数形式出现的,最常见的严格凸函数如可行域是有界闭集的一元二次函数,如下图:
在可行域是有界闭集中,如果损失函数是严格凸函数,则有且只有一个最优解,因此找到局部极小值就是全局最小值,也就是最优解。凸函数的解空间如下图:
(图片来源参考文献)
这时候我们最简单又有效的方法就是用梯度下降法(最速下降法),对每一个变量求偏导,
最优化的方法有很多,常见的有梯度下降法、牛顿法等。
首先我们先看最常用的梯度下降法,
梯度下降法(GD)分为批量和随机
Batch GD(BGD)包括攒通GD,用所有训练集(或者一部分)计算下降方向,随机(SGD)每次只包含一个训练点,计算下降速度。
BGD收敛过慢,可找到全局最优解,SGD则一般会在最优解附近。
LBFGS(拟牛顿法)
收敛速度比GD快,传统牛顿法需要存储Hesse矩阵,很耗内存容量,LBFGS用序列近似Hesse,大大减少空间,且精度比GD准。
参考文献:
https://www.cnblogs.com/shixiangwan/p/7532830.html
https://www.zhihu.com/question/20343349
http://www.cnblogs.com/ooon/p/4947688.html
http://wepon.me/files/gbdt.pdf