深圳网站制作的公司,商丘河南网站建设,常用的免费ppt模板,wordpress youku videos1. 决策树
决策树#xff08;Decision Tree#xff09;又称为判定树#xff0c;是运用于分类的一种树结构。其中的每个内部结点
#xff08;internal node#xff09;代表对某个属性的一次测试#xff0c;每条边代表一个测试结果#xff0c;叶结点#xff08;leafDecision Tree又称为判定树是运用于分类的一种树结构。其中的每个内部结点
internal node代表对某个属性的一次测试每条边代表一个测试结果叶结点leaf代表某
个类class或者类的分布class distribution最上面的结点是根结点。
决策树提供了一种展示在什么条件下会得到什么类别这类规则的方法。
下例是为了解决这个问题而建立的一棵决策树从中可以看到决策树的基本组成部分决策结点、
分支和叶结点。
下图给出了一个商业上使用的决策树的例子他表示了一个关心电子产品的用户是否会购买电脑的
知识用它可以预测某条记录或者某个人的购买意向。 这棵决策树对销售记录进行分类指出一个电子产品消费者是否会购买一台计算机“buys
computer”。每个内部结点方形框代表对某个属性的一次检测。每个叶结点椭圆框代表一
个类buyscomputersyes 或者 buyscomputersno
在这个例子中特征向量为
(age, student, credit rating, buys_computers)
被决策数据的格式为
(age, student, credit rating)
输入新的被决策的记录可以预测该记录隶属于哪个类。
总结决策树是⼀种树形结构本质是⼀颗由多个判断节点组成的树其中每个内部节点表示⼀个
属性上的判断 每个分⽀代表⼀个判断结果的输出 最后每个叶节点代表⼀种分类结果。
2. CLS算法
CLSConcept Learning System算法是早期的决策树学习算法。它是许多决策树学习算法的基
础。CLS的基本思想是从一棵空决策树开始选择某一属性分类属性作为测试属性。该测试属
性对应决策树中的决策结点。根据该属性的值的不同可将训练样本分成相应的子集如果该子集
为空或该子集中的样本属于同一个类则该子集为叶结点否则该子集对应于决策树的内部结
点即测试结点需要选择一个新的分类属性对该子集进行划分直到所有的子集都为空或者属于
同一类。
CLS算法存在的问题
采用不同的测试属性及先后顺序将会产生不同的决策树。 3. ID3算法
ID3决策树建立算法步骤
决定分类属性集合
对目前的数据表建立一个节点N
如果数据库中的数据都属于同一个类N就是树叶在树叶上标出所属的类纯的类别
如果数据表中没有其他属性可以考虑则N也是树叶按照少数服从多数的原则在树叶上标出所属
类别不纯的类别
否则根据平均信息期望值E或GAIN值选出一个最佳属性作为节点N的测试属性
节点属性选定后对于该属性中的每个值从N生成一个分支并将数据表中与该分支有关的数据
收集形成分支节点的数据表在表中删除节点属性那一栏
如果分支数据表属性非空则转第一步运用以上算法从该节点建立子树。
常见决策树算法启发函数的比较 ID3算法存在的缺点
(1) ID3算法在选择根节点和各内部节点中的分⽀属性时采⽤信息增益作为评价标准。信息增益的
缺点是倾向于选择取值较多的属性在有些情况下这类属性可能不会提供太多有价值的信息。
(2) ID3算法只能对描述属性为离散型属性的数据集构造决策树。
4. C4.5算法
C4.5算法对于ID3算法的改进
改进1用信息增益率代替信息增益来选择属性
改进2能够完成对连续值属性的离散化处理
改进3能处理属性值缺失的情况
改进4在决策树构造完成之后进行剪枝
假设按属性 A 划分 D 中的样本且属性 A 根据训练数据的观测具有 v 个不同取值{ a1, a2, ..., aj,
..., av }。如果 A 是离散值可依属性 A 将 D 划分为 v 个子集 { D1, D2, ..., Dj, ..., Dv }。其中Dj
为 D 中的样本子集它们在 A 上具有属性值 aj。这些划分将对应于从该节点A出来的分支。
信息增益度量偏向于对取值较多的属性进行测试即它倾向于选择v较大的属性A。
举个极端的例子考虑充当唯一标识的属性PID。对PID的分裂将产生大量划分与样本个数一样
多每个分类只包含一个样本且每个划分都是纯的。
对属性PID划分得到的信息增益最大显然这种划分对分类没有用处。
C4.5使用分裂信息(split information)将信息增益规范化选择具有最大信息增益率的属性作为分裂
属性。 Info(D) 0.940 Info收入(D) 0.911 Gain(收入) 0.029
高收入的有 4 个中等收入的有 6 个低收入的有 4 个
SplitInfo收入(D) - 4/14 * log4/14 - 6/14 * log6/14 - 4/14 * log4/14 1.557
GainRatio(收入) Gain(收入) / SplitInfo收入(D) 0.029 / 1.557 0.019
对于连续值属性按属性值大小从小到大排序取每对相邻值中点作为可能的分裂点split_point。
假设一连续值属性共有N个不同的属性值则可找到N-1个可能的分裂点。 检查每个可能分裂点
取能使得信息增益最大的分裂点将D分裂成 D1: A split_point 和 D2: A split_point(一个分裂
点二分法二 叉树)。 C4.5不使用中点而是直接使用一对值中较小的值作为可能的分裂点如本例中将使用5, 6作为可
能分裂点。
在某些情况下可供使用的数据可能缺少某些属性的值例如 一种简单的办法是赋予它该属性最常见的值例如将“晴”或“雨”赋予第6个实例的天气属性。
一种更复杂的策略是为 A 的每个可能值赋予一个概率 。 Gain(A) F ( Info(D) – InfoA (D)) 其中 F 为属性值未缺失的实例所占比例 计算 Info(D) 和
InfoA (D) 时忽略属性值缺失的实例。
Info(D) -8/13×log(8/13) - 5/13×log(5/13) 0.961 bits
Info天气(D) 5/13×(-2/5log(2/5) - 3/5×log(3/5)) 3/13×(-3/3log(3/3) - 0/3×log(0/3))
5/13×(-3/5log(3/5) - 2/5×log(2/5)) 0.747 bits
Gain(天气) 13/14 × (0.961 - 0.747) 0.199 bits
计算 SplitInfo 时将缺失的属性值当作一个正常值进行计算 本例中当作天气有四个值分别
是晴、多云、雨、?再计算其 SplitInfo。
SplitInfo天气(D) - 5/14×log(5/14) - 3/14×log(3/14) - 5/14×log(5/14) - 1/14×log(1/14) 1.809 bits
GainRatio(天气) Gain(天气) / SplitInfo天气(D) 0.199 / 1.809
分裂时将属性值缺失的实例分配给所有分支但是带一个权重 本例14个实例中共13个实例天气属性值未缺失 其中5个实例的天气属性为“晴”3个实例的天气
属性为“多云” 5个实例的天气属性为“雨”。
本例14个实例中共1个实例天气属性值缺失因此估算出天气属性值缺失的第6个实例 天气是晴
的概率是5/13天气是多云的概率是3/13天气是雨的概率是5/13 。
所以 T1 情况可以划分为湿度 75 2玩 0不玩 湿度 75 5/13玩 3不玩
叶节点以 (N/E) 的形式定义 其中 N 为到达该叶节点的实例数 E 为其中属于其它分类的实例
数。 例如不玩(3.4/0.4) 表示3.4个实例到达“不玩”节点其中0.4个实例 不属于“不玩”.
对于任一实例 湿度 75 的可能性是 2.0/(2.0 3.4)湿度 75 的可能性是 3.4/(2.0 3.4).
当湿度 75 时分类为玩的可能性 100%分类为不玩的可能性 0。
当湿度 75 时分类为玩的可能性 0.4/3.412%分类为不玩的可能性 3/3.488%。
最终分类的概率分布为玩 2.0/5.4×100% 3.4/5.4×12% 44%不玩 3.4/5.4×88% 56%
上述的决策树算法增长树的每一个分支的深度直到恰好能对训练样例比较完美地分类。
实际应用中当训练样本中有噪声或训练样例的数量太少以至于不能产生目标函数的有代表性的
采样时该策略可能会遇到困难。在以上情况发生时这个简单的算法产生的树会过度拟合训练样
例 (过度拟合: Over fitting。过度拟合产生的原因训练样本中有噪声训练样例太小等。
C4.5的优缺点
优点产⽣的分类规则易于理解准确率较⾼。
缺点在构造树的过程中需要对数据集进⾏多次的顺序扫描和排序因⽽导致算法的低效。 此
外C4.5只适合于能够驻留于内存的数据集当训练集⼤得⽆法在内存容纳时程序⽆法运⾏。
5. CART算法
分类回归树CARTClassification and Regression Tree其特点是在计算过程中充分利用二分
支树的结构Bianry Tree-structured即根节点包含所有样本在一定的分裂规则下根节点被分
裂为两个子节点这个过程又在子节点上重复进行直至不可再分成为叶节点为止。使用GINI指
标来选择分裂属性使用二元切分(将生成二叉树) 基于代价-复杂度剪枝。
算法描述其中T代表当前样本集当前候选属性集用T_attributelist表示。
1创建根节点N 2为N分配类别
3if T 都属于同一类别 or T 中只剩下 一个样本则返回 N 为叶节点否则为其分配属性
4for each T_attributelist 中属性执行该属性上的一个划分计算此划分的GINI系数
5N 的测试属性 test_attributeT_attributelist 中最小 GINI 系数的属性
6划分T得到T1、T2子集
7对于T1重复1-6
8对于T2重复1-6
CART算法考虑到每个节点都有成为叶子节点的可能对每个节点都分配类别。 分配类别的方法可
以用当前节点中出现最多的类别也可以参考当前节点的分类错误或者其他更复杂的方法。
Gini指标最小划分越纯。 选择具有最小Gini指标 (或最大∆Gini)的属性作为分裂属性。
处理离散值属性以收入为例对收入属性的所有可能子集 {低中高}{低中}{低
高}{中高}{低}{中}{高} 。考虑所有可能的二元划分并计算划分前后的 Gini 指标 选择
能产生最小 Gini 指标的子集作为分裂子集。 6. 递归分割greedy algorithm
从根节点开始考虑一个分裂变量 j 和分裂点 s得到2个区域最优的变量 j 和分裂点 s要满足 对于给定的 j 和 s最里层的优化问题的解为 而对于给定的 j分裂点 s 很快能找到。
这样遍历所有的自变量就能找到最佳的一对 j 和 s。