之前只是看过随机森林得一些教程,但是因为一直没有使用过这个方法,所以经常忘,这次因为同学得关于BRT得问题,觉得干脆借机会把从最开始得决策树概念一直到BRT得过程来看一遍,这个文章主要以介绍远离为主,主要用的时StatQuest得笔记
1, 决策树
https://www.youtube.com/watch?v=7VeUPuFGJHk&t=2shttps://www.youtube.com/watch?v=7VeUPuFGJHk&t=2s
1.1 布林判断
这就是一个最简单的决策树,就是提出一个如蓝色框框中的问题,然后得到不同的答案,上面得就是,一般是布林判断,很容易理解,但这个不是树,因为就一个判断,那稍微多一些
是不是很有食欲,1代表非常,判断了一下,是的话,就吃去吧,不是的话,就进入到2 得这个第二次判断里,可以吃点小食,或者忍着。
但是决策树不止是布林,还可以是数字,这就麻烦了,数字怎么做判断?那就借助大于号,小于号吧,所以就能生成下面得这样一个决策树,这里主义的是判断树不同得分支上的大于小于号左边或者右边的数字可以不同,顺序也可以不同,结果也可以不同,如下图
总得起个名字给他们,如上图,最上面得叫Root node, 中间的这些蓝色点叫internal Node,最后得结果叫Leaf 或者Leaf Node, 下面举一个实际得例子
这是心脏病各种指征得一个数据列表,我们先分别用,胸口痛,血液循环状况,和血管堵塞做根来建三个个简单的树,然后得到下面的结果
怎么来量化树与树之间谁得区分效果更好呢?这里就用到了Gini系数
以胸痛为例子,我们先要算每一个叶子得Gini系数,可以得到左边得一支是0.395,右边得是0.336,然后在乘以他们各自样本数量占据总样本数量的比重,得到整个树最后的Gini系数。但是注意,上面的三个都是只有一次判断得简单树,接下来我们要做出一个大树,那谁做根呢(root node)?我们就用这三个小树种Gini最小得,这里是血液循环良好来做根
如上图所示,根出来了,那接下来呢,根得两个判断结果都不是全对的。那我们接下来就再重新计算一下这两个分支,分别再次用胸痛,或者血管堵塞来作树,谁得到的Gini更小,就用谁来做下一级别的Node。
经过上面的计算,可以看出血管堵塞的Gini更小,所以这一级就用血管堵塞做根。然后最后的就用剩下的胸痛做根直接到了这个三层树最后的叶子。如下图
1.2 数字判断
但是现实中很多时候并不是简单的是非判断而是数字,就比如上面的心脏病的例子,如果有一列的数据是体重怎么办?
这是要做的第一步是排序,然后计算出两个数据的均值,用这个结果做判断条件,就是把它放在大于号小于好的一边来做树,如上图,注意不是大树,这一步只做一个节点的小树。那我们就会计算得到所有的均值做判断标准时的Gini值,如下图
还有rank或者多选项的数据,这里暂时不讨论。
2,回归树
https://www.youtube.com/watch?v=g9c66TUylZ4&t=34shttps://www.youtube.com/watch?v=g9c66TUylZ4&t=34s
线性回归,逻辑回归,各种回归,树也能回归,对的,简单的布林判断做出来的树,累积之后也可以解决回归问题。
假如你在做药物研发,上面的这张图一定会让你看完开心的笑颜如花,吃得越多越有用,简直就是仙丹。也不用做什么高级回归,直接线性回归就可以了。但是这样完美的数据不多,比如
上面这样的数据,这即使时逻辑回归做也很难用一个Sigmoid 曲线来做回归,这时候考虑了
回归树。 如下图
但是这是直接看答案哈,我们还得知道为什么用14.5做根呢?为啥不用14.6呢?那我们一步一步来
我们先用3来做根试试,先把3左侧和右侧的平均有效率算出来。
这里,我们把模型预测的有效率和实际的有效率的插值的平方加和,得到的就是总的差值,然后我们不断的向右平移我们的取值,然后每次取值我们都计算出这个分类的差值,把它做纵坐标就会得到上图。然后我们选取哪个差值最小的点,这里是14.5我们就用这个点来做根,接下来的就时一层一层的用和根一样的办法来决定每一层判断点的数值
这里就有意思了,因为我们没有设定分类最小的采样数,我们可以无穷细分到最后每个叶子上都只有一个点,那就是完美模型,因为都不用算平均,自己的结果就是自己的预测,但是这样就过参数化了,所以一般会设置一个node里最小的采样量,当Node比这个采样量阈值小,那我们就不再细分了
所以上面的这个图就是我们最后的建树的结果
对于多个参数的情况
就每一个都先各自建第一级的根,然后比较它们的SSR (sum of squared residues)选最小的做根,然后就接着再下一级上再做一次比较。