【数据挖掘】决策树 分类 ( 抽取分类规则 | 过拟合 | 剪枝 | 先剪 | 后剪 | 连续数值离散化 | 最优化分点 | 增益率选择划分属性 )
文章目录
- I . 决策树 分类规则抽取
- II . 决策树 过拟合 与 剪枝
- III . 决策树 剪枝 先剪 与 后剪 对比
- IV . 连续属性 离散化处理 ( 二分法 | 最优划分点 )
- V . 根据 增益率 选择划分属性
- VI . 根据 增益率 选择划分属性 计算案例
- VII . 决策树 作用 及 优势
I . 决策树 分类规则抽取
1 . 决策树规则表示形式 : 决策树 中蕴含的 规则可以使用 IF-THEN 形式表示 ;
2 . 决策树规则数量 : 从决策树根节点 , 到叶子节点 , 每条路径都对应一条规则 , 规则数量就是叶子节点的数量 ;
3 . 中间内部节点表示 : 使用 AND 将多个属性判定组个在一起 , 相当于 逻辑与 运算 ;
4 . 叶子节点表示 : 叶子节点构成 THEN 部分 , 表达其分类结果 ;
5 . IF-THEN 示例 : 下图的决策树 , 有 5 个叶子节点 , 可以抽取出 5 条规则 , 下面列举这 5 条路径 :
① 下图中的红色路径 : 该条路径表示 , 如果年龄在 30 岁以下 , 是学生 , 就会购买商品 ;
IF age = "<=30" AND isStudent = "yes" THEN isBuy = "yes"
② 下图中的蓝色路径 : 该条路径表示 , 如果年龄在 30 岁以下 , 不是学生 , 就不会购买商品 ;
IF age = "<=30" AND isStudent = "no" THEN isBuy = "no"
③ 下图中的紫色路径 : 该条路径表示 , 31 ~ 39 岁的 , 会购买商品 ;
IF age = ">= 31 && <= 39>" isBuy = "yes"
④ 下图中的绿色路径 : 该条路径表示 , 在 40 岁以上 , 信用好的 , 会购买商品 ;
IF age = ">=40" AND credit= "good" THEN isBuy = "yes"
⑤ 下图中的黑色路径 : 该条路径表示 , 在 40 岁以上 , 信用一般的 , 不会购买商品 ;
IF age = ">=40" AND credit= "normal" THEN isBuy = "no"
II . 决策树 过拟合 与 剪枝
1 . 决策树过拟合问题 :
① 完全服从 : 生成的决策树 , 完全服从与训练集 ;
② 分支太多 : 这种过拟合的决策树 , 出现很多类型的分支 , 有些分支出现次数很少 , 甚至在实际使用中从来不用 , 分支不具有代表性 ;
③ 消极结果 : 过拟合会导致模型准确度很低 ;
2 . 解决过拟合问题 : 剪枝方法 ; 通过进行剪纸 , 将部分分支路径删除 ;
① 先剪 : 在建立 决策树 模型时 , 训练模型过程中 , 如果该数据样本分支很少 , 就不创建这个分支 ;
② 后剪 : 先将 完整的 决策树模型 创建出来 , 然后将样本少的路径直接剪除 ;
III . 决策树 剪枝 先剪 与 后剪 对比
1 . 时间消耗分析 :
① 先剪 : 训练模型时剪枝 , 训练时间会减少 , 相对于没有剪枝的情况 , 测试的时间也会的减少 ;
② 后剪 : 在模型创建后剪枝 , 要生成完整的树 , 训练时间会增加 , 训练完之后剪枝 , 相对于没有剪枝的情况 , 测试的时间会减少 ;
2 . 拟合风险 : 这里分为 过拟合 ( 拟合过度 ) 和 欠拟合 ( 拟合度不够 ) ;
① 先剪 : 不会过拟合 , 但是 有可能欠拟合 ;
② 后剪 : 不会过拟合 , 欠拟合风险不变 ;
3 . 最佳实践 : 推荐使用 后剪 剪枝策略 ;
IV . 连续属性 离散化处理 ( 二分法 | 最优划分点 )
1 . 连续值属性 :
① 连续属性离散化 : 决策树要基于一个离散的值进行分类 , 连续的值 , 无法根据属性值划分数据集 , 需要将连续属性值离散化 , 再使用决策树分析 ;
② 示例 : 如学生成绩 , 0 ~ 100 分 , 60 分以上划分为 及格 , 60 分以下划分为 不及格 ;
2 . 二分法处理连续属性值 :
① 连续属性 DDD : 数据集中的 DDD 属性 , 其取值是连续的数值 ;
② 属性值排序 : 将 DDD 属性的 nnn 个不同的连续取值从小到大排序 {a1,a2,⋯,an}\{ a_1 , a_2, \cdots , a_n \}{a1,a2,⋯,an} ;
③ 划分点 ttt : 划分点 ttt 是 DDD 属性的一个取值 , 将 DDD 属性的值分为 子集 Dt−D_t^-Dt− 和 Dt+D_t^+Dt+ ;
④ Dt−D_t^-Dt− 子集 : 该子集中的属性值 , 小于等于 ttt ;
⑤ Dt+D_t^+Dt+ 子集 : 该子集中的属性值 , 大于 ttt ;
3 . 最优划分点 :
① 候选划分点 : DDD 属性有 nnn 个取值 , 可以有 n−1n-1n−1 个候选划分点 ;
② 某两个属性值之间的划分点确定 : {a1,a2,⋯,an}\{ a_1 , a_2, \cdots , a_n \}{a1,a2,⋯,an} 取值集合中 , 将两个数值之间的中点 , 作为划分点 ;
③ 最优化分点确定 : 需要选择最优的划分点 , 以达到最终决策树分类的目的 ;
V . 根据 增益率 选择划分属性
1 . 信息增益弊端 : 如果数据集中 , 某个属性有很多值 , 其信息增益比较大 , 很容易将分支多的属性放在树根 ;
示例说明 : 如 人的性别 , 其取值只有 男 和 女 两种 , 其只有两项 , 人的年龄 有 130 种取值范围 , 其计算出来信息增益比较大 ;
2 . 增益率引入 : ID3 使用信息增益确定树根属性 , C4.5 使用增益率确定树根属性 ;
3 . 增益率 ( Gain Ratio ) 计算公式 :
① AAA 表示属性类型 ;
② DDD 表示样本的总个数 ;
③ vvv 表示当前的 AAA 属性不同取值个数 , 取值集合为 {a1,a2,⋯,av}\{a_1, a_2 , \cdots , a_v\}{a1,a2,⋯,av}
④ DjD_jDj 表示样本取值 aja_jaj 的样本个数 ;
SplitInfoA(D)=−∑j=1vDjDlog2DjDSplitInfo_A(D) = - \sum_{j=1}^{v} \frac{D_j}{D} log_2 \frac{D_j}{D}SplitInfoA(D)=−j=1∑vDDjlog2DDj
增益率公式 :
GainRatio(A)=Gain(A)/SplitInfo(A)GainRatio ( A ) = Gain(A) / SplitInfo(A)GainRatio(A)=Gain(A)/SplitInfo(A)
VI . 根据 增益率 选择划分属性 计算案例
1 . 计算案例 :
参考之前的 信息增益计算案例 : 信息增益计算 案例
2 . 信息增益计算结果 : 依次计算 各个属性的 信息增益 :
① 年龄 属性的信息增益 : Gain(年龄)=0.246Gain ( 年龄 ) = 0.246Gain(年龄)=0.246
② 收入 属性的信息增益 : Gain(收入)=0.029Gain ( 收入 ) = 0.029Gain(收入)=0.029
③ 是否是学生 属性的信息增益 : Gain(是否是学生)=0.151Gain ( 是否是学生 ) = 0.151Gain(是否是学生)=0.151
④ 信用等级 属性的信息增益 : Gain(信用等级)=0.048Gain ( 信用等级 ) = 0.048Gain(信用等级)=0.048
⑤ 树根 属性选择: 年龄属性的 信息增益 最大 , 选择年龄属性作为树根 ;
3 . 这里计算收入 属性的增益率 : 14 个样本中, 4 个高收入 , 6 个中等收入 , 4 个低收入 ;
SplitInfoA(D)=−∑j=1vDjDlog2DjD==−414log2414−614log2614−414log2414=0.926\begin{array}{lcl} SplitInfo_A(D) &=& - \sum_{j=1}^{v} \frac{D_j}{D} log_2 \frac{D_j}{D} \\\\ &=& = - \frac{4}{14} log_2 \frac{4}{14} - \frac{6}{14} log_2 \frac{6}{14} - \frac{4}{14} log_2 \frac{4}{14} \\\\ &=& 0.926 \end{array}SplitInfoA(D)===−∑j=1vDDjlog2DDj=−144log2144−146log2146−144log21440.926
GainRatio(A)=Gain(A)/SplitInfo(A)=0.0290.926=0.031GainRatio ( A ) = Gain(A) / SplitInfo(A) = \frac{0.029}{0.926} = 0.031GainRatio(A)=Gain(A)/SplitInfo(A)=0.9260.029=0.031
4 . 树根选择 : 同样增益率最大的属性 , 会被设置为 划分属性 ;
VII . 决策树 作用 及 优势
1 . 大数据分类 : 在大数据分类中 , 要求快速的对几百万的样本 , 涉及几十上百的属性进行分类 ;
2 . 决策树 算法优势 :
① 可伸缩性 : 随着数据量增大 , 复杂度线性增长 , 不是指数级增长 ;
② 学习速度快 : 学习速度比其它分类方法快 ;
③ 规则转化 : 可以抽取转化分类规则 ;
④ 数据库结合 : 可以使用 SQL 查询数据库中的数据 ;
⑤ 准确性高 : 使用决策树分类 , 准确性有保障 ;
【数据挖掘】决策树 分类 ( 抽取分类规则 | 过拟合 | 剪枝 | 先剪 | 后剪 | 连续数值离散化 | 最优化分点 | 增益率选择划分属性 )相关推荐
- 【机器学习-西瓜书】四、决策树:信息熵;信息增益;增益率;ID3;C4.5
推荐阅读:纯度:信息熵:信息增益 关键词: 纯度:信息熵:信息增益:增益率:ID3:C4.5:基尼指数:预剪枝:后剪枝 4.1基本流程 关键词:决策树(decision tree) 决策树是一种分类方 ...
- 数据挖掘 —— 有监督学习(分类)
数据挖掘 -- 有监督学习(分类) 1. KNN分类算法 2. 决策树分类算法 3. SVM算法简介 4. 分类--集成算法 4.1 随机森林参数介绍 4.2 Adaboost算法参数介绍 5 总结 ...
- 【数据挖掘】分类任务简介 ( 分类概念 | 分类和预测 | 分类过程 | 训练集 | 测试集 | 数据预处理 | 有监督学习 )
文章目录 I . 分类概念 II . 分类 ( 离散值 ) 和 预测 ( 连续值 ) III . 分类过程 IV . 分类过程中使用的数据集 ( 训练集 | 测试集 | 新数据 ) V . 数据预处理 ...
- 【数据挖掘笔记八】分类:基本概念
8.分类:基本概念 分类是一种重要的数据分析形式,它提取刻画重要数据类的模型,这种模型称为分类器,预测分类的(离散的.无序的)类标号. 8.1 基本概念 分类和回归(数值预测)是预测问题的两种主要类型 ...
- gini系数 决策树_SKlearn中分类决策树的重要参数详解
classsklearn.tree.DecisionTreeClassifier(criterion='gini', splitter='best', max_depth=None, min_samp ...
- 决策树(1. 分类树)
文章目录 前言 一.重要参数 1.1 criterion 建立一棵树的步骤 1.2 random_state & splitter 1.2.1 建立树的第五步(建立模型)添加参数 1.3 剪枝 ...
- 【数据挖掘笔记九】分类:高级方法
9.分类:高级方法 9.1 贝叶斯信念网络 贝叶斯信念网络是一种概率的图模型,不假定类条件独立性,说明联合条件概率分布,允许在变量的子集间定义类条件独立性,提供一种因果关系的图形模型,可以在其上进行学 ...
- 基于决策树的多分类_R中基于决策树的糖尿病分类—一个零博客
基于决策树的多分类 Article Outline 文章大纲 What is a decision tree?什么是决策树? Why use them?为什么要使用它们? Data Backgroun ...
- 决策树-线性二分类+非线性二分类
线性二分类 import matplotlib.pyplot as plt import numpy as np from sklearn.metrics import classification_ ...
最新文章
- 哪些云计算企业能活下来
- SpringBoot 项目war包部署 配置外置tomcat方法
- mybatis动态更新xml文件后热部署,不重启应用的方法
- Java生成真正格式的Excel文件
- 一个简单的获取时间的程序
- 定时上传文件至ftp服务器,CuteFTP FTP文件的定时上传图文教程
- 塔式太阳能热发电技术在我国发展现状与前景分析
- ec12编码器电路图_光电编码器的电路原理图详解
- 什么是生物特征识别?有哪些生物特征?
- python猜大小程序_「每日一练」巧用python实现猜大小的游戏
- 生活污水处理设备让污水无处躲藏
- spring基础概述
- android 打开和关闭输入法
- c语言中 #include < > 和include “ “的区别
- 灰度值 与 RGB值 及其转换
- 团体程序设计天梯赛-练习集 L1-034 点赞
- 罗素说过:“我是不会为自己的信念去死的,因为我不能肯定自己的信念是对的。”
- 云平台支持哪些java应用服务器_腾讯云部署javaWeb项目之一应用服务器
- 图解《个人信息保护法》
- 反垃圾邮件产品测试评价方法