决策树(decision tree )
三个问题:
- 怎样选择根节点
- 怎样选择后继节点
- 什么时候停止
(一颗决策树=》一个分类准则=》一个模型)
基本的算法:
对一开始提出来的三个问题进行解答:
1.选择最优属性
ID3:
- 最优属性选择信息增益最大的属性来作为最优属性
- 设D为用类别对训练元组进行的划分,则D的熵(entropy)表示为:
- 其中pi表示第i个类别在整个训练元组中出现的概率,可以用属于此类别元素的数量除以训练元组元素总数量作为估计。熵的实际意义表示是D中元组的类标号所需要的平均信息量。
- 而纯度(purity)是与熵成反比
- 按属性a划分后的熵为:
- 先计算出分类后每个集合的熵,再乘以权重(所占样本比例),再求和
- 而信息增益即为两者的差值:我们选择信息增益最大的属性,作为最优属性,如果存在gain相同,则随机选择一个。
- 每次都这样选出最优属性
ID3的局限性:
他对可取值数目较多的属性有所偏好,这种偏好可能带来不利影响
2.关于如何选择后继节点:
从剩余属性集合中按照上述方法选择最优属性
3.关于递归终止:
递归共有三种情况返回:
- 当前节点包含的样本全属于同一类别,无需在划分了
- 当前属性集为空,或者所有样本在所有属性上取值相同,无法再划分
- 当前节点包含的样本集为空,不能划分。
针对第二种情况,将其类别设定为当前集合所含样本最多的类别(后验分布)
第三种情况,将其类别设定为其父节点所含样本最多的类别(先验分布)
4.关于剪枝:
太多分支可能导致过拟合(泛化能力弱),有两种剪枝策略:预剪枝和后剪枝。预剪枝实在决策树生成过程中;后剪枝是先从训练集上成成一颗完整的决策树,然后自底向上对飞叶子节点进行考察,若将该子树替换为叶子节点能将泛化性能提示,则将该子树替换为叶子节点。
对预剪枝,可能带来欠拟合的风险,也许当前属性不能使决策树的泛化能力提升,但是可能这个属性和后面的某个属性组合起来能使泛化能力大大提升。