决策树
策略:“分而治之”(divide-and-conquer)
自根至叶的递归过程
在每个中间结点寻找一个“划分”(split or test)属性
三种停止条件:
(1)当前结点包含的样本全属于同一类别,无需划分;
(2)当前属性集为空,或是所有样本在所有属性上取值相同,无法划分;
(3)当前结点包含的样本集合为空,不能划分.
信息增益划分
往往不用计算具体的值,只需要比较大小
增益率
Gain(D,a) 和 IV(a) 怎样trade off 最好呢?
启发式:先从候选划分属性中找出信息增益高于平均水平的,再
从中选取增益率最高的
基尼指数(Gini Index)
假设一个袋子里有 3个红球 和 1个蓝球:
- 基尼指数计算: 如果袋子里全是红球: (此时纯度最高,基尼指数最小)
划分选择&剪枝
剪枝(pruning))是决策树对付“过拟合”的主要手段!
决策树的划分过程不断深入
走得非常深的时候,叶节点的特征可能已经不是一般规律
剪枝故意不学习这种规律,反而可以使模型泛化能力更强
为了尽可能正确分类训练样本,有可能造成分支过多→过拟合 可通过主动去掉一些分支来降低过拟合的风险 基本策略: 预剪枝(pre-pruning):提前终止某些分支的生长 后剪枝(post-pruning:生成一棵完全树,再“回头”剪枝
缺失值
现实应用中,经常会遇到属性值“缺失”(missing)现象 仅使用无缺失的样例?→对数据的极大浪费
使用带缺失值的样例,需解决: Q1:如何进行划分属性选择? Q2:给定划分属性,若样本在该属性上的值缺失,如何进行划分?
基本思路:样本赋权,权重划分
先只在有值的数据上计算信息熵
然后再计算一个有值数据相对于全数据的一个占比
我们如此可以计算出所有属性的
现在我们需要按照最大的属性来划分
现在的问题是,缺失如何划分?
答:直接划分为权重最大的属性值,即“权重划分”