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

相关文章

Java中Springboot集成Kafka实现消息发送和接收功能

《Java中Springboot集成Kafka实现消息发送和接收功能》Kafka是一个高吞吐量的分布式发布-订阅消息系统,主要用于处理大规模数据流,它由生产者、消费者、主题、分区和代理等组件构成,Ka... 目录一、Kafka 简介二、Kafka 功能三、POM依赖四、配置文件五、生产者六、消费者一、Kaf

Golang的CSP模型简介(最新推荐)

《Golang的CSP模型简介(最新推荐)》Golang采用了CSP(CommunicatingSequentialProcesses,通信顺序进程)并发模型,通过goroutine和channe... 目录前言一、介绍1. 什么是 CSP 模型2. Goroutine3. Channel4. Channe

SpringCloud集成AlloyDB的示例代码

《SpringCloud集成AlloyDB的示例代码》AlloyDB是GoogleCloud提供的一种高度可扩展、强性能的关系型数据库服务,它兼容PostgreSQL,并提供了更快的查询性能... 目录1.AlloyDBjavascript是什么?AlloyDB 的工作原理2.搭建测试环境3.代码工程1.

SpringBoot使用注解集成Redis缓存的示例代码

《SpringBoot使用注解集成Redis缓存的示例代码》:本文主要介绍在SpringBoot中使用注解集成Redis缓存的步骤,包括添加依赖、创建相关配置类、需要缓存数据的类(Tes... 目录一、创建 Caching 配置类二、创建需要缓存数据的类三、测试方法Spring Boot 熟悉后,集成一个外

Docker集成CI/CD的项目实践

《Docker集成CI/CD的项目实践》本文主要介绍了Docker集成CI/CD的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录一、引言1.1 什么是 CI/CD?1.2 docker 在 CI/CD 中的作用二、Docke

SpringBoot集成SOL链的详细过程

《SpringBoot集成SOL链的详细过程》Solanaj是一个用于与Solana区块链交互的Java库,它为Java开发者提供了一套功能丰富的API,使得在Java环境中可以轻松构建与Solana... 目录一、什么是solanaj?二、Pom依赖三、主要类3.1 RpcClient3.2 Public

SpringBoot3集成swagger文档的使用方法

《SpringBoot3集成swagger文档的使用方法》本文介绍了Swagger的诞生背景、主要功能以及如何在SpringBoot3中集成Swagger文档,Swagger可以帮助自动生成API文档... 目录一、前言1. API 文档自动生成2. 交互式 API 测试3. API 设计和开发协作二、使用

SpringBoot如何集成Kaptcha验证码

《SpringBoot如何集成Kaptcha验证码》本文介绍了如何在Java开发中使用Kaptcha生成验证码的功能,包括在pom.xml中配置依赖、在系统公共配置类中添加配置、在控制器中添加生成验证... 目录SpringBoot集成Kaptcha验证码简介实现步骤1. 在 pom.XML 配置文件中2.

Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)

《Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)》:本文主要介绍Python基于火山引擎豆包大模型搭建QQ机器人详细的相关资料,包括开通模型、配置APIKEY鉴权和SD... 目录豆包大模型概述开通模型付费安装 SDK 环境配置 API KEY 鉴权Ark 模型接口Prompt

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert