DataWhale-树模型与集成学习-Task01-决策树-202110

2023-12-27 21:58

本文主要是介绍DataWhale-树模型与集成学习-Task01-决策树-202110,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、练习题

1. 练习01

解答:

(1)

\begin{equation} \begin{aligned} G(Y,X)&=\sum_{k=1}^{K}\sum_{m=1}^{M}p(y_k,x_m)\log_2\frac{p(y_k,x_m)}{p(y_k)p(x_m)}\\ &=\sum_{k=1}^{K}\sum_{m=1}^{M}p(y_k,x_m)[\log_2\frac{p(y_k,x_m)}{p(y_k)}-\log_2p(x_m)] \\ &=\sum_{k=1}^{K}\sum_{m=1}^{M}p(y_k)\frac{p(y_k,x_m)}{p(y_k)}\log_2\frac{p(y_k,x_m)}{p(y_k)}-\sum_{k=1}^{K}\sum_{m=1}^{M}p(y_k,x_m)\log_2p(x_m)\\ &=\sum_{k=1}^Kp(y_k)\sum_{m=1}^Mp(x_m|Y=y_k)\log_2p(x_m|Y=y_k)-\sum_{m=1}^Mp(x_m)\log_2p(x_m)\\ &=H(X)-H(X|Y) \end{aligned} \end{equation}

(2)

 \begin{equation} \begin{aligned} H(Y,X)&=-\sum_{k=1}^K\sum_{m=1}^Mp(y_k,x_m)\log_2p(y_k,x_m)\\ &=-\sum_{k=1}^K\sum_{m=1}^Mp(y_k,x_m)[\log_2p(x_m)+\log_2\frac{p(y_k,x_m)}{p(x_m)}]\\ &=-\sum_{k=1}^K\sum_{m=1}^Mp(y_k,x_m)\log_2p(x_m)-\sum_{k=1}^K\sum_{m=1}^Mp(x_m)\frac{p(y_k,x_m)}{p(x_m)}\log_2\frac{p(y_k,x_m)}{p(x_m)}\\ &=H(X)+H(Y|X) \end{aligned} \end{equation}

结合G(Y,X)=H(Y)-H(Y|X)

可以得到G(Y,X)=H(X)+H(Y)-H(Y,X)

(3)

通过上面已经得到的公式,很容易证明G(Y,X)=H(Y,X)-H(X|Y)-H(Y|X)

(4)

H(X)对应A U B, H(Y)对应B U CH(X|Y)对应A, H(Y|X)对应C, H(Y,X)对应AUBUC, G(Y,X)对应B

 2. 练习02

  【练习】假设当前我们需要处理一个分类问题,请问对输入特征进行归一化会对树模型的类别输出产生影响吗?请解释原因。

解答:不会,因为归一化处理不会改变样本输入特征和样本标签类别的分布,会得到一样的树。

3. 练习03

【练习】如果将系数替换为1−γ^2,请问对缺失值是加强了还是削弱了惩罚?

解答:因为γ<1,所以是削弱了惩罚。

4.练习04

【练习】如果将树的生长策略从深度优先生长改为广度优先生长,假设其他参数保持不变的情况下,两个模型对应的结果输出可能不同吗?

解答:由于同一层级子节点已经对样本进行了划分,所以深度优先和广度优先生成的模型应该是一样的。

5. 练习05

【练习】在一般的机器学习问题中,我们总是通过一组参数来定义模型的损失函数,并且在训练集上以最小化该损失函数为目标进行优化。请问对于决策树而言,模型优化的目标是什么?

解答:应该是信息增益最大化,考虑到预剪枝和后剪枝,应该是各种约束条件下的信息增益最大化。

6.练习06

【练习】对信息熵中的log函数在p=1处进行一阶泰勒展开可以近似为基尼系数,那么如果在p=1处进行二阶泰勒展开我们可以获得什么近似指标?请写出对应指标的信息增益公式。

                      \begin{equation} \begin{aligned} H(Y)&=\mathbb{E}_Y[-\log_2p(Y)]\\& \approx\mathbb{E}_Y[1-p(Y)+\frac{1}{2}(1-p(Y)^2]\\ &=\sum_{k=1}^Kp(y_k)[1-p(y_k)+\frac{1}{2}(1-p(y_k)^2] \end{equation} \end{aligned}

                  \begin{equation} \begin{aligned} H(Y|X)&=\mathbb{E}_X[\mathbb{E}_{Y|X}(1-p(Y|X)+\frac{1}{2}(1-p(Y|X))^2)] {\color{Emerald} }\\ &=\sum_{m=1}^Mp(x_m)\sum_{k=1}^K[p(y_k|x_m)(1-p(y_k|x_m)+\frac{1}{2}(1-p(y_k|x_m))^2)] \end{equation} \end{aligned}

                  G(Y,X)=H(Y)-H(Y|X)

             

7. 练习07

     H(Y)=1-\max_kp(Y=y_k)

     H(Y|X)=\sum_{m=1}^Mp(x_m)[1-\max_kp(Y=y_k|X=x_m)]

     G(Y,X)=H(Y)-H(Y|X)

  因为该纯度指标在单一分布时取最小值0,在均匀分布时取最大值,且该指标是单调的。

8.练习08

【练习】为什么对没有重复特征值的数据,决策树能够做到损失为0?

 解答:因为没有重复特征值的情况下,决策树的节点可以一直向下分直到每个叶节点都只有1个样本数据。

9.练习09

【练习】如何理解min_samples_leaf参数能够控制回归树输出值的平滑程度?

解答:因为叶节点样本数越小,其样本均值用来做估计的平滑程度越低,均方差越大。

二、知识回顾

1. ID3树算法、C4.5树算法和CART算法之间有何异同?

解答: ID3用最大信息增益来进行节点分裂。C4.5在ID3基础上做出了诸多改进,包括但不限于:处理数值特征、处理含缺失值的特征、使用信息增益比代替信息增益以及给出树的剪枝策略。     

    CART是一颗二叉树,只是现在不再以熵(条件熵)来评价节点(子节点)的纯度。对于数值标签而言,我们可以认为节点间元素大小越接近则纯度越高,因此可以考虑使用均方误差(MSE)或平均绝对误差(MAE)来替换熵和条件熵的位置。当处理分类问题时,CART将熵中的loglog在p=1p=1处利用一阶泰勒展开,基尼系数定义为熵的线性近似。

2.  什么是信息增益?它衡量了什么指标?它有什么缺陷?

解答:在信息熵和条件熵的基础上,可以定义信息增益,即在得到了随机变量X的取值信息时,随机变量Y不确定性的平均减少量。即节点分裂之后带来了多少不确定性的降低或纯度的提高。

     信息增益来选择的决策树对类别较多的特征具有天然的倾向性,在类别占比均匀的情况下,类别数越多则熵越高,使用了信息增益比来代替信息增益更合适。

3.  sklearn决策树中的random_state参数控制了哪些步骤的随机性?

解答:抽出max_features个特征的随机性,对于数值特征采用随机分割法时的随机性。

4.  决策树如何处理连续变量和缺失变量?

解答:连续的数值特征可以采用最佳分割法和随机分割法。样本的缺失值占比越大,那么对信息增益的惩罚就越大。设节点N的样本缺失值比例为γ

                        

 5. 基尼系数是什么?为什么要在CART中引入它?

解答:由于对数函数log的计算代价较大,CART将熵中的log在p=1处利用一阶泰勒展开,基尼系数定义为熵的线性近似。

6.  什么是树的预剪枝和后剪枝?具体分别是如何操作的?

解答:预剪枝是指树在判断节点是否分裂的时候就预先通过一些规则来阻止其分裂,后剪枝是指在树的节点已经全部生长完成后,通过一些规则来摘除一些子树。

         预剪枝策略通过参数控制,它们分别是最大树深度max_depth、节点分裂的最小样本数min_samples_split、叶节点最小样本数min_samples_leaf、节点样本权重和与所有样本权重和之比的最小比例min_weight_fraction_leaf、最大叶节点总数max_leaf_nodes以及之前提到的分裂阈值min_impurity_decrease。

        

 

        

这篇关于DataWhale-树模型与集成学习-Task01-决策树-202110的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/544402

相关文章

SpringBoot3应用中集成和使用Spring Retry的实践记录

《SpringBoot3应用中集成和使用SpringRetry的实践记录》SpringRetry为SpringBoot3提供重试机制,支持注解和编程式两种方式,可配置重试策略与监听器,适用于临时性故... 目录1. 简介2. 环境准备3. 使用方式3.1 注解方式 基础使用自定义重试策略失败恢复机制注意事项

SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程

《SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程》LiteFlow是一款专注于逻辑驱动流程编排的轻量级框架,它以组件化方式快速构建和执行业务流程,有效解耦复杂业务逻辑,下面给大... 目录一、基础概念1.1 组件(Component)1.2 规则(Rule)1.3 上下文(Conte

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

使用vscode搭建pywebview集成vue项目实践

《使用vscode搭建pywebview集成vue项目实践》:本文主要介绍使用vscode搭建pywebview集成vue项目实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录环境准备项目源码下载项目说明调试与生成可执行文件核心代码说明总结本节我们使用pythonpywebv

详解如何使用Python从零开始构建文本统计模型

《详解如何使用Python从零开始构建文本统计模型》在自然语言处理领域,词汇表构建是文本预处理的关键环节,本文通过Python代码实践,演示如何从原始文本中提取多尺度特征,并通过动态调整机制构建更精确... 目录一、项目背景与核心思想二、核心代码解析1. 数据加载与预处理2. 多尺度字符统计3. 统计结果可

Maven项目中集成数据库文档生成工具的操作步骤

《Maven项目中集成数据库文档生成工具的操作步骤》在Maven项目中,可以通过集成数据库文档生成工具来自动生成数据库文档,本文为大家整理了使用screw-maven-plugin(推荐)的完... 目录1. 添加插件配置到 pom.XML2. 配置数据库信息3. 执行生成命令4. 高级配置选项5. 注意事

SpringBoot整合Sa-Token实现RBAC权限模型的过程解析

《SpringBoot整合Sa-Token实现RBAC权限模型的过程解析》:本文主要介绍SpringBoot整合Sa-Token实现RBAC权限模型的过程解析,本文给大家介绍的非常详细,对大家的学... 目录前言一、基础概念1.1 RBAC模型核心概念1.2 Sa-Token核心功能1.3 环境准备二、表结

Java集成Onlyoffice的示例代码及场景分析

《Java集成Onlyoffice的示例代码及场景分析》:本文主要介绍Java集成Onlyoffice的示例代码及场景分析,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 需求场景:实现文档的在线编辑,团队协作总结:两个接口 + 前端页面 + 配置项接口1:一个接口,将o

Swagger2与Springdoc集成与使用详解

《Swagger2与Springdoc集成与使用详解》:本文主要介绍Swagger2与Springdoc集成与使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录1. 依赖配置2. 基础配置2.1 启用 Springdoc2.2 自定义 OpenAPI 信息3.