ML——决策树模型
决策树模型
优点:高效简单、易于理解,可以处理不相关特征。
缺点:容易过拟合,训练集在特征上是完备的
决策树过程:特征选择、划分数据集、构建决策树、决策树剪枝
决策树选择最优的划分特征,将数据集按照最优划分特征的取值划分成不同的子集,然后依次对子集重复上述步骤,指导子集中数据都归属于同一个类别,或者没有特征可以再划分了。
特征选择通常有三种方法:
- ID3——信息信息
- C4.5——信息增益比
- CART——基尼指数
一、信息增益
首先信息论中熵表示随机变量不确定性度量,熵越大,不确定性越大。
熵的定义是:

其中pi表示随机变量(决策树中是类别变量label)的概率,通常用频率估计(下同)。所以说熵是随机变量的分布的熵。
条件熵(某个特征下的加权熵,某个特征下熵的期望)定义是:

其中pi表示X=xi的概率,
表示X=xi条件下,随机变量Y的熵。可以看做是特征X不同取值下,Y的熵的期望(熵的加权求和)。所以条件熵是某个特征条件下熵。
信息增益的定义就是随机变量本来的熵减去在某个特征下的条件熵:
IG(Y,X) = H(Y) - H(Y|X)
这些概念对应于数据集中如下所示:
根据能力、学历、性别等来预测一个人的收入情况

收入这个随机变量按取值高和低本来就有一个熵=-4.0/7*log(4.0/7)-3.0/7*log(3.0/7)=0.6829

在性别这个随机变量的不同取值下,收入的条件熵=(性别为男的比例)*(性别男中收入的熵)+(性别为女的比例)*(性别女中收入的熵)
=(05.0/7)*(-3.0/5*log(3.0/5)-2.0/5*log(2.0/5)) + (2.0/7)*(-1.0/2*log(1.0/2)-1.0/2*log(1.0/2))
=0.6788
所以在性别这个特征下,收入的信息增益为=0.6829-0.6788=0.0041,可以认为性别这个特征对收入高低的确定影响不大,或者关系不大。信息增益同时也度量了收入在性别上基本上不存在倾斜分布,一个2/3,一个1/2。
以此类推,可以计算每一个特征下的信息增益,特征的信息增益越大说明对收入的区分度越大。所以算法选择信息增益最大的特征作为当前的最优特征来划分数据集。
ps:这个过程可以看做依次选取每个特征,然后按照这个特征在Excel做排序,排序后会将类别变量(收入)划分为多个子集,在当前排序下,分别计算收入各个子集的加权熵。上图就是按照性别排序后的结果
二、信息增益比
信息增益会使得算法倾向于选择取值多的特征,因此提出按照信息增益比来选择最优特征,信息增益比越大,特征对类别的区分度越大。
信息增益比的定义是当前特征下的信息增益比上该特征的熵(之前所计算的熵都是计算类别变量Y的熵,而这里计算的是该特征的分布的熵,计算公式都一样,只是计算的随机变量不同而已)
三、基尼指数
基尼的定义是:

其中K是随机变量的所有取值个数;基尼是随机变量的基尼,决策树中是类别变量的基尼。基尼与熵类似,都可以表示随机变量的不确定性。
基尼指数的定义是:

基尼指数的计算跟条件熵的计算十分相似,几乎没有什么区别,只是一个是计算某个特征下的熵的期望,一个是计算某个特征下的基尼的期望。在选择最优特征的时候,这里是选择基尼指数最小的特征作为最优特征。
基于基尼指数构建的CART树是二分的,等于某个特征值的划分到左子树,不等于的划分到右子树,以此类推再对左右子树划分。这样做的好处一个是可以处理连续型的特征,另一个好处是特征可以反复利用,不像ID3或者C4.5那样每次划分数据集都是特征消耗的。
划分数据集
以上三种策略都可以计算最优特征,然后按照最优特征将数据集划分为不同子集,以此类推继续划分子集,可以递归的实现。
决策树剪枝
剪枝是为了防止决策树过拟合,而提出的删除部分叶节点或者子树的策略。剪枝分预剪枝和后剪枝,预剪枝是在构建决策树之前就已经设置了决策树的深度、最大宽度maxBin等。后剪枝是在决策树已经生成之后,定义决策树的代价函数(损失函数),有了代价函数评估决策树的代价。然后递归的将叶节点为一个叶节点,得到新的决策树,如果新的决策树代价更小则剪枝生效。
ML——决策树模型的更多相关文章
- 决策树模型 ID3/C4.5/CART算法比较
决策树模型在监督学习中非常常见,可用于分类(二分类.多分类)和回归.虽然将多棵弱决策树的Bagging.Random Forest.Boosting等tree ensembel 模型更为常见,但是“完 ...
- 决策树模型比较:C4.5,CART,CHAID,QUEST
(1)C4.5算法的特点为: 输入变量(自变量):为分类型变量或连续型变量. 输出变量(目标变量):为分类型变量. 连续变量处理:N等分离散化. 树分枝类型:多分枝. 分裂指标:信息增益比率gain ...
- chapter02 三种决策树模型:单一决策树、随机森林、GBDT(梯度提升决策树) 预测泰坦尼克号乘客生还情况
单一标准的决策树:会根每维特征对预测结果的影响程度进行排序,进而决定不同特征从上至下构建分类节点的顺序.Random Forest Classifier:使用相同的训练样本同时搭建多个独立的分类模型, ...
- 用决策树模型求解回归问题(regression tree)
How do decision trees for regression work? 决策树模型既可以求解分类问题(对应的就是 classification tree),也即对应的目标值是类别型数据, ...
- 机器学习之使用sklearn构造决策树模型
一.任务基础 导入所需要的库 import matplotlib.pyplot as plt import pandas as pd %matplotlib inline 加载sklearn内置数据集 ...
- Python 实现基于信息熵的 ID3 算法决策树模型
版本说明 Python version: 3.6.6 |Anaconda, Inc.| (default, Jun 28 2018, 11:21:07) [MSC v.1900 32 bit (Int ...
- R_针对churn数据用id3、cart、C4.5和C5.0创建决策树模型进行判断哪种模型更合适
data(churn)导入自带的训练集churnTrain和测试集churnTest 用id3.cart.C4.5和C5.0创建决策树模型,并用交叉矩阵评估模型,针对churn数据,哪种模型更合适 决 ...
- 吴裕雄 python 机器学习——分类决策树模型
import numpy as np import matplotlib.pyplot as plt from sklearn import datasets from sklearn.model_s ...
- 吴裕雄 python 机器学习——回归决策树模型
import numpy as np import matplotlib.pyplot as plt from sklearn import datasets from sklearn.model_s ...
随机推荐
- Struts2的工作原理(图解)详解
Struts2的工作原理 上图来源于Struts2官方站点,是Struts 2 的整体结构. 一个请求在Struts2框架中的处理大概分为以下几个步骤(可查看源码:https://github.com ...
- MRP-MD04 中的函数
1.需求溯源 : MD_PEGGING_NODIALOG 2.实时库存 : MD_STOCK_REQUIREMENTS_LIST_API 这个函数中MDPSX 和 MDEZX 是通过 MDPS 的 I ...
- 20170225-ALV tree 显示
1.写程序, 2.话屏幕9000,CALL SCREEN 9000.(双击屏幕进去画个容器就ok,+OK_CODE,+去掉注释) 3.处理好ALV 的PBO 初始化,处理用户事件PAO,user co ...
- JSP 使用 JDBC连接SQL Server
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
- log4j 路径环境变量配置和log4j加载配置
1.lo4j日志路径从环境变量读取,log4j.xml配置如下: 具体配置如下: log4j.appender.R.Encoding=UTF-8 log4j.appender.R=org.apache ...
- HDU1532 Drainage Ditches —— 最大流(sap算法)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1532 Drainage Ditches Time Limit: 2000/1000 MS (Java/ ...
- POJ1077 Eight —— 反向BFS
主页面:http://www.cnblogs.com/DOLFAMINGO/p/7538588.html 代码一:以数组充当队列,利用结构体中的pre追溯上一个状态在数组(队列)中的下标: #incl ...
- Balancing Act(树的重心)
传送门 Balancing Act Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 14070 Accepted: 593 ...
- kvm_虚拟机迁移
virsh domblklist 虚拟机名称 #查看虚拟磁盘文件 一.kvm虚拟机静态迁移 1.静态迁移就是虚拟机在关机状态下,拷贝虚拟机虚拟磁盘文件与配置文件到目标虚拟主机中,实现的迁移. (1)虚 ...
- linux以字符为单位进行读写操作
1 所用函数 fgetc(FILE *fp):成功返回所读入的字符 失败为-1 fputc(int c,FILE *fp):第一个参数表示需要输出的字符 第二个参数表示输出的文件.成功返回输出的字符 ...