当前位置: 首页 > web >正文

机器学习(七)决策树-分类

一 概念

1 决策节点

通过条件判断而进行分支选择的节点。

将样本的属性值,也就是特征值与决策节点上的值进行比较,从而判断它的流向。

2 叶子节点

没有子节点的节点,表示最终的决策结果。

3 决策树的深度

所有节点的最大层次数

决策树具有一定的层次结构,根节点的层次数定为0,从下面开始每一层子节点层次数增加。

4 决策树优缺点

优点:可视化、可解释能力、对算力要求低;

缺点:容易产生过拟合,所以不要把深度调整太大;

二 基于信息增益决策树的建立

信息增益决策树倾向于选择取值较多的属性

有些情况下,这类属性可能不会提供太多有价值的信息,算法只能对描述属性为离散型属性的数据集构造决策树。

1 信息熵

信息熵描述的是不确定性。

信息熵越大,不确定性越大。信息熵的值越小,则样本集合D的纯度越高。

假设样本集合D共有N类,第K类样本所占比例为pk,则样本集合D的信息熵为:

2 信息增益

信息增益是一个统计量,用来描述一个属性区分数据样本的能力。

信息增益越大,那么决策树就会越简洁。

信息增益的程度用信息上的变化程度来衡量:IG(Y|X)=H(Y)-H(Y|X)≥0

3 信息增益决策树建立步骤

3.1 计算根节点的信息熵

上表把是否贷款分为2类样本:“是”占2/3,“否”占1/3;

3.2 计算属性的信息增益

3.2.1职业 属性的信息增益

IG(D,"职业“)
在职业中,工人占1/3,工人中,是否贷款各占1/2,所以:

在职业中,白领占2/3,  白领中,是贷款占3/4, 不贷款占1/4, 所以有

3.2.2 年龄 属性的信息增益

(以35岁为界)

3.2.3 收入 属性的信息增益

(以10000为界,大于等于10000为一类)

3.2.4 学历 属性的信息增益

(以高中为界, 大于等于高中的为一类)

注意: 

以上年龄使用35为界,收入使用10000为界,学历使用高中为界。

实计API使用中,会有一个参数"深度", 属性中具体以多少为界会被根据深度调整。

3.3 划分属性

对比属性信息增益发现,"收入"和"学历"相等,并且是最高的,所以我们就可以选择"学历"或"收入"作为第一个决策树的节点, 接下来我们继续重复3.1、3.2的做法继续寻找合适的属性节点。

三 基于基尼指数决策树的建立

基尼指数是指决策树算法中用于评估数据集纯度的一种度量,衡量的是数据集的不纯度,也可以说是分类的不确定性。

在构建决策树时,基尼指数被用来决定如何对数据集进行最优划分,以减少不纯度。

对于一个二分类问题,如果一个节点包含的样本属于正类的概率是 (p),则属于负类的概率是 (1-p)。

这个节点的基尼指数 (Gini(p)) 定义:

对于多分类问题,如果一个节点包含的样本属于第 k 类的概率是 p_k,则节点的基尼指数定义为:

3.1 基尼指数的意义

1、当一个节点的所有样本都属于同一类别,基尼指数为0,表示纯度最高。

2、当一个节点的样本均匀分布在所有类别时,基尼指数最大,表示纯度最低。

3.2 决策树中的应用

构建决策树的时候,希望每个内部节点的子节点能更纯,也就是基尼指数更小。

那么选择分割特征和分割点的目标是使子节点的平均基尼指数最小化。具体就是对一个特征,我们计算其所有的可能的分割点对应的子节点的加权平均基尼,选择最小化这个值的分割点。这个过程会在所有特征中重复,知道找到最佳的分割特征和分割点。

考虑一个数据集D,其中包含N个样本,特征A将数据集分割为|D1|和|D2|,则特征A的基尼指数为:Gini_A = \frac{|D_1|}{|D|} Gini(D_1) + \frac{|D_2|}{|D|} Gini(D_2),其中|D1|和|D2|分别是子集D1和D2的样本数量。

通过这样的方式,决策树算法逐步构建一棵树,每层的节点都尽可能减少基尼指数,最终达到对数据集的有效分类。

四 API

class sklearn.tree.DecisionTreeClassifier(....)

参数:

criterion "gini" "entropy” 默认为="gini" 
当criterion取值为"gini"时采用 基尼不纯度(Gini impurity)算法构造决策树,
当criterion取值为"entropy”时采用信息增益( information gain)算法构造决策树.
max_depth    int, 默认为=None  树的最大深度

# 可视化决策树

function sklearn.tree.export_graphviz(estimator, out_file="iris_tree.dot", feature_names=iris.feature_names)

参数:

estimator决策树预估器
out_file生成的文档
feature_names节点特征属性名


功能:
把生成的文档打开,复制出内容粘贴到"http://webgraphviz.com/"中,点击"generate Graph"会生成一个树型的决策树图

http://www.xdnf.cn/news/20243.html

相关文章:

  • [论文阅读] 人工智能 + 软件工程 | 当ISO 26262遇上AI:电动车安全标准的新玩法
  • 中国移动浪潮云电脑CD1000-系统全分区备份包-可瑞芯微工具刷机-可救砖
  • 乐观并发: TCP 与编程实践
  • 华锐视点VR风电场培训课件:多模块全面覆盖风机知识与操作​
  • UniApp 页面通讯方案全解析:从 API 到状态管理的最佳实践
  • 【Docker-Day 24】K8s网络解密:深入NodePort与LoadBalancer,让你的应用走出集群
  • B 题 碳化硅外延层厚度的确定
  • 【Linux学习笔记】信号的深入理解之软件条件产生信号
  • Docker在Windows与Linux系统安装的一体化教学设计
  • AI 基础设施新范式,百度百舸 5.0 技术深度解析
  • 【AI编程工具】快速搭建图书管理系统
  • 9.5 递归函数+常见算法
  • Preprocessing Model in MPC 7 - Matrix Triples and Convolutions Lookup Tables
  • LinuxC++项目开发日志——高并发内存池(1-定长内存池)
  • finally 与 return的执行顺序
  • Web相关知识(草稿)
  • MySQL高可用之组复制(MGR)
  • Web基础、HTTP/HTTPS协议与Nginx详解
  • 商城系统——项目测试
  • JUC的安全并发包机制
  • Python 值传递 (Pass by Value) 和引用传递 (Pass by Reference)
  • go面试题-什么是用户态和内核态
  • 数组本身的深入解析
  • 研发文档撰写质量参差不齐该怎么办
  • 突破大语言模型推理瓶颈:深度解析依赖关系与优化策略
  • YOLOv8主干网络替换为UniConvNet的详细指南
  • Unity中,软遮罩SoftMaskForUGUI的使用
  • 25高教社杯数模国赛【E题保姆级思路+问题分析】
  • 【Day 20】148.排序链表
  • Electron 执行python脚本