机器学习(八):决策树算法

一,if-else原理

决策树算法是以if-else来形成的,if-else它的用法就是:if 后跟判断条件,如果判断为真,也即满足条件,就执行 if 下的代码段,否则执行 else 下的代码段

例如我们假如要判断一个房子的房租,可以大概按如下所示流程:

这是由 if-else 来组成的,也是一颗典型的树形结构"二叉树"

二,决策条件

分类问题的数据集由许多样本构成,而每个样本数据又会有多个特征维度。数据样本的特征维度与最终样本的分类都可能存在着某种关联,因此决策树的判别条件将从特征维度集中产生。

那么应该如何选择判别条件,也就是提问问题呢

1,纯度

引入了"纯度"的概念,是对单一类样本在子集内所占重的的度量。 在每一次判别结束后,如果集合中归属于同一类别的样本越多,那么就说明这个集合的纯度就越高。

纯度函数 横轴表示某个类的占比,纵轴表示纯度值,首先某个类达到最大值,或者最小值时,纯度达到最高值,然后,当某一个类的占比达到 0.5 时,纯度将取得最低值。得如下图像:

纯度度量函数 纯度值越低意味着损失值越高,反之则越低。如下图所示:

2,信息熵

信息熵是借鉴热熵的概念,是用于衡量不确定性的指标,也就是离散随机事件出现的概率,情况越混乱,信息熵越大。香农公式如下:

p 代表概率的意思,这里 "X" 表示进行信息熵计算的集合

3,ID3算法-信息增益

最著名的决策树算法有三种,分别是 ID3、C4.5 和 CART,这里主要讲一下ID3算法。 在ID3算法中如何利用信息熵从特征集合中选择决策条件呢?

ID3 算法的核心思想:越小型的决策树越优于大的决策树,也就是使用尽可能少的判别条件。从香农的"信息论"中可以得知,ID3 算法选择信息增益最大的特征维度进行 if -else 判别。

信息增益

信息增益是针对一个具体的特征而言的,某个特征的有无对于整个系统、集合的影响程度就可以用"信息增益"来描述。

经过一次 if-else 判别后,原来的类别集合就被分裂成两个集合,而我们的目的是让其中一个集合的某一类别的"纯度"尽可能高,如果分裂后子集的纯度比原来集合的纯度要高,那就说明这是一次 if-else 划分是有效过的。

通过比较使的"纯度"最高的那个划分条件,也就是我们要找的"最合适"的特征维度判别条件。

可以采用信息熵来计算信息增益值,用划分前集合的信息熵减去按特征维度属性划分后的信息熵

最后,比较不同特征属性的信息增益,增益值越大,说明子集的纯度越高,分类的效果就越好,我们把效果最好的特征属性选为 if-else 的最佳判别条件。

三,决策树算法原理

决策树的目标就是得到纯度更高的集合,这个过程就可以叫提纯。

决策树算法通过判别条件从根节点开始分裂为子节点,子节点可以继续分裂,每一次分裂都相当于一次对分类结果的"提纯",周而复始,从而达到分类的目的,在这个过程中,节点为"否"的不在分裂,判断为"是"的节点则继续分裂。

由三种停止的方式:

  • 子节点属于同一类别:分类后的子节点集合都属于同一个类别,不可再分
  • 特征属性用完:既然是从特征属性挑选的判断条件,那么就有用完的可能性;当用完还没完成分类的时候,用占比较大的类作为节点的归属类
  • 手动停止:像设置决策树层数,节点个数等作为停止判断条件

四,剪枝策略

决策树会根据数据集各个维度的重要性来选择 if -else 分支,如果决策树将所有的特征属性都用完的情况下,那么过拟合现象就很容易出现。

要如何解决这种过拟合问题呢?这时就要用到"剪枝策略"。 可以分成两种,一种称为预剪枝,另一种称 为后剪枝。

1,预剪枝 即在分支划分前就进行剪枝判断,如果判断结果是需要剪枝,则不进行该分支划分。

2,后剪枝 决策树的各个判断分支已经形成后,才开始进行剪枝判断。

剪枝的意思就是减少特征属性的介入

相关推荐
JackHCC9 分钟前
自进化智能体协同进化综述
人工智能·机器学习
星马梦缘22 分钟前
机器学习与模式识别 第十二章 自适应学习优化器 考点压缩
人工智能·机器学习·优化器·sgd·adam·rmsprop
qcx231 小时前
Agentic RAG不止能回答问题,已经能自动修复真实CVE漏洞了
人工智能·机器学习·ai·llm·脑信号
jaychouchannel1 小时前
RecursiveCharacterTextSplitter 中文切分隐形缺陷:重叠、断语义、列表割裂完整复现与修复
人工智能·机器学习
天佑木枫2 小时前
AI:AI 开车撞了人,谁赔钱?——自动驾驶的法律黑洞
人工智能·机器学习·自动驾驶
zhiSiBuYu05172 小时前
混合检索实战指南:关键词与向量的完美融合
人工智能·python·机器学习
烟锁池塘柳03 小时前
【机器学习】万字长文详解集成学习 Ensemble Learning:从 Bagging、Boosting 到 Stacking 的全解析
机器学习·集成学习·boosting
2601_962344624 小时前
计算机毕业设计之基于大数据的视频数据分析平台及可视化
java·大数据·人工智能·深度学习·机器学习·数据分析·课程设计
JackHCC4 小时前
快手UniFormer特征×任务统一 Co-Scaling 排序框架
人工智能·机器学习
zzzzzz3105 小时前
别争了,OpenClaw 和国产龙虾我全都要:一个 AI Agent 混合部署实战
机器学习·机器人·api