决策树(实验室会议小记)

决策树,实验室,会议,小记 · 浏览次数 : 202

小编点评

**特征选择的目的:** * 减少特征数量,提高模型的泛化能力。 * 降低过拟合风险。 * 提高模型的性能。 **特征选择方法:** * **L1正则化:**通过在损失函数中加入一个正则化项来惩罚特征的绝对值大小。 * **贪心算法:**通过迭代地选择最优的特征来构建模型。 * **L1正则化:**通过在损失函数中加入一个正则化项来惩罚特征的绝对值大小。 * **决策树:**通过构建决策树来学习特征之间的关系。 **信息熵在机器学习中的用途:** * 信息熵可以用于计算特征之间的相关性。 * 信息熵可以用于选择最优的特征。 * 信息熵可以用于评估模型的性能。 **决策树的决策边界:** * 在决策树中,根节点代表分类的决策标准。 * 叶节点代表分类的最终结果。 **决策树与线性回归的比较:** | 特征数 | 决策树 | 线性回归 | |---|---|---| | 决策边界 | 多分类 | 二分类 | | 决策标准 | 最大的信息熵 | 最大的似然性 | | 复杂度 | 低 | 高 | **信息熵的定义:** 信息熵是用于衡量随机变量信息量的一种指标。它可以用于计算模型预测对的不确定性,或用于选择最优的特征。

正文

特征选择

为什么要进行特征选择?

特征过多导致过拟合、有一些特征是噪音。

特征选择技术:

1、 尝试所有组合:也是全局最优

2、贪心算法:每次决策都是基于当前情况去寻找最优解。计算过程:把特征加进去→是否更优?→是:加入模型/否:淘汰

3、L1正则:目标函数为损失函数;特点:具有稀疏性

4、决策树:节点代表每个特征选择。优点:便于处理高维数据

5、相关性计算:一种脱离模型内部结构而直接分析特征\(x_i\)和标签y的相关性的方法。主要是计算向量相似度的方法。

总结:都是对比了各个特征的优劣,如何计算优劣的方法不同。

L1正则化

次梯度下降

L1正则特征选择问题

弹性网络回归

1、计算上:

(1)相关性:计算\(x_i、y_i\),扔掉差的

(2)主成分:只计算\(x_i\)

问题:

(1) 为什么信息熵这么计算?

信息熵在神经网络里面也叫交叉熵,所有二分类问题都是这么算的。交叉熵在预测对的时候p为0/1,如果是0.5那么是不对的。

(2) 贪心算法为什么降低了复杂度?

假设使用贪心算法,有ABCDE五个选项,并两两组合。第一次先选D做组合,即DA、DB、DC、DE,下一次再选C做组合,这时候只用考虑CA、CB、CE,不用考虑CD,以此类推。

(3) L1正则化有什么缺点?

有一些点被扔掉了,而且是随机扔掉的。我们希望挑一个全局最好的扔掉,但是它是挑一个局部最好的扔掉。

决策树

决策树的定义

决策树的分类:

1、分类决策树 / 回归决策树

2、二叉树 / 多叉树

决策树算法:

CART算法只能构建二叉树,其他算法可以构建多叉树

有些只可以做回归或者分类

一颗决策树对应的决策边界:

需要学习:1.树的形状 2. 每一个决策的阈值\(\theta_1\) 3. 叶节点的值

好的特征特点:

分类后不确定性变小

不确定性——信息熵

事情发生的概率很低:信息熵很高

事情发生的概率很高:信息熵很低

log取2信息量是比特,取1是奈特

决策树:原来的不确定性(划分前的)-分割后的不确定性(划分后的)=不确定性的减小(信息熵-条件熵=信息增益)

信息增益最大的作为根节点:\(f_2>f_1\),所以\(f_2\)作为根节点

问题:

(1)决策树的根节点和叶节点代表什么?

根节点:输入方向;叶节点:判别指标,就是分为哪一类。也就是说,根节点是指标,最后那个叶节点是标签。根节点是输入,叶节点是输出。

(2)决策树的作用

决策树的作用:分类和回归。注意:三种树只有CART才能做回归。

(3)决策树的决策边界和线性回归的边界有什么区别?

之前线性回归边界都是二分类,现在决策边界可以包含多分类,可以有多个区域。

(4)信息熵为什么取对数?

避免他们之间的差距过大,比如一个概率是log0.01,另一个是log0.09。

上面0.01次方和0.02次方差距会很明显,混乱程度会加剧,从而更容易做决策。

数据处理取对数:核心是为了差距变得更大(0-1之间)或更小(1以上)

(5)信息熵是做什么的?

信息熵就是在算平均信息量。

构建决策树

问题:

(1)特征一样、标签不一样的数据要不要删除?

这种数据不能删,因为这种数据会提供一定的不确定性,如果删掉信息熵会一下子降低,会导致结果变得很差。

(2)决策树中唯一路径是什么?

给一条路径,可以一条路走到底的。

(3)什么是深度?

做几次判断,深度就有多少。最大的判断值为树的深度。

(4)什么时候不用继续分类?

一条路走到底,都是F或者都是N,就可以不用继续分类。

(5)同一个样本,结果既是F也是N,这是什么情况?

同个标签但又F和N,这条样本是在决策边界上,这类数据的作用是告诉你什么地方是决策边界。这类样本是不能删除的。

决策树性能

决策树性能:提升性能——防止过拟合,越简单越好

如何避免决策树的过拟合?

最大深度对模型准确率的影响

问题:

(1)决策树过拟合有哪些原因?

  1. 数据不行:有用的特征都没有,如学习成绩和他平时吃什么。

  2. 特征样本里出现噪声

  3. 某个地方信息熵有错误,随着迭代错误越来越放大

解决方法:

  1. 剪枝(修改一些叶节点)

  2. 设置最大深度

  3. 集成学习

(2)多重比较是什么?

每次进行比较的时候都会出现错误,树的深度一旦大了,会涉及到一个过多的比较过程,错误会越来越多,误差也会随之累加起来,变得越来越大。

回归树如何构建

回归问题中量化不确定性:标准差(分类是信息熵)

问题:

(1)回归树和分类树的区别?

计算方法:回归树选择根节点是用标准差来选,分类树是信息熵去选。条件熵是差不多的

(2)回归树中如何确定标签?

决策树分裂完是同一个标签,是或者否。而回归树是有一个阈值的,就是标准差小于某个数字,那么分类就结束了。

与决策树(实验室会议小记)相似的内容:

决策树(实验室会议小记)

实验室开会的一些记录

SpringCloud-Hystrix服务熔断与降级工作原理&源码

在生活中,如果电路的负载过高,保险箱会自动跳闸,以保护家里的各种电器,这就是熔断器的一个活生生例子。在Hystrix中也存在这样一个熔断器,当所依赖的服务不稳定时,能够自动熔断,并提供有损服务,保护服务的稳定性。在运行过程中,Hystrix会根据接口的执行状态(成功、失败、超时和拒绝),收集并统计这些数据,根据这些信息来实时决策是否进行熔断。

轻量级的架构决策记录机制

作者:倪新明 ADR是一种性价比非常高的架构决策文档化实践,团队引入和实践成本很低,却能为团队带来极大收益! 1 团队研发面临的问题 不论是在传统的IT行业,还是互联网行业,研发团队在架构决策层面或多或少的都会面临以下问题或挑战: •新成员加入团队,对系统现有的架构决策可能会盲目遵守,只知其然,不知

设计模式之工厂模式

工厂模式是一种创建型设计模式,它提供了一个用于创建对象的接口,但允许子类决定实例化哪个类。工厂方法让一个类的实例化延迟到其子类。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在软件开发中,对象的创建和使用是常见的操作。然而,对象的创建过程常常会涉及到复杂的逻辑和多变的需求。为了

WPF中以MVVM方式,实现RTSP视频播放

前言视频播放在上位机开发中经常会遇到,基本上是两种常见的解决方案 1.采用厂家提供的sdk和前端控件进行展示,常见的海康/大华都提供了相关sdk及文档 2.开启相机onvif协议,捅过rtsp视频流进行播放,前端可以采用web方式,或者wpf中的视频控件进行展示。 项目需求,决定了最终采用开启相机o

NodeJS 实战系列:个人开发者应该如何选购云服务

这文章至少值一千元,因为这是我保守估计花出去的冤枉钱(请自行脑补一个苦笑的 emoji) 文章中会穿插选择云服务的一些建议,当然也会提供一些“薅羊毛”的技巧。不过在此之前我们要想清楚一件更重要的事情:我为了什么购买云服务 做产品还是做技术 这个问题不仅决定了你接下来的购买策略,还是你编码开始的前提。

CPU算力提升与实际性能提升的关系

## 关于SPEC2006CPU和RedisBenchmark的理解 ``` 最近研究过硬件CPU的性能和Redis这样单线程重IO服务 突然想对比一下CPU算力提升占Redis性能提升的比率情况 性能很大程度由CPU决定,但是其他部分的提升也会有一些促进作用. 比如内存带宽,IO调度算法优化等.

学node 之前你要知道这些

初识nodejs 19年年底一个偶然的机会接到年会任务,有微信扫码登录、投票、弹幕等功能,于是决定用node 来写几个服务,结果也比较顺利。 当时用看了下koa2的官方文档,知道怎么连接数据库、怎么映射表实体,怎么处理http,怎么处理异常等,就可以直接写起来了。从应用层面上来说 nodejs 入门

高一学年期末考试回忆记暨退役游记

## 前言: ~~从某种意义上来说,我退役了~~ 我怎么可能会似?我还有一些事没有了结,一桩心愿未能完成,还有一个人不能辜负。在这之前我是不会退役的(~~标题党:6~~) 这个游记将会记载在这高一学年一次总结性的文化课考试,作为我的收官之战,同时也是决定我命运的一战,虽然这考试对我的实际影响并不大,

驱动开发:内核层InlineHook挂钩函数

内核中的`InlineHook`函数挂钩技术其实与应用层完全一致,都是使用劫持执行流并跳转到我们自己的函数上来做处理,唯一的不同只有一个内核`Hook`只针对内核API函数,虽然只针对内核API函数实现挂钩但由于其身处在最底层所以一旦被挂钩其整个应用层都将会受到影响,这就直接决定了在内核层挂钩的效果是应用层无法比拟的,对于安全从业者来说学会使用内核挂钩也是很重要的。