今天翻了下gayhub,随手点进去了follow的一个大佬wepe,看到一个非常和谐的repo名:tgboost.看完readme发现了作者的一个pptGBDT算法原理与系统设计简介,平时工作接触的比较少,对于这俩算法一直都是处于一知半解的状态.这回从头复习了一波相关的内容,写两篇记录下来.
从根本上来说, GBDT 与XGBoost最大的区别在于二者用的优化方法不一样,所以从先从最优化方法开始复习.
在生活或者工作中存在各种各样的最优化问题,比如每个企业和个人都要考虑的一个问题“在一定成本下,如何使利润最大化”等。最优化方法是一种数学方法,它是研究在给定约束之下如何寻求某些因素(的量),以使某一(或某些)指标达到最优的一些学科的总称。[2]
最优化问题通常分为两个大类:
组合优化问题: 优化的对象是解空间内的离散状态.如TSP(旅行商问题)
上文ppt里的这一页讲的非常好,就暂且抄一波
函数优化与组合优化
在机器学习中,典型的做法就是选择一个合适的模型
几种梯度下降法对比
海塞矩阵
可以看出,虽然牛顿法收敛速度较快,但是每次迭代过程,计算海塞矩阵的逆过程相当繁琐,特别是当该矩阵维度较大时.因此就有了逆牛顿法,他使用正定矩阵来近似求海塞矩阵的逆.
拟牛顿法和梯度下降法一样只要求每一步迭代时知道目标函数的梯度,另外,因为拟牛顿法不需要二阶导数的信息,所以有时比牛顿法更为有效。常用的拟牛顿法有DFP算法和BFGS算法.此处不再赘述.
下面补充拟牛顿法的思路(摘自[3]):
1 | 优点 | 缺点 |
---|---|---|
牛顿法 | 相对于梯度下降法,牛顿法使用二阶偏导数进行优化,收敛速度较快 | 牛顿法由于使用了二阶偏导数,要求目标函数必须一二阶偏导连续,并且具有正定的海塞矩阵.此外,计算海塞矩阵的过程又相对麻烦,计算量巨大. |
拟牛顿法 | 收敛快,计算比牛顿法快 | 当样本量大时计算量过大 |
共轭梯度法是一种用于解决无约束凸二次规划问题的方法.
启发式方法指人在解决问题时所采取的一种根据经验规则进行发现的方法。其特点是在解决问题时,利用过去的经验,选择已经行之有效的方法,而不是系统地、以确定的步骤去寻求答案。启发式优化方法种类繁多,包括经典的模拟退火方法、遗传算法、蚁群算法以及粒子群算法等等。
上面前三种算法,解决的问题都仅限于无约束的凸优化, 而拉格朗日乘数法则解决含有约束条件的优化问题,例如svm算法的解法推导.约束优化问题的一般形式是:
这个问题可以转化成函数的无条件极值问题.
对于约束条件为不等式的问题,有科学家拓展了拉格朗日乘数法.增加了kkt条件以求解.没学过最优化,这块就没法细谈了.有机会一定要补上.
[1]Poll的笔记.常见的几种最优化方法[EB/OL].https://www.cnblogs.com/maybe2030/p/4751804.html,2015-08-23.
[2]超神冉.最优化算法——常见优化算法分类及总结[EB/OL].https://blog.csdn.net/qq997843911/article/details/83445318,2018-10-27.
[3]李航.统计学习方法[M].清华大学出版社:北京,2012:220.
[4]Ja1r0.共轭梯度法[EB/OL].https://zhuanlan.zhihu.com/p/28623599,2018-05-28.
作者:MashoO
链接:https://www.jianshu.com/p/78f27fcf532d
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。