百面机器学习笔记-8

经典算法

  决策树

  场景描述
    时间:早上八点,地点:婚介所。
    “闺女,我又给你找了个合适的对象,今天要不要见一面?”

     “多大?”

    “26岁。”

    “长得帅吗?”

    “还可以,不算太帅。”

    “工资高么?”

    “略高于平均水平。”

     “会写代码吗?”

    “人家是程序员,代码写得棒着呢!”

    “好,那把他联系方式发来吧,我抽空见一面。”

  question:决策树有哪些常用的启发函数?

  answer:

(1)C4.5——最大信息增益比 :特征A对于数据集D的信息增益比定义为

其中:

称为数据集D关于A的取值熵。针对上述问题,我们可以根据上式求出数据 集关于每个特征的取值熵为:

于是,可计算出各个特征的信息增益比为:

所以信息增益比最大的仍是特征“写代码”,但通过信息增益比,特征“年龄”对应的 指标上升了,而特征“长相”和特征“工资”却有所下降。 

(2) CART——最大基尼指数(Gini) :Gini描述的是数据的纯度,与信息熵含义类似。

CART在每一次迭代中选择基尼指数最小的特征及其对应的切分点进行分类。 但与ID3、C4.5不同的是,CART是一颗二叉树,采用二元切割法,每一步将数据 按特征A的取值切成两份,分别进入左右子树。特征A的Gini指数定义为:

计算出各个特 征的Gini指数为:

在“年龄”“长相”“工资”“写代码”四个特征中,我们可以很快地发现特征“写代 码”的Gini指数最小为0,因此选择特征“写代码”作为最优特征,“写代码=会”为最 优切分点。按照这种切分,从根结点会直接产生两个叶结点,基尼指数降为0,完 成决策树生长。

(3)ID3—— 最大信息增益 :对于样本集合D,类别数为K,数据集D的经验熵表示为:

其中Ck是样本集合D中属于第k类的样本子集,|Ck|表示该子集的元素个数,|D|表示 样本集合的元素个数。
然后计算某个特征A对于数据集D的经验条件熵H(D|A)为:

其中,Di表示D中特征A取第i个值的样本子集,Dik表示Di中属于第k类的样本子 集。
于是信息增益g(D,A)可以表示为二者之差,可得:

  这些定义听起来有点像绕口令,不妨我们用一个例子来简单说明下计算过 程。假设共有5个人追求场景中的女孩,年龄有两个属性(老,年轻),长相有三 个属性(帅,一般,丑),工资有三个属性(高,中等,低),会写代码有两个 属性(会,不会),最终分类结果有两类(见,不见)。我们根据女孩有监督的 主观意愿可以得到表3.1。

在这个问题中,

可算出:

于是,根据式可计算出各个特征的信息增益为:

显然,特征“写代码”的信息增益最大,所有的样本根据此特征,可以直接被 分到叶结点(即见或不见)中,完成决策树生长。当然,在实际应用中,决策树 往往不能通过一个特征就完成构建,需要在经验熵非0的类别中继续生长。 

  question:如何对决策树进行剪枝?

  answer:预剪枝,即在生成决策树的过程中提前停止树的增长。而后剪枝,是在已生 成的过拟合决策树上进行剪枝,得到简化版的剪枝决策树。

  ■ 预剪枝

  预剪枝的核心思想是在树中结点进行扩展之前,先计算当前的划分是否能带 来模型泛化能力的提升,如果不能,则不再继续生长子树。此时可能存在不同类 别的样本同时存于结点中,按照多数投票的原则判断该结点所属类别。预剪枝对 于何时停止决策树的生长有以下几种方法。
(1)当树到达一定深度的时候,停止树的生长。

(2)当到达当前结点的样本数量小于某个阈值的时候,停止树的生长。

(3)计算每次分裂对测试集的准确度提升,当小于某个阈值的时候,不再继 续扩展。

预剪枝具有思想直接、算法简单、效率高等特点,适合解决大规模问题。但 如何准确地估计何时停止树的生长(即上述方法中的深度或阈值),针对不同问 题会有很大差别,需要一定经验判断。且预剪枝存在一定局限性,有欠拟合的风 险,虽然当前的划分会导致测试集准确率降低,但在之后的划分中,准确率可能 会有显著上升。

  ■ 后剪枝
  后剪枝的核心思想是让算法生成一棵完全生长的决策树,然后从最底层向上计算是否剪枝。剪枝过程将子树删除,用一个叶子结点替代,该结点的类别同样 按照多数投票的原则进行判断。同样地,后剪枝也可以通过在测试集上的准确率 进行判断,如果剪枝过后准确率有所提升,则进行剪枝。相比于预剪枝,后剪枝 方法通常可以得到泛化能力更强的决策树,但时间开销会更大。

  常见的后剪枝方法包括错误率降低剪枝(Reduced Error Pruning,REP)、悲 观剪枝(Pessimistic Error Pruning,PEP)、代价复杂度剪枝(Cost Complexity Pruning,CCP)、最小误差剪枝(Minimum Error Pruning,MEP)、CVP(Critical Value Pruning)、OPP(Optimal Pruning)等方法。

猜你喜欢

转载自www.cnblogs.com/tsy-0209/p/12657254.html