决策树与随机森林

目录

决策树

是:

1.一种有监督的分类(或预测)算法。

2.利用属性、属性值构造一个决策的路径,可类比程序的if_else的多层判断。

如:利用贷款人信息预测是否会拖延还贷的一个简单决策树。

Why:

  1. 易于理解和解释。树可以被可视化。
  2. 几乎不需要数据准备。其他算法通常需要数据标准化,需要创建虚拟变量并删除缺失值。但是,请注意,此模块不支持缺失值。
  3. 使用树的成本(即预测数据)是用于训练树的数据点数的对数。 能够处理数值型和分类型数据。其他技术通常专门分析只有一种类型变量的数据集。
  4. 能够处理多输出问题。
  5. 使用白盒模型。如果给定的情况在模型中是可以观察到的,那么对条件的解释就很容易用布尔逻辑来解释。相反,在黑箱模型中(例如,在人工神经网络中),结果可能很难解释。
  6. 可以使用统计测试验证模型。这样就有可能对模型的可靠性作出解释。 即使它的假设在某种程度上被生成数据的真实模型所违背,它也表现得很好。

How:

基本概念

  1. 训练数据:用于训练模型的数据,英文是train。

  2. 测试数据:用于测试(验证)模型准确度的数据,英文是test。训练数据、测试数据都是来自已知的数据集,然后划分为2部分,一部分训练、一部分测试(验证),也就是在已知的数据集内完成训练和验证,才能去预测实战。

  3. 纯度、不纯度:根据某个属性分割数据集,样本类型的集中度,纯度越高越高。如按是否恒温划分是否哺乳动物,10个里9个是哺乳动物,纯度高;如按是否有毛发划分,则10个里有6个是哺乳动物,则纯度降低。是否恒温是更好的划分属性。常用的测算纯度的函数有基尼gini、熵entropy。、

  4. 信息增益(information gain):对父节点,按属性再次划分后,纯度的增加量。

决策树生成

举例

  1. 数据集

    样本个数10个,属性3个:有房者、婚姻、年收入;标签:是否拖欠贷款。

    可以凭感觉,用if-else构造一个决策树。属性排序:有房者、婚姻、年收入。

    问题:因为属性、属性性值、先后顺序,决策树有指数个肯能,哪个是最优?

  2. 属性测算

婚姻属性的信息纯度最高。

  1. 属性选择

类似,生成完整的树。与感性的分配有差异,属性排序:婚姻、有房者、年收入。
关键问题:如何选择属性、生成节点?

选择属性、按属性值分类、局部最优、信息增益最大。

后序以此类推。

决策树缺点

  1. 决策树学习器可以创建过于复杂的树,不能很好地概括数据。这就是所谓的过拟合。为了避免这个问题,必须设置剪枝、设置叶节点所需的最小样本数或设置树的最大深度等机制。
  2. 决策树可能是不稳定的,因为数据中的小变化可能导致生成完全不同的树。通过集成决策树来缓解这个问题。
  3. 学习最优决策树的问题在最优性的几个方面都是NP-complete的,甚至对于简单的概念也是如此。因此,实际的决策树学习算法是基于启发式算法,如贪婪算法,在每个节点上进行局部最优决策。这种算法不能保证返回全局最优决策树。这可以通过训练多棵树再集成一个学习器来缓解,其中特征和样本被随机抽取并替换。
  4. 有些概念很难学习,因为决策树不能很容易地表达它们,例如异或、奇偶校验或多路复用器问题。
  5. 如果某些类占主导地位,则决策树学习者会创建有偏见的树。因此,建议在拟合决策树之前平衡数据集。
参考

https://www.bilibili.com/video/BV1T7411b7DG/?spm_id_from=333.337.search-card.all.click\&vd_source=1e37904a72db86b329d6b5320c86a013

Demo

酒分类预测:

https://github.com/heroicpoem/MachineLearningInAction/blob/master/decisionTree.ipynb

随机森林

1.是:

基于决策树的、集成算法。

森林,指包含多个决策树;

随机,指构造单棵决策树时,随机的选择样本,使得决策树是不同,或者侧重不同的能力。最后是整合多棵树的预测结果:均值或者众数。

2.Why:

  1. 随机决策森林纠正了决策树的过度拟合
  2. 随机森林通常优于决策树,但它们的准确性低于梯度提升树
  3. 更多的树会提高性能并使预测更稳定
  4. 抗噪

3.How:

构造多棵决策树,分别决策,整合结果。

2个超参:决策树个数、分几层、如何采样、结果整合方法。

参考

https://www.bilibili.com/video/BV1H5411e73F/?spm_id_from=333.337.search-card.all.click\&vd_source=1e37904a72db86b329d6b5320c86a013

Demo

https://blog.csdn.net/Graow/article/details/106749351

相关推荐
科技大视界1 小时前
投资AI项目,传统尽调不够用了——李章虎律师拆解算法、数据、算力三大雷区
人工智能·算法·数据挖掘
郝学胜-神的一滴2 小时前
算法实战:最小k个数——大顶堆的优雅解法
开发语言·数据结构·c++·python·程序人生·算法·排序算法
Irissgwe2 小时前
算法滑动窗口
数据结构·算法
怪兽学LLM2 小时前
LeetCode 105. 从前序与中序遍历序列构造二叉树:分治递归思路详解
算法·leetcode·职场和发展
可编程芯片开发2 小时前
基于PI控制的三相整流器控制系统的simulink建模与仿真,包含超级电容充电和电机
算法
酿情师2 小时前
区块链共识算法深度拆解:PoW、PoS、PBFT、Raft 原理解析
算法·区块链·共识算法
hansang_IR2 小时前
【记录】「SCOI2016」三道模拟赛/26.7.12
c++·算法
退休倒计时3 小时前
【每日一题】LeetCode 39. 组合总和 TypeScript
算法·leetcode·typescript
不是az3 小时前
力控相关知识点
算法·机器学习·最小二乘法
战血石LoveYY3 小时前
Integer类型超限,导致数据异常
java·算法