1.定义:决策树是描述对实例进行分类的树形结构。
根节点:决策树的起始点,是树结构中的最顶层节点
叶节点:决策树的末端节点,它不再包含任何测试条件,代表了决策树的最终分类结果或预测值
内部节点:位于根节点和叶节点之间的节点。它也代表了对数据集的一种划分规则
举个例子:
天气 | 温度 | 湿度 | 风力 | 是否打网球 |
晴天 | 高 | 低 | 弱 | 是 |
晴天 | 高 | 高 | 强 | 否 |
多云 | 高 | 低 | 弱 | 是 |
雨天 | 低 | 高 | 弱 | 否 |
雨天 | 低 | 低 | 强 |
- 以 “天气” 为根节点进行划分,会得到三个分支:晴天、多云、雨天。
- 对于 “晴天” 分支下的数据,再看其他属性来进一步划分。发现 “湿度” 这个属性对于 “晴天” 分支下的数据有较好的划分效果。如果湿度为 “低”,则打网球的决策为 “是”;如果湿度为 “高”,则决策为 “否”。
- 对于 “多云” 分支下的数据,由于所有数据都显示适合打网球,所以这个分支的叶节点就是 “是”。
- 对于 “雨天” 分支下的数据,发现所有数据都显示不适合打网球,所以这个分支的叶节点就是 “否”。
1.2 决策树与if-then规则:
决策树的每个从根节点到叶节点的路径都可以转换为一条 if - then 规则。内部节点的测试条件构成了 if 部分,叶节点的类别或预测值构成了 then 部分。
#举个例子:
假设决策树的根节点是 “收入水平”,有两个分支 “高收入” 和 “低收入”。“高收入” 分支下的内部节点是 “对电子产品的需求程度”,有两个分支 “高需求” 和 “低需求”,“高需求” 叶节点对应的是 “购买”,“低需求” 叶节点对应的是 “不购买”;“低收入” 分支下直接到达叶节点 “不购买”。
- 从根节点到 “购买” 这个叶节点的路径可以转换为以下 if - then 规则:如果(收入水平 = 高收入)且(对电子产品的需求程度 = 高需求),那么(购买)。
- 从根节点到 “不购买” 这个叶节点(通过低收入分支)的路径可以转换为:如果(收入水平 = 低收入),那么(不购买)。
1.3 条件概率分布:
-
决策树的每一个分支决策过程都可以看作是在计算条件概率。以一个简单的疾病诊断决策树为例,根节点是 “是否发烧”,有 “是” 和 “否” 两个分支。假设在所有患者中患某种疾病的概率是 ,在发烧患者中患这种疾病的概率是 ( 表示发烧),这就是一个条件概率。当数据沿着 “发烧” 这个分支向下流动时,实际上是在根据这个条件概率来进一步判断患病的可能性。
2.决策树算法学习
决策树算法学习包括特征选择、决策树生成、决策树剪枝的过程。
2.1 特征选择
特征选择在于选取对训练数据具有分类能力的特征。
在选择的过程中我们通过比较信息增益来选择特征
2.1.1 信息增益
熵:表示随机变量不确定的度量,熵越大,表示随机变量的不确定性就越大,当p=0.5的时候,随机变量不确定性越大,熵值也取得最大值。
假如随机变量X的概率分布如下:
则熵的定义为:
#熵的理解
首先,是结果发生的概率,这一项反映了概率的“信息量”。当一个事件的概率越小,它发生时带来的信息量就越大。例如,“太阳从东边升起”这个事件概率很大,几乎是确定的,所以它发生时带来的信息量几乎为零;而“彩票中了头奖”这个事件概率很小,一旦发生,带来的信息量就很大。
然后,这一项实际上是对每个结果的信息量进行加权,权重就是该结果发生的概率。因为概率大的结果对总体不确定性的贡献更大,所以要乘以。
最后,前面的负号是为了保证熵的值是非负的,因为在(0,1)区间内,是负数,乘以-1就得到了一个非负的值。
条件熵:表示在已知随机变量X的条件下随机变量Y的不确定性。
定义如下:
#展开如下:
展开如下:
再把代入,得到下面式子:
互信息:熵与条件熵之差,信息增益等价于训练数据集中类与特征的互信息。
定义如下:其中为信息增益
#理解
D为给定训练数据集,A为特征,为数据集D的不确定性,为再A特征给定条件下数据集D的不确定性,二者之差,表示由于特征A使得对数据集D的分类的不确定性减少的程度。
2.1.2 信息增益进行特征选择
符号表示:
D表示训练数据集,表示样本容量。
K个类 ,k = 1,2,...,K, 为属于类 的样本个数,且 = 。
特征A 有 n个不同的取值,根据特征A 的取值将D 划分为n个子集, 为的样本个数,且。
表示中属于类 的样本的集合, 为 的样本个数。
步骤:
1.计算数据集D的经验熵
2.计算特征 A对数据集 D的经验条件熵 H(D|A)
3.计算信息增益 g(D,A)
g(D,A) = H(D) - H(D|A)
#举个例子:
是否参加课外辅导 | 是否有学习计划 | 模拟考试成绩 | 类别 |
否 | 是 | 中等 | 通过 |
是 | 是 | 良好 | 通过 |
否 | 否 | 差 | 未通过 |
是 | 是 | 优秀 | 通过 |
否 | 是 | 中等 | 通过 |
是 | 是 | 良好 | 通过 |
否 | 否 | 差 | 未通过 |
是 | 是 | 优秀 | 通过 |
否 | 是 | 中等 | 通过 |
是 | 是 | 良好 | 通过 |
否 | 否 | 差 | 未通过 |
是 | 是 | 优秀 | 通过 |
否 | 是 | 中等 | 通过 |
是 | 是 | 良好 | 通过 |
否 | 否 | 差 | 未通过 |
再计算是否有学习计划的信息增益:
最后计算模拟成绩的信息增益:
通过比较三个特征的信息增益,我们选择特征‘模拟成绩’作为最优特征
2.1.3 信息增益比
随着n的增大,每个子集的样本数量可能会变小,并且如果划分得足够细,每个子集可能会变得更纯(即子集内样本类别单一),使得趋近于0。
当很多趋近于0时,H(D|A)就会很小。
因为信息增益g(D,A)=H(D) - H(D|A),当H(D|A)很小的时候,信息增益g(D,A)就会很大。
信息增益比(Gain Ratio)是为了克服信息增益偏向于选择取值较多的特征这一缺点而提出的。它在信息增益的基础上,引入了一个惩罚项,这个惩罚项与特征的取值个数有关。
信息增益比的计算公式为:
,
其中g(D,A)是特征A对数据集D的信息增益,IV(A)是特征A的固有值(Intrinsic Value)。
,这里n是特征A的取值个数,是特征A取值为第i个值的样本数量,数据集D的样本总数。
#举个例子:
特征选择就到此,剩下决策树生成和剪枝等后面有空再更新啦