DecisionTree
时间:2019-02-19
本文章向大家介绍DecisionTree,主要包括DecisionTree使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
决策树
决策树算法过程及重点
1 基本流程
输入:训练集
属性集
过程:函数TreeGrenerate(D,A)
- 生成节点node;
- if D中样本全属于同一个类别C then.
- 将node标记为C类叶节点; 「递归返回情形(1)」
- return.
- end if
- if A= or D中样本在A上取值相同 then
- 将node标记为叶节点,其类别标记为D中样本数最多的类; 「递归返回情形(2)」
- return
- end if
- 从A中选择最优划分属性;
- for 的每一个值 do.
- 为node生成一个分支;令 表示 中在 上取值为 的样本集;
- if 为空 then
- 将分支节点标记为叶节点,其类别标记为D中样本最多的类;「递归返回情形(3)」
- return
- else
- 以TreeGeneration(, \ {})为分支节点
- end if
注意:递归返回(2)和(3)都是面临节点无法被划分的情形,但(2)是利用当前节点的后验分布进行类别判断,(3)是利用父节点的样本分布作为当前节点的先验分布进行类别判断。
2 流程核心(划分选择)
选择最优划分属性(信息增益,信息增益率,基尼指数)
2.1 信息增益
2.1.1 概念
信息熵 : .
越小,D的纯度越高。
信息增益:.
信息增益越大,则意味着使用属性来划分所获得的“纯度提升”越大,决策树学习算法以其为准则划分属性。
2.1.2 劣势
对可取值数目较多的属性有所偏好,极端情况以编号为属性时,该属性划分并无意义。
2.2 增益率
2.2.1 概念
增益率 :
其中
决策树算法以其为标准划分属性。
2.2.2 劣势
对取值数目较少的属性有所偏好,不直接用来选划分属性,而是从候选划分属性中找出信息增益高于平均水平的属性,再从中选出增益率最高的。
2.3 基尼指数
2.3.1 概念
基尼值 :
属性的基尼指数定义为:
2.3.2 使用
选择那个使得划分后基尼指数最小的属性为最优划分属性。
3 优化(过拟合+属性过多)
剪枝是决策树学习算法对付“过拟合”的主要手段,采用留出法。
3.1 预剪枝
<- Javascript基础回顾 之(二) 作用域
- 一不小心写了个WEB服务器
- 遍历算法(1)
- Membership三步曲之入门篇 - Membership基础示例
- Java-String.intern的深入研究
- 从Membership 到 .NET4.5 之 ASP.NET Identity
- Membership三步曲之进阶篇 - 深入剖析Provider Model
- java finally深入探究
- 背后的故事之 - 快乐的Lambda表达式(一)
- 背后的故事之 - 快乐的Lambda表达式(二)
- JVM GC杂谈之理论入门
- 线程池定制初探
- 由浅入深表达式树(二)遍历表达式树
- 由浅入深表达式树(一)创建表达式树
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Python 3.7 + BeautifulSoup 简单爬虫实例
- 你还在用Jmeter的GUI模式进行性能测试吗?(二)
- Jenkins配置SSH Key下载代码
- 详解kubeadm安装k8s集群常见问题
- Python 3.7 + Django 2.2.5 Web项目搭建
- Flink集成数据湖之实时数据写入iceberg
- unittest简单应用
- 假如 Web 当初不支持动态化
- Spring Boot使用OpenAPI规范
- 图论-单源最短路径(Dijskal算法)
- Mysql系列第二十五讲 mysql如何确保数据不丢失?有几点值得我们借鉴
- 使用Jsch进行安全的文件上传及下载
- 你见过最烂的代码长什么样子?
- 集智智能课程表项目 实战指南
- ZeroLogon(CVE-2020-1472) 分析与狩猎