GBDT 学习

来源:互联网 发布:编程含金量最高的 编辑:程序博客网 时间:2024/06/05 10:27

花絮:

最近加班疯掉了,比九九六还要多,不行啊,这个便宜一定要从老板身上占回来。。。。
另外不知道朋友们是怎么学习一个新算法的,不过我一般是直接百度很多关于这个算法的博客来看,你会发现有些地方可能相互补充,有的地方可能互相矛盾(这种情况可不少见),总之当你理解之后想必是会得到兼听则明的真确结果。这么做会不会和那些天天吭paper的朋友比起来略low啊(O(∩_∩)O哈哈~)。

1.0 背景:为什么学(写)GBDT

这么多乱七八糟的“算法”,为什么要学GBDT呢?主要是最近听到这个名词比较多,想了。那么为什么要再写GBDT呢(鉴于各种牛人满天飞,我怎么就好意思献丑了)?着实是看看了网上一些博客后,有很多疑问,后来自己把这些疑问解决了,就想着分享一下,减少大家的学习成本。所以我就不再从头说起了,新朋友可以参拜一下以下文章。

http://blog.csdn.net/w28971023/article/details/8240756

http://www.cnblogs.com/rocketfan/p/4324605.html

http://wenku.baidu.com/link?url=1VsORNjzKHj_tPGW-ZF7C3Co5QlyQnBAxglsvLoRUzb7muN5s9T-30S7bX3Iyx19a46BgR0SS-o1eUCelG8znKp9RyUNMBZ2TK2ag85f7GW

http://blog.sina.com.cn/s/blog_573085f70101ivj5.html

http://www.2cto.com/database/201503/386591.html

本篇回答的问题主要由以下几个:
1. 随机森林的作用
2. 特征的选择方法
3. 学习停止
4. shrinkage 步长
5. 过拟合

2.0 随机森(chou)林(yang)的作用

第一次听说“RF”的时候,百度了一下,结果全是 射频 相关的信息,后来又知道“随机森林”,也不知道过了多久终于把这两个词建立起联系了(在此请求读过本文的大神们以及在通往大神路上的人们以后多说人话,不要把创造力浪费在创造专业名词上)。
如果不使用随机抽样,那么会怎样呢?
1. 每次使用全集
2. 按照顺序进行抽样

为什么不要使用全集呢?单从稳定上来说,全集绝对比任何抽样得到的子集更优,更能描述全集本身的特征。抽样的真相或许永远都只有一个:Faster(性能)。

为什么不要按照顺序进行选取呢?大家可以看看这篇中的“随机化快排”部分(要找一篇能深入分析某个问题的博客也是很难的,其他部分也值得看看),大家结合这个排序中所说的避免最坏情况发生来理解“鲁棒性”( 坚固性,稳定性)吧。很多案例中为了避免最坏情况的发生,都会使用随机选择样本这一方法。

总之:GBDT使用随机抽样的目的其实很明确:尽可能避免最坏情况的发生,同时兼顾算法的性能。

3. 特征的选择方法

3.1 特征可以被多次重复使用

我是比较关注工程的(实现算法),为了更清楚的让大家理解我的问题,我举个栗子:我们知道身高和年龄是有关系的,我们收集了1000个分布在不同年龄段的人的年龄和升高的值。GBDT能做这件事吗?GBDT怎么做呢?
GBDT可以处理这类问题,首先GBDT会重复的利用年龄这个特征,构造成百成千的子树,从而得到较好的结果(每一个子树其实可以看做一个阶跃函数,而最后模拟的结果其实就是所有阶跃函数的累加)。
总之:同一个特征会在不同的子树中被重复使用。这一点和传统的决策树中一个特征只会被使用一次有点区别。(如果在其他博客中看到GBDT的每个特征也是只使用一次的说法,请不要着急,再多参看几篇或者问问同事的想法)。

3.2 特征的选择

怎么选择特征呢?我也看过一位同学(或许就是传说中的大牛)的java源码,其中每次选择特征的过程是随机选取的。这一点和我们的传统决策树又是有点儿不同了,传统决策树中会计算熵增益或者增增益率从而得到最优的特征。但是GBDT中没有这个过程,随机选择少量(一个或者几个)特征来建造决策树(当然每一个子树的构造过程仍然是一个传统的决策树,但是考虑到被选中的特征都会被使用,对于这几个特征的先后顺序貌似也不必太严肃)。不过算法本身就是一个见仁见智的决策过程,没有也不表示不可以有,毕竟“随机”总是给人一种“乱来”的感觉。我们可以每构建N棵子树后,计算一次每个特征的最大收益(根据目标函数判断),根据这点来分派选择该特征的概率,这样可以较少使用那些无关的特诊,从而让效果相近时,子树个数较少。

4. 学习的停止条件

这个重要的事情在我翻阅的几篇里貌似没人明确的说过,看来应该属于”不言自明”的一类问题,我似乎又比别人少了一些常识——囧。如果每个特征只能够用一次,那么和决策树一样,最多就是所有条件都用上,然后“剪枝”。一般来说有两个触发终止学习的条件:

  1. Enough:对于应用来说,决策的正确性已经足够了。
  2. No more: 再也学不到什么新的东西了。

再找到新的证据之前,我们可以考虑用这两个条件的或作为终止条件。

5. shrinkage 步长

有两篇博客里面有说到这个,但我还是感觉不太清楚它的工作机理,貌似没有的话GBDT也会工作。可能需要用用才会对这个步长有感觉。如果必须这个步长的话,又应该是多少呢?这个东东在决策树里面也是没有的。

6. 过拟合

在GBDT中是几乎不会存在过拟合的。传统决策树的往往通过剪枝来解决过拟合,不难知道,决策树这种基于统计的算法,过拟合的原因一般都是一些个子类的样本数量太少,统计概率不值得参考所致。在GBDT中每棵树的高度都很小,导致叶子节点的数目较少,因此绝大多数情况下并不会遇到小样本的情况。(另一方面也会和shrinkage有点儿关系)

0 0
原创粉丝点击