目录
- 二:提升树:
一:CART回归树
问题一:GBDT为什么用CART回归树,而不用CART分类树?
答:因为GBDT每次迭代要拟合的是梯度值,是连续值所以要⽤回归树。
问题二:CART回归树划分最佳的划分点的判断标准是什么?
答:回归树因为样本标签是连续数值,所以再使⽤熵之类的指标 不再合适,取⽽代之的是平方误差,它能很好的评判拟合程度。
1:回归树生成算法:
案例分析:
现在给定下表,要求根据身高和食物,预测体重。
身高 | 食物 | 体重 |
159 | 800 | 48.5 |
163 | 900 | 56.9 |
177 | 1200 | 87.3 |
185 | 1500 | 76.5 |
1:首先根据身高进行划分,一次计算损失值:
以身高159计算,划分成两类:一类的预测值是 48.5,另一类的预测值是(56.9+87.3+76.5)/3 = 73.6,所以如果现在预测身高156的人的体重,我会返回48.5,如果现在预测身高178的体重,我会返回73.6,则上半部分损失值 = (48.5-48.5)的平方,下半部分损失值=(56.9-73.6)的平方 + (87.3-73.6)的平方+ (73.6 - 76.5)的平方。
…
2:然后根据食物进行划分,再次计算损失值。
3:在上面两步的损失值中,肯定有一个最小的,我们就把这个最小的条件,作为划分第一次的节点。
如果假设以身高163进行划分,大于163的是一类,小于163的是一类,则划分如下图:小于163,我们预测52.7,大于163,预测81.9。
4: 然后再在两个划分完的子集中,继续划分。
算法描述:
1:选取每个特征的每个取值,根据该值对样本进行划分成两部分。
2:分别计算每部分损失值,选取损失值最小的特征和对应的取值作为划分点,进行划分。
3:对于每部分,再用同样的方法进行划分。
二:提升树:
1:提升树介绍:
- 1:提升树采用向前分步算法,每次得到一棵决策树,最终将决策树累加起来。
- 2: 本次模型 = 上次模型 + 当前的树
- 3:不同的问题,我的损失函数是不同的:平方差损失(回归问题),指数损失函数(分类问题)
经过推导发现:当前的损失值 = 真实值与上次模型的差值再减去当前树的值的平方。
2:提升树的模拟案例:
3:提升树的自我理解:
1:首先会根据切分点,计算每个切分点的损失值,得到损失最小的切分点。
2:根据切分点,构建我们的初始的回归树,并且计算回归树的平方误差损失。
3:如果平方误差损失达到我们的条件,则停止。否则计算预测值和真实值差值(残差值)。
4:根据残差值构建回归树,直到平方误差损失,我们可以接受为止。
三:梯度提升:
- 1:负梯度 = 残差:
- 2: 损失函数对模型函数求偏导数,取负号。得到梯度。
- 3:梯度表示的意思是啥?损失函数下降最快的方向。
四:GBDT算法:
- 1:与回归树唯一的区别就是使用的是负梯度。