决策树(学习笔记)

1.定义:决策树是描述对实例进行分类的树形结构。

根节点:决策树的起始点,是树结构中的最顶层节点

叶节点:决策树的末端节点,它不再包含任何测试条件,代表了决策树的最终分类结果或预测值

内部节点:位于根节点和叶节点之间的节点。它也代表了对数据集的一种划分规则

举个例子:

天气

温度

湿度

风力

是否打网球

晴天

晴天

多云

雨天

雨天

  • 以 “天气” 为根节点进行划分,会得到三个分支:晴天、多云、雨天。
    • 对于 “晴天” 分支下的数据,再看其他属性来进一步划分。发现 “湿度” 这个属性对于 “晴天” 分支下的数据有较好的划分效果。如果湿度为 “低”,则打网球的决策为 “是”;如果湿度为 “高”,则决策为 “否”。
    • 对于 “多云” 分支下的数据,由于所有数据都显示适合打网球,所以这个分支的叶节点就是 “是”。
    • 对于 “雨天” 分支下的数据,发现所有数据都显示不适合打网球,所以这个分支的叶节点就是 “否”。

1.2 决策树与if-then规则:

决策树的每个从根节点到叶节点的路径都可以转换为一条 if - then 规则。内部节点的测试条件构成了 if 部分,叶节点的类别或预测值构成了 then 部分。

#举个例子:

假设决策树的根节点是 “收入水平”,有两个分支 “高收入” 和 “低收入”。“高收入” 分支下的内部节点是 “对电子产品的需求程度”,有两个分支 “高需求” 和 “低需求”,“高需求” 叶节点对应的是 “购买”,“低需求” 叶节点对应的是 “不购买”;“低收入” 分支下直接到达叶节点 “不购买”。

  • 从根节点到 “购买” 这个叶节点的路径可以转换为以下 if - then 规则:如果(收入水平 = 高收入)且(对电子产品的需求程度 = 高需求),那么(购买)。
  • 从根节点到 “不购买” 这个叶节点(通过低收入分支)的路径可以转换为:如果(收入水平 = 低收入),那么(不购买)。

1.3 条件概率分布:

  • 决策树的每一个分支决策过程都可以看作是在计算条件概率。以一个简单的疾病诊断决策树为例,根节点是 “是否发烧”,有 “是” 和 “否” 两个分支。假设在所有患者中患某种疾病的概率是P(D) ,在发烧患者中患这种疾病的概率是 P(D|F)( 表示发烧),这就是一个条件概率。当数据沿着 “发烧” 这个分支向下流动时,实际上是在根据这个条件概率来进一步判断患病的可能性。

2.决策树算法学习

决策树算法学习包括特征选择、决策树生成、决策树剪枝的过程。

2.1 特征选择

特征选择在于选取对训练数据具有分类能力的特征。

在选择的过程中我们通过比较信息增益来选择特征

2.1.1 信息增益

:表示随机变量不确定的度量,熵越大,表示随机变量的不确定性就越大,当p=0.5的时候,随机变量不确定性越大,熵值也取得最大值。

假如随机变量X的概率分布如下:

P(X=x_{i})=p_{i} ,i=1,2,...,n

则熵的定义为:

H(X)=-\sum_{i=1}^{n}p_{i}log(p_{i})

#熵的理解

首先,p_i是结果x_i发生的概率,log(p_i)这一项反映了概率p_i的“信息量”。当一个事件的概率越小,它发生时带来的信息量就越大。例如,“太阳从东边升起”这个事件概率很大,几乎是确定的,所以它发生时带来的信息量几乎为零;而“彩票中了头奖”这个事件概率很小,一旦发生,带来的信息量就很大。

 然后,p_ilog(p_i)这一项实际上是对每个结果的信息量进行加权,权重就是该结果发生的概率p_i。因为概率大的结果对总体不确定性的贡献更大,所以要乘以p_i

 最后,前面的负号是为了保证熵的值是非负的,因为p_i在(0,1)区间内,log(p_i)是负数,乘以-1就得到了一个非负的值。

条件熵:表示在已知随机变量X的条件下随机变量Y的不确定性。

定义如下:

H(Y|X)=\sum_{i=1}^{n}p_{i}H(Y|X=x_{i}),p_{i}=P(X=x_{i})

#展开如下:

H(Y|X = x_i)展开如下:

H(Y|X = x_i)=-\sum_{j = 1}^{m}P(Y = y_j|X = x_i)log_2P(Y = y_j|X = x_i)

再把H(Y|X = x_i)代入H(Y|X),得到下面式子:

H(Y|X)=-\sum _{i = 1}^{n}\sum _{j = 1}^{m}P(Y = y_j,X = x_i)log\frac{P(Y = y_j,X = x_i)}{P(X = x_i)}

互信息:熵与条件熵之差,信息增益等价于训练数据集中类与特征的互信息。

定义如下:其中g(D,A)为信息增益

g(D,A)=H(D)-H(D|A)

#理解

D为给定训练数据集,A为特征,H(D)为数据集D的不确定性,H(D|A)为再A特征给定条件下数据集D的不确定性,二者之差,表示由于特征A使得对数据集D的分类的不确定性减少的程度。

2.1.2 信息增益进行特征选择

符号表示:

D表示训练数据集,\vert D \vert表示样本容量。

K个类 C_k,k = 1,2,...,K, \vert C_k \vert为属于类 C_k的样本个数,且 \sum_{k = 1}^{K} \vert C_k \vert\vert D \vert

特征A 有 n个不同的取值\{​{a_1,a_2,\dots,a_n}\},根据特征A 的取值将D 划分为n个子集(D_1,D_2,\dots,D_n), \vert D_i \vertD_i的样本个数,且\sum_{i = 1}^{n} \vert D_i \vert = \vert D \vert

D_{ik} 表示D_i中属于类 C_k的样本的集合, \vert D_{ik} \vert为  D_{ik}的样本个数。

步骤:

1.计算数据集D的经验熵H(D)

H(D) = -\sum_{k = 1}^{K} \frac{\vert C_k \vert}{\vert D \vert} \log_2 \frac{\vert C_k \vert}{\vert D \vert}

2.计算特征 A对数据集 D的经验条件熵 H(D|A)

H(D|A) = \sum_{i = 1}^{n} \frac{\vert D_i \vert}{\vert D \vert} H(D_i) = -\sum_{i = 1}^{n} \frac{\vert D_i \vert}{\vert D \vert} \sum_{k = 1}^{K} \frac{\vert D_{ik} \vert}{\vert D_i \vert} \log_2 \frac{\vert D_{ik} \vert}{\vert D_i \vert}

3.计算信息增益 g(D,A)

g(D,A) = H(D) - H(D|A)

#举个例子:

是否参加课外辅导

是否有学习计划

模拟考试成绩

类别

中等

通过

良好

通过

未通过

优秀

通过

中等

通过

良好

通过

未通过

优秀

通过

中等

通过

良好

通过

未通过

优秀

通过

中等

通过

良好

通过

未通过

再计算是否有学习计划的信息增益:

最后计算模拟成绩的信息增益:

通过比较三个特征的信息增益,我们选择特征‘模拟成绩’作为最优特征

2.1.3 信息增益比

随着n的增大,每个子集D_i的样本数量\left | D_i \right |可能会变小,并且如果划分得足够细,每个子集D_i可能会变得更纯(即子集内样本类别单一),使得H(D_i)趋近于0。

当很多H(D_i)趋近于0时,H(D|A)就会很小。

因为信息增益g(D,A)=H(D) - H(D|A),当H(D|A)很小的时候,信息增益g(D,A)就会很大。

信息增益比(Gain Ratio)是为了克服信息增益偏向于选择取值较多的特征这一缺点而提出的。它在信息增益的基础上,引入了一个惩罚项,这个惩罚项与特征的取值个数有关。

信息增益比的计算公式为:

GainRatio(D,A)=\frac{g(D,A)}{IV(A)}

其中g(D,A)是特征A对数据集D的信息增益,IV(A)是特征A的固有值(Intrinsic Value)。

IV(A)=-\sum_{i = 1}^{n}\frac{\vert D_{i}\vert}{\vert D\vert}\log_{2}\frac{\vert D_{i}\vert}{\vert D\vert},这里n是特征A的取值个数,\vert D_{i}\vert是特征A取值为第i个值的样本数量,\vert D\vert数据集D的样本总数。

#举个例子:

特征选择就到此,剩下决策树生成和剪枝等后面有空再更新啦

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值