ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

决策树(分类)原理笔记

2021-05-22 19:33:55  阅读:151  来源: 互联网

标签:log 特征 分类 笔记 增益 节点 决策树


----分类树(非参数有监督学习方法)

  • 决策树是一种应用广泛的归纳推理算法,在分类问题中,决策树算法基于特征样本进行分类构成一棵包含一系列if-then规则的树
    数学上,解释为:定义在特征空间与类空间上的条件概率分布。
  • 优点:分类速度快、健壮性好、模型具有可读性
  • 应用:医疗诊断,贷款风险评估等领域

非参数:不用太多处理数据

有监督:需要输入标签

例子:

一个人出去打球与否和天气的特征关系:

在这里插入图片描述

  • 构成:

    • Node and Directed Edge
    • Node: Internal Node(for一些特征) and Leaf Node(for 一些分类标记)
  • 执行:

    • 从树根开始递归执行
      • 为内部节点 -> 移动到当前节点的某个子节点
      • 为内部节点 -> 返回叶节点所表示的分类标记
      • 结束过程

这就像是一系列if - else语句的算法,这个算法是根据训练样本自动生成的。

生成决策树

  • 本质:从训练集中归纳出一组分类规则,与训练数据不矛盾的决策树可能有多个,也可能没有。目标就是找到一棵与训练数据矛盾比较少的。具有较强泛化能力的决策树

  • 构造算法:

    • 输入:D( Dataset ), A( Featureset )

    • 输出:决策树

    • 构造算法:递归

      • 流程:

        • ①如果当前D中所有样本属于同一类->创建叶子节点,节点的值为唯一的类标记

          ②如果当前特征集A为空集 ->创建叶节点,节点的值为数据集D中出现最多的类标记

          • 否则,创建内部节点,值为数据集D中出现最多的类标记.
          • 从特征集合中以某种规则(特征选择)抽取一个特征ai, 再根据该特征的值切分当前数据集D,得到数据子集D1,D2,D3,…,Dk.
          • 使用k个数据子集D1,…, Dk以及特征子集A-{ai}递归调用决策树构造算法,创建k个子树
          • 将当前内部节点作为k个子树的父节点

切分特征的选择

有助于分类的特征:按这个特征进行切分数据集,能使得各个数据子集样本尽可能属于同一类别(提高数据子集的Purity,降低不确定性)。

在使用一个特征切分数据集后,用Information Gain or Information Gain Ratio来量化分类不确定性降低程度。

信息熵(Information Gain):

设X是一个可取有限个值{x1,x2,x3,…,xn}的离散随机变量,概率分布是 p i = P ( X = x i ) p_i = P(X = x_i) pi​=P(X=xi​)

则,

信息熵: H ( x ) = − ∑ i = 1 n p i log ⁡ 2 p i   ( b i t ) ( 底 数 为 e 时 , 单 位 为 : n a t ) H(x) = -\sum^{n}_{i=1}p_i\log_2 p_i\ (bit) (底数为e时,单位为:nat) H(x)=−∑i=1n​pi​log2​pi​ (bit)(底数为e时,单位为:nat)

p_i == 0,定义 :0log0==0。

信息熵值越大,表示不确定性越强。

举例:抛硬币:

​ X 的 信 息 熵 : H ( X ) = − p log ⁡ 2 p − ( 1 − p ) log ⁡ 2 ( 1 − p ) X的信息熵:H(X)=-p \log_2p-(1-p)\log_2(1-p) X的信息熵:H(X)=−plog2​p−(1−p)log2​(1−p)

在这里插入图片描述

很明显,0.5时不确定性最大。

条件信息熵

是指在给定某个数(某个变量为某个值)的情况下,另一个变量的熵是多少(变量的不确定性是多少)

假设X概率分布: p i = P X ( X = x i ) p_i = P_X(X=x_i) pi​=PX​(X=xi​)

Y在X条件下的条件概率分布: P j ∣ i = P Y ∣ X ( y j ∣ x i ) P_{j|i}=P_{Y|X}(y_j|x_i) Pj∣i​=PY∣X​(yj​∣xi​)

条件熵: H(Y|X)定义为:$H(Y|X) = \sum_{i=1}{n}P_x(X=x_i)H(Y|X=x_i)=\ \sum_{i=1}{n}(-p_i\sum_{j=1}^{m}P_{j|i}\log p_{j|i}) $

条件熵中X是一个变量,意思是在一个变量X的条件下(变量X的每个值都会取),另一个变量Y熵对X的期望。

那么:以特征A对D进行分割,得到n个数据子集{D1,D2, …}(个人理解为多个特征列向量),Di数据分为k各类别{C1, C2,…}(个人理解为,每个特征中对应的标签),以A为条件的D的条件熵H(D|A)定义为:
H ( D ∣ A ) = − ∑ i = 1 n ( ∣ D i ∣ ∣ D ∣ ∑ j = 1 k C i j D i log ⁡ ∣ C i j ∣ ∣ D i ∣ ) ∣ . ∣ 表 示 数 据 集 容 量 H(D|A)=-\sum_{i=1}^{n}(\frac{|D_i|}{|D|}\sum^{k}_{j=1}\frac{C_{ij}}{D_i}\log\frac{|C_{ij}|}{|D_i|})\\|.|表示数据集容量 H(D∣A)=−i=1∑n​(∣D∣∣Di​∣​j=1∑k​Di​Cij​​log∣Di​∣∣Cij​∣​)∣.∣表示数据集容量

信息增益

在使用一个特征切分数据集后,来量化分类不确定性降低程度。

信息增益定义为 g ( D , A ) = H ( D ) − H ( D ∣ A ) g(D, A)=H(D)-H(D|A) g(D,A)=H(D)−H(D∣A)

这里的差值越大,表示A克服不确定性越大,具有更强的分类能力。

划分特征时选用此作为指标:计算每个特征的信息增益,选择信息增益最大的特征作为切分特征。

  • 先计算出信息熵
  • 在计算各特征下的条件熵
  • 在计算出信息增益
  • 比较取最大值

信息增益比

如果一个特征的可取值比较多,那么通常信息增益比较大,会被优先选择。有失公平。

信息增益比就是在信息增益的基础上对可取值比较多的特征做出一定的“惩罚”。

数据集D,特征A,根据特征A的n个可取值将D切分为{D1,D2,D3…}

以特征A的值为分类标记计算熵
H A ( D ) = − ∑ i = 1 n ∣ D i ∣ ∣ D ∣ log ⁡ 2 ∣ D i ∣ ∣ D ∣ g r a t i o ( D , A ) = g ( D , A ) H A ( D ) H_A(D)=-\sum^{n}_{i=1}\frac{|D_i|}{|D|}\log_2\frac{|D_i|}{|D|}\\g_{ratio}(D,A)=\frac{g(D,A)}{H_A(D)} HA​(D)=−i=1∑n​∣D∣∣Di​∣​log2​∣D∣∣Di​∣​gratio​(D,A)=HA​(D)g(D,A)​

实现方法简述:

实现方法有ID3,C4.5,前者依据信息增益,后者依据增益比。
缺点:ID3实例各特征取值必须是离散值,而不是能连续实数值(气温只能取‘高’‘中’‘低’);预测目标值只能为离散值,不能为连续实数值。只能作为分类,不能作为回归

而CART算法解决了这个问题,既能分类还有能回归。

标签:log,特征,分类,笔记,增益,节点,决策树
来源: https://blog.csdn.net/weixin_52103757/article/details/117170205

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有