决策树模型

  优点:高效简单、易于理解,可以处理不相关特征。

  缺点:容易过拟合,训练集在特征上是完备的

  决策树过程:特征选择、划分数据集、构建决策树、决策树剪枝

  决策树选择最优的划分特征,将数据集按照最优划分特征的取值划分成不同的子集,然后依次对子集重复上述步骤,指导子集中数据都归属于同一个类别,或者没有特征可以再划分了。

  特征选择通常有三种方法:    

  • 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——决策树模型的更多相关文章

  1. 决策树模型 ID3/C4.5/CART算法比较

    决策树模型在监督学习中非常常见,可用于分类(二分类.多分类)和回归.虽然将多棵弱决策树的Bagging.Random Forest.Boosting等tree ensembel 模型更为常见,但是“完 ...

  2. 决策树模型比较:C4.5,CART,CHAID,QUEST

    (1)C4.5算法的特点为: 输入变量(自变量):为分类型变量或连续型变量. 输出变量(目标变量):为分类型变量. 连续变量处理:N等分离散化. 树分枝类型:多分枝. 分裂指标:信息增益比率gain ...

  3. chapter02 三种决策树模型:单一决策树、随机森林、GBDT(梯度提升决策树) 预测泰坦尼克号乘客生还情况

    单一标准的决策树:会根每维特征对预测结果的影响程度进行排序,进而决定不同特征从上至下构建分类节点的顺序.Random Forest Classifier:使用相同的训练样本同时搭建多个独立的分类模型, ...

  4. 用决策树模型求解回归问题(regression tree)

    How do decision trees for regression work? 决策树模型既可以求解分类问题(对应的就是 classification tree),也即对应的目标值是类别型数据, ...

  5. 机器学习之使用sklearn构造决策树模型

    一.任务基础 导入所需要的库 import matplotlib.pyplot as plt import pandas as pd %matplotlib inline 加载sklearn内置数据集 ...

  6. Python 实现基于信息熵的 ID3 算法决策树模型

    版本说明 Python version: 3.6.6 |Anaconda, Inc.| (default, Jun 28 2018, 11:21:07) [MSC v.1900 32 bit (Int ...

  7. R_针对churn数据用id3、cart、C4.5和C5.0创建决策树模型进行判断哪种模型更合适

    data(churn)导入自带的训练集churnTrain和测试集churnTest 用id3.cart.C4.5和C5.0创建决策树模型,并用交叉矩阵评估模型,针对churn数据,哪种模型更合适 决 ...

  8. 吴裕雄 python 机器学习——分类决策树模型

    import numpy as np import matplotlib.pyplot as plt from sklearn import datasets from sklearn.model_s ...

  9. 吴裕雄 python 机器学习——回归决策树模型

    import numpy as np import matplotlib.pyplot as plt from sklearn import datasets from sklearn.model_s ...

随机推荐

  1. HDU 6114 Chess 【组合数】(2017"百度之星"程序设计大赛 - 初赛(B))

    Chess Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

  2. 序列化FastReport,重要提示少走弯路 good

    原本在开发一个报表插件,因为需要远程传输,因此需要序列化报表,序列化FastReport有两种方式, 1.仅序列化数据,由客户端接受到数据,并呈现报表,这种方式需要在客户端存储报表格式文件xxx.Fr ...

  3. 关于LAMP配置Let’s Encrypt SSL证书

    昨天建站,买VPS,先装了LAMP,部署wordpress,测试OK了,然后才买的域名,申请SSL证书. 结果Let’s Encrypt cerbot申请证书遇到了麻烦,--apache参数怎么也识别 ...

  4. random和string模块

    random模块import randomprint(random.random()) #随机打印一个浮点数print(random.randint(1,5)) #随机打印一个整数,包括5print( ...

  5. nyoj 999

    nyoj 999: 点击打开题目链接 题目思路,处理一下地图,把 D E 能看到的地方标记一下.然后就是暴力广搜一下.标记状态,因为同样在同一个点,但是你刚出发到达那点和找到D之后到达相同的点和找到E ...

  6. hdu-5721 Palace(最近点对)

    题目链接: Palace Time Limit: 8000/4000 MS (Java/Others)     Memory Limit: 262144/262144 K (Java/Others) ...

  7. 国外、国内各大OJ

    下面是几个比较大的在线提交系统(Online Judge)里面有大量历年的竞赛题目,注册一个ID,然后用自己熟悉的语言(一般有Pascal/C/C++/Java)写好源代码提交即可,会实时返 回信息告 ...

  8. ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 23. 继续讲Tag Helpers 和复习View Component

    当条件为true就渲染,否则就不渲染 ‘ 判断用户的登陆 更好的一点是做一个TagHelper.把这些明显的C#代码都去掉.最终都是用html和属性的形式来组成一个最终的代码 属性名称等于Confit ...

  9. Android Studio提示忽略大小写

    Android Studio的自动提示功能非常之强大,但是,如果你要输入“String”,你输入“string”,这个是不会提示的,也就是大小写敏感的,不爽是吗? 选择大小写不敏感就ok了!这样你想怎 ...

  10. HDU6035:Colorful Tree(树形DP)

    传送门 题意 给出一棵最小生成树及每个节点的颜色,询问\(\frac{n(n-1)}2\)条路径的权值和,一条路径的权值为该路径的颜色种数 分析 勉强理解了ftae的做法,但是代码还是不太会,还是太弱 ...