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

相关文章

SpringBoot集成EasyExcel实现百万级别的数据导入导出实践指南

《SpringBoot集成EasyExcel实现百万级别的数据导入导出实践指南》本文将基于开源项目springboot-easyexcel-batch进行解析与扩展,手把手教大家如何在SpringBo... 目录项目结构概览核心依赖百万级导出实战场景核心代码效果百万级导入实战场景监听器和Service(核心

Spring Boot集成/输出/日志级别控制/持久化开发实践

《SpringBoot集成/输出/日志级别控制/持久化开发实践》SpringBoot默认集成Logback,支持灵活日志级别配置(INFO/DEBUG等),输出包含时间戳、级别、类名等信息,并可通过... 目录一、日志概述1.1、Spring Boot日志简介1.2、日志框架与默认配置1.3、日志的核心作用

Apache Ignite 与 Spring Boot 集成详细指南

《ApacheIgnite与SpringBoot集成详细指南》ApacheIgnite官方指南详解如何通过SpringBootStarter扩展实现自动配置,支持厚/轻客户端模式,简化Ign... 目录 一、背景:为什么需要这个集成? 二、两种集成方式(对应两种客户端模型) 三、方式一:自动配置 Thick

OpenCV在Java中的完整集成指南分享

《OpenCV在Java中的完整集成指南分享》本文详解了在Java中集成OpenCV的方法,涵盖jar包导入、dll配置、JNI路径设置及跨平台兼容性处理,提供了图像处理、特征检测、实时视频分析等应用... 目录1. OpenCV简介与应用领域1.1 OpenCV的诞生与发展1.2 OpenCV的应用领域2

SpringBoot集成MyBatis实现SQL拦截器的实战指南

《SpringBoot集成MyBatis实现SQL拦截器的实战指南》这篇文章主要为大家详细介绍了SpringBoot集成MyBatis实现SQL拦截器的相关知识,文中的示例代码讲解详细,有需要的小伙伴... 目录一、为什么需要SQL拦截器?二、MyBATis拦截器基础2.1 核心接口:Interceptor

SpringBoot集成EasyPoi实现Excel模板导出成PDF文件

《SpringBoot集成EasyPoi实现Excel模板导出成PDF文件》在日常工作中,我们经常需要将数据导出成Excel表格或PDF文件,本文将介绍如何在SpringBoot项目中集成EasyPo... 目录前言摘要简介源代码解析应用场景案例优缺点分析类代码方法介绍测试用例小结前言在日常工作中,我们经

Spring Boot集成Druid实现数据源管理与监控的详细步骤

《SpringBoot集成Druid实现数据源管理与监控的详细步骤》本文介绍如何在SpringBoot项目中集成Druid数据库连接池,包括环境搭建、Maven依赖配置、SpringBoot配置文件... 目录1. 引言1.1 环境准备1.2 Druid介绍2. 配置Druid连接池3. 查看Druid监控

在Spring Boot中集成RabbitMQ的实战记录

《在SpringBoot中集成RabbitMQ的实战记录》本文介绍SpringBoot集成RabbitMQ的步骤,涵盖配置连接、消息发送与接收,并对比两种定义Exchange与队列的方式:手动声明(... 目录前言准备工作1. 安装 RabbitMQ2. 消息发送者(Producer)配置1. 创建 Spr

如何在Spring Boot项目中集成MQTT协议

《如何在SpringBoot项目中集成MQTT协议》本文介绍在SpringBoot中集成MQTT的步骤,包括安装Broker、添加EclipsePaho依赖、配置连接参数、实现消息发布订阅、测试接口... 目录1. 准备工作2. 引入依赖3. 配置MQTT连接4. 创建MQTT配置类5. 实现消息发布与订阅

SpringBoot集成LiteFlow工作流引擎的完整指南

《SpringBoot集成LiteFlow工作流引擎的完整指南》LiteFlow作为一款国产轻量级规则引擎/流程引擎,以其零学习成本、高可扩展性和极致性能成为微服务架构下的理想选择,本文将详细讲解Sp... 目录一、LiteFlow核心优势二、SpringBoot集成实战三、高级特性应用1. 异步并行执行2