决策树与随机森林

目录

决策树

是:

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

相关推荐
ExRoc40 分钟前
蓝桥杯真题 - 填充 - 题解
c++·算法·蓝桥杯
利刃大大1 小时前
【二叉树的深搜】二叉树剪枝
c++·算法·dfs·剪枝
一叶_障目1 小时前
机器学习之决策树(DecisionTree——C4.5)
人工智能·决策树·机器学习
天乐敲代码3 小时前
JAVASE入门九脚-集合框架ArrayList,LinkedList,HashSet,TreeSet,迭代
java·开发语言·算法
十年一梦实验室3 小时前
【Eigen教程】矩阵、数组和向量类(二)
线性代数·算法·矩阵
Kent_J_Truman3 小时前
【子矩阵——优先队列】
算法
快手技术5 小时前
KwaiCoder-23BA4-v1:以 1/30 的成本训练全尺寸 SOTA 代码续写大模型
算法·机器学习·开源
一只码代码的章鱼5 小时前
粒子群算法 笔记 数学建模
笔记·算法·数学建模·逻辑回归
小小小小关同学5 小时前
【JVM】垃圾收集器详解
java·jvm·算法
圆圆滚滚小企鹅。5 小时前
刷题笔记 贪心算法-1 贪心算法理论基础
笔记·算法·leetcode·贪心算法