【机器学习】决策树

12 阅读2分钟

决策树

image.png 策略:“分而治之”(divide-and-conquer) 自根至叶的递归过程 在每个中间结点寻找一个“划分”(split or test)属性 三种停止条件: (1)当前结点包含的样本全属于同一类别,无需划分; (2)当前属性集为空,或是所有样本在所有属性上取值相同,无法划分; (3)当前结点包含的样本集合为空,不能划分. image.png

信息增益划分

image.png

image.png

image.png 往往不用计算具体的值,只需要比较大小

增益率

image.png Gain(D,a) 和 IV(a) 怎样trade off 最好呢? 启发式:先从候选划分属性中找出信息增益高于平均水平的,再 从中选取增益率最高

基尼指数(Gini Index)

image.png 假设一个袋子里有 3个红球1个蓝球

  • p=3/4=0.75p_{红} = 3/4 = 0.75
  • p=1/4=0.25p_{蓝} = 1/4 = 0.25 基尼指数计算: Gini=1(0.752+0.252)=1(0.5625+0.0625)=0.375Gini = 1 - (0.75^2 + 0.25^2) = 1 - (0.5625 + 0.0625) = 0.375 如果袋子里全是红球: Gini=1(12+02)=0Gini = 1 - (1^2 + 0^2) = 0 (此时纯度最高,基尼指数最小)

划分选择&剪枝

image.png 剪枝(pruning))是决策树对付“过拟合”的主要手段! 决策树的划分过程不断深入 走得非常深的时候,叶节点的特征可能已经不是一般规律 剪枝故意不学习这种规律,反而可以使模型泛化能力更强

为了尽可能正确分类训练样本,有可能造成分支过多→过拟合 可通过主动去掉一些分支来降低过拟合的风险 基本策略: 预剪枝(pre-pruning):提前终止某些分支的生长 后剪枝(post-pruning:生成一棵完全树,再“回头”剪枝

缺失值

现实应用中,经常会遇到属性值“缺失”(missing)现象 仅使用无缺失的样例?→对数据的极大浪费

使用带缺失值的样例,需解决: Q1:如何进行划分属性选择? Q2:给定划分属性,若样本在该属性上的值缺失,如何进行划分?

基本思路:样本赋权,权重划分

image.png 先只在有值的数据上计算信息熵 image.png 然后再计算一个有值数据相对于全数据的一个占比 我们如此可以计算出所有属性的GainGain image.png 现在我们需要按照GainGain最大的属性来划分 现在的问题是,缺失如何划分? 答:直接划分为权重最大的属性值,即“权重划分”