信息增益

决策树算法

我的梦境 提交于 2019-11-29 00:26:02
Infi-chu: http://www.cnblogs.com/Infi-chu/ 一、简介 决策树思想的来源非常朴素,程序设计中的条件分支结构就是if-else结构,最早的决策树就是利用这类结构分割数据的一种分类学习方法 1.定义: 决策树是一种树形结构,其中每个内部节点表示一个属性上的判断,每个分支代表一个判断结果的输出,最后每个叶节点代表一种分类结果,本质是一颗由多个判断节点组成的树 。 二、决策树原理 1.熵 在物理学中,熵Entropy是“混乱”程度的度量 系统越有序,熵越低;系统混乱或者越分散,熵越高 信息理论 : 1、 从信息的完整性上进行的描述: 当 系统的有序状态一致时 ,**数据越集中的地方熵值越小,数据越分散的地方熵值越大。 2、 从信息的有序性上进行的描述: 当 数据量一致时 , 系统越有序,熵值越低;系统越混乱或者分散,熵值越高 。 1948年香农提出了 信息熵 (Entropy)的概念。 假如事件A的分类划分是(A1,A2,...,An),每部分发生的概率是(p1,p2,...,pn),那信息熵定义为公式如下:(log是以2为底,lg是以10为底) eg. 案例1: 如果一颗骰子的六个面都是1 ,投掷它不会给你带来任何新信息,因为你知道它的结果肯定是1,它的信息熵为? 答案: - log(1) = 0 。 案例2: 假设我们没有看世界杯的比赛

基于sklearn的决策树算法

为君一笑 提交于 2019-11-28 11:28:36
1、决策树介绍 决策树简单的理解为if-then的集合,其优点主要有分类速度快、可读性等。决策树的生成主要可分为三个步骤:特征的选择、决策树的生成、决策树的剪枝。 1.1特征选择 对于结点的选择,总得需要一个计算方法来实现,这个方法的目标是优先选择分类能力强的特征,这样才提高决策树的效率,如果随机选择特征的话将会产生复杂度或者是结点更多的决策树,显然不是我们想要的。 怎么计算特征的分类能力呢,通常选择的准则是信息增益或信息增益比。 要计算信息增益,首先要知道熵的概念:表示随机变量不确定程度, 设X是一个取有限个值的离散随机变量,其概率分布为: P ( X = x i ) = P i , i = 1 , 2 , , , n P ( X = x i ) = P i , i = 1 , 2 , , , n //--> 则随机变量的熵定义为: H ( X ) = − ∑ i = 1 n p i l o g 2 p i H ( X ) = − ∑ i = 1 n p i l o g 2 p i //--> 其中对数不一定必须以2为底,也可自然对数e。 如,随机变量只取两个值0,1,则分布为: P ( X = 1 ) = p , P ( X = 0 ) = 1 − p , 0 < = p < = 1 P ( X = 1 ) = p , P ( X = 0 ) = 1 − p , 0 <= p

机器学习实战之决策树(二)

自作多情 提交于 2019-11-27 19:24:30
1 # -*- coding: UTF-8 -*- 2 from math import log 3 import operator 4 5 """ 6 函数说明:计算给定数据集的经验熵(香农熵) 7 8 Parameters: 9 dataSet - 数据集 10 Returns: 11 shannonEnt - 经验熵(香农熵) 12 Author: 13 Jack Cui 14 Blog: 15 http://blog.csdn.net/c406495762 16 Modify: 17 2017-07-24 18 """ 19 def calcShannonEnt(dataSet): 20 numEntires = len(dataSet) #返回数据集的行数 21 labelCounts = {} #保存每个标签(Label)出现次数的字典 22 for featVec in dataSet: #对每组特征向量进行统计 23 currentLabel = featVec[-1] #提取标签(Label)信息 24 if currentLabel not in labelCounts.keys(): #如果标签(Label)没有放入统计次数的字典,添加进去 25 labelCounts[currentLabel] = 0 26 labelCounts[currentLabel

decision tree 决策树(一)

◇◆丶佛笑我妖孽 提交于 2019-11-27 18:13:08
一 决策树   原理:分类决策树模型是一种描述对实例进行分类的树形结构。决策树由结点(node)和有向边(directed edge)组成。结点有两种类型:内部结点(internal node)和叶结点(leaf node)。内部结点表示一个特征或属性,叶结点表示一个类。而最上面的结点就是决策树的根结点(root node)。 决策树(decision tree)是一种基本的分类与回归方法,上图就是一个决策树。 长方形:decision block 判断模块 椭圆:terminating block 终止模块(表示已经得出结论,可以终止运行) 左右箭头:branch 分支   我们可以把决策树看成一个if-then规则的集合,由(root node)到(leaf node)的每一条路径构建一条规则;路径上内部结点的特征对应着规则的条件,而叶结点的类对应着规则的结论。决策树的路径:互斥并且完备。每一个实例都被一条路径或一条规则所覆盖,而且只被一条路径或一条规则所覆盖。 决策树过程: 收集数据:可以使用任何方法。比如想构建一个相亲系统,我们可以从媒婆那里,或者通过参访相亲对象获取数据。根据他们考虑的因素和最终的选择结果,就可以得到一些供我们利用的数据了。 准备数据:收集完的数据,我们要进行整理,将这些所有收集的信息按照一定规则整理出来,并排版,方便我们进行后续处理。 分析数据

决策树

六眼飞鱼酱① 提交于 2019-11-27 18:12:56
一、决策树是一种基本的分类与回归方法。 二、决策树学习的三个步骤:特征选择、生成决策树、决策树修剪 三、特征选择: 特征选择的准则是信息增益或信息增益比 1、信息增益 信息熵定义: 熵越大,随机变量的不确定性越大 当随机变量只取两个值,0,1时,X的分布为: 熵为 此时,熵H(p)随概率p变化的曲线如下图所示(单位比特) 当p=0或p=1时,H(p)=0,随机变量完全没有不确定性,当p=0.5时,H(p)=1,随机变量的不确定性最大 信息增益:g(D,A) = H(D) - H(D|A) 例1:下表是一个由15个样本组成的贷款申请训练数据,数据包括贷款人的4个特征(属性):第1个特征是年龄,有3个可能值:青年,中年,老年;第2个特征是有工作,有两个可能值:是,否;第3个特征是有自己的房子,有2个可能值:是,否;第4个特征是信贷情况,有3个可能值:非常好,好,一般。表的最后一列是类别,是否同意贷款,取2个值:是,否。 ID 年龄 有工作 有自己的房子 信贷情况 类别 1 青年 否 否 一般 否 2 青年 否 否 好 否 3 青年 是 否 好 是 4 青年 是 是 一般 是 5 青年 否 否 一般 否 6 中年 否 否 一般 否 7 中年 否 否 好 否 8 中年 是 是 好 是 9 中年 否 是 非常好 是 10 中年 否 是 非常好 是 11 老年 否 是 非常好 是 12 老年

决策树与随机森林

爷,独闯天下 提交于 2019-11-27 18:12:21
一、决策树 决策树(decision tree)是一种基本的分类与回归方法,本篇主要讨论用于分类的决策树。 1.决策树模型 分类决策树模型是一种描述对实例进行分类的树形结构。决策树由结点(node)和有向边(directed edge)组成。结点有两种类型:内部结点(internal node)和叶节点(leaf node)。内部结点表示一个特征或属性,叶节点表示一个类。 下图为一个决策树的示意图,图中圆和方框分别表示内部结点和叶节点。 2.特征选择 如何选择特征?即需要确定选择特征的准则。如果一个特征具有更好的分类能力,或者说,按照这一特征将训练数据集分割成子集,使得各个子集在当前条件下有更好的分类,那么就更应该选择这个特征。 2.1 熵 在信息论与概率统计中,熵(entropy)是表示随机变量不确定性的度量。设X是一个有限的离散随机变量,其概率分布为 \begin{align}\notag P(X=x_{i})=p_{i}, i=1,2,...,n \end{align} 则随机变量X的熵定义为 \begin{align}\notag H(X)=-\sum_{i=1}^{n}p_{i}\textrm{log}p_{i} \end{align} 上式中,对数以2为底或以e为底。如有0概率,定义0log0=0。由定义可知,熵只依赖于X的分布,而与X的取值无关,所以也可将X的熵记作H

机器学习实战之决策树算法笔记

孤人 提交于 2019-11-27 08:36:24
简介 决策树类似于下图这种if-then 结构的判断算法。 必要的数学概念: 1. 信息熵 :度量信息混乱程度的一个概念,越混乱熵就越大,在概率论中用数学期望表示,在机器学习中按一下公式定义 ,所以信息熵是0-log2|y|之间的值 2. 信息增益 :用来度量某个特征对整个分类结果影响大小的量,实质是熵与特征条件熵的差,某个特征的信息增益越大,就说明这个特征越重要。*选取信息增益最大的特征可以作为划分特征的依据(ID3算法,不具备泛化能力,不能对新数据进行分类)。计算公式书本这么写的 3. 增益率 :信息增益偏向于特征取值多的那个特征,取值多会使得复杂、熵变大,因此求比值可以抵消这种复杂度。 特点是偏向选择特征数目少的特征,因此划分特征的时候选择信息增益高于平均水平特征中的增益比最大那个特征,而不是选择增益比最大的(C4.5算法) ,公式 4. 基尼指数 :类似于信息熵的一种计算方法,在CART算法中使用,公式 ID3算法书本实例计算信息熵和信息增益:我们拥有这样一个判断西瓜好不好的数据集 计算整体的信息熵, Pk 的取值是根据正负样本来取值的 ,也就是整体的信息熵计算中Pk看的是标签(最终结果),正样本为8/17,负样本是9/17. 然后计算某个特征信息熵的时候,它是建立在正负样本的基础上的,于是就比如色泽有三种,就拿青绿来举例子,正样本中为3个,负样本也是三个

各种树模型细节比较(分类树,回归树,随机森林,gbdt, xgboost)

烈酒焚心 提交于 2019-11-27 05:41:49
前言 树模型实在是个庞大的家族,里面有许多细节值得注意,怕自己遗忘,写一期总结方便以后查询。先介绍三种划分方式: 信息增益: 计算数据集D中的经验熵H(D): 计算特征A对数据集D的经验条件H(D/A): 计算休息增益差: 其中D为样本容量,pi代表当前节点D中i类样本比例。设有K个类(1,2,…,K),Ck为属于为K类样本的样本数。设特征A有j个不同的取值(a1,…,aj),根据A的取值将D划分为D1,…,Dj(代表样本数)。 信息增益率: 分裂信息计算公式: 信息增益率定义为: 选择最大增益率作为分裂特征 Gini系数: 在CART树中使用,这里CART先不展开后文会写。 从根节点开始,对节点计算现有特征的基尼指数。 对每一个特征,例如A,再对其每个可能的取值如a,根据样本点对A=a的结果划分为两个部分(这里假设A只有两个值,因为 CART是二叉树 ): 上面的式子表示的是不确定性的大小,越小表示数据纯度越高。 分类树 ID3: ID3算法的核心是在决策树各个节点上根据 信息增益 来选择进行划分的特征,然后递归地构建决策树。 具体方法: 从根节点开始,对节点计算所有可能的特征的信息增益,选择信息增益值最大的特征作为节点的划分特征; 由该特征的不同取值建立子节点; 再对子节点递归地调用以上方法,构建决策树; 到所有特征的信息增益都很小或者没有特征可以选择为止,得到最终的决策树。