决策树模型

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

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

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

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

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

  • 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. RabbitMQ 使用

    安装步骤略过. 启动 启动很简单,找到安装后的 RabbitMQ 所在目录下的 sbin 目录,可以看到该目录下有6个以 rabbitmq 开头的可执行文件,直接执行 rabbitmq-server ...

  2. spring boot 打印sql

    配置: logging.level.gov.chinatax.ctims.dao.mapper=DEBUG or logging: level: gov.chinatax.ctims.dao.mapp ...

  3. RegistryView

    https://docs.microsoft.com/en-us/dotnet/api/microsoft.win32.registryview?view=netframework-4.7 On th ...

  4. CoreData兼容iOS9和iOS10

    由于iOS10之后CoreData Stack的更改无法在iOS9的系统中运行,所以我们需要对上一小节中封装的工具类进行系统版本的兼容 iOS9和iOS10中CoreData最本质的区别其实就是管理对 ...

  5. fuse的mount机制 2 -系统调用mount

    经过上一篇的分析,目前已经知道mount函数最终进入到mount.c 中的 int fuse_kern_mount(const char *mountpoint, struct fuse_args * ...

  6. select下拉带图片-模拟下拉

    <style> /*下拉列表*/ ul,dl,ol,li {list-style: none;} .dropdown { float: right; position: relative; ...

  7. SPOJ:Another Version of Inversion(二维数组的逆序对)

    DCE Coders admins are way much geekier than they actually seem! Kartik has been following that tradi ...

  8. Java常用数据结构和算法

    二叉树: 1.每个结点不能多于两个子树: 2.一颗平衡二叉树的深度要比及结点个数N小得多. 二叉查找树: 1.结点x的所有左子树的值小于x,所有右子树的值大于x: AVL树: 1.一种带有平衡条件的二 ...

  9. [SDOI 2008] 洞穴勘测

    [题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=2049 [算法] LCT动态维护森林连通性 时间复杂度 : O(NlogN ^ 2) ...

  10. WIN7开机自动登录设置

    WIN7开机自动登录设置 1    执行rundll32 netplwiz.dll,UsersRunDll 开始菜单中找到运行并单击运行:如下图1所示                         ...