1
SLIQSLIQ :一种快速可伸缩分类器:一种快速可伸缩分类器Manish Mehta, Rakesh Agrawal, Jorma RissanenManish Mehta, Rakesh Agrawal, Jorma RissanenIBM Almaden Research Center, 1996IBM Almaden Research Center, 1996
报告人:郭新涛报告人:郭新涛2003.03.292003.03.29
2
内容摘要内容摘要 决策树算法 SLIQ 算法
数据结构预排序与广度优先增长策略种类型字段的最佳子集生成方法MDL 剪枝
SLIQ 性能评估
3
1. 1. 决策树算法决策树算法 决策树算法决策树算法 SLIQ 算法
数据结构预排序与广度优先增长策略种类型字段的最佳子集生成方法MDL 剪枝
SLIQ 性能评估
4
1. 1. 决策树算法决策树算法 什么是分类( Classification )?
训练集待测试样本集
可伸缩性( Scalability )大多数分类算法面临的共同问题:训练集受内存
容量的限制。算法可伸缩性的优势:更高的准确性设计目标:一个可伸缩的分类器
5
1. 1. 决策树算法决策树算法 什么是决策树( Decision Tree )?
决策树的优点 与其他分类方法相比相对较快 容易转化为分类规则,也容易转化为 SQL 查询 近似的或者更好的准确度
6
1. 1. 决策树算法决策树算法 算法
建树阶段 MakeTree (Training Data T)
Partition (T);Partition (Data S) if (all points in S are in the same class) then return; evaluate splits for each attribute A evaluate splits for each attribute A Use best split found to partition S into S1 and S2; Partition (S1); Partition (S2);
剪枝阶段为什么剪枝:训练数据中的“噪声”影响最终模型的
准确性。这些错误的枝条将导致利用模型时的分类错误。
剪枝的方法:去除那些导致错误的枝条,在可能的自述中挑选出错率最小的字树。
这一步是整个算法中时间消耗最大的部分
7
1. 1. 决策树算法决策树算法 可伸缩性问题研讨( 1 )
设计目标:一个可伸缩的、能够处理大数据集的决策树
以前的可伸缩性方案数据采样连续属性的离散化数据分成若干小块,分别构建决策树,然后综合成一
棵最终的树面临的问题:降低了准确性
8
1.1. 决策树算法决策树算法 可伸缩性问题研讨( 2 )
建树阶段关键:提高“确定最佳分裂( Best Split )”的可伸缩
性分裂指标举例 ,计算开销不大数值型字段,最佳分裂型如 ,开销主要是排序种类型字段,最佳分裂型如 ,开销主要
是寻找最佳的子集(遍历所有子集,时间复杂度为指数级)。
21)( jpTgini
vA)(, ASSSA
9
1. 1. 决策树算法决策树算法 可伸缩性问题研讨( 3 )
剪枝阶段剪枝:选择导致最低错误率的子树方案一:使用原有的测试数据方案二:使用独立的数据集
取样困难降低生成的模型的准确率
理想的剪枝方法:快速得到简洁而且准确的决策树
10
2. SLIQ2. SLIQ 算法算法 决策树算法 SLIQSLIQ 算法算法
数据结构预排序与广度优先增长策略种类型字段的最佳子集生成方法MDL 剪枝
SLIQ 性能评估
11
2. SLIQ2. SLIQ 算法算法 SLIQ 的优异性能
可伸缩性良好缩短学习时间处理常驻磁盘的大数据集的能力:对训练数据的记录
个数和训练样本的属性个数没有过多的限制处理大数据集,带来结果的准确性
新的剪枝方法更简洁、准确的结果
12
2. SLIQ2. SLIQ 算法算法 SLIQ 的关键词
预排序广度优先增长策略常驻磁盘的数据集快速寻找子集方法MDL 剪枝
13
2. SLIQ2. SLIQ 算法算法 数据结构
属性表( Attribute List )
每个属性有一个属性表有必要的话,属性表可以写回磁盘
类表( Class List )
仅有一张类表,类表必须常驻内存类表第 n 项,存放第 n 条记录的类标签。
属性值 指向类表表项的索引
类标签 指向该条记录所属树结点的索引
14
2. SLIQ2. SLIQ 算法算法 数据结构
树结点 内部节点记录必要的分类信息
叶子节点代表训练集的一块数据,也就是一个类别
每个节点都有一个类直方图,用来统计分类所需的必要的类别分布的信息。
C1 C2 … Cn
L f
R
C1 C2 … Cn
V1 f
V2
…
Vm
数值型字段的类直方图
种类型字段的类直方图
15
2. SLIQ2. SLIQ 算法算法 预排序与广度优先增长策略
预排序的例子
16
2. SLIQ2. SLIQ 算法算法 预排序与广度优先增长策略
计算最佳分割的算法EvaluateSplits() for each attribute A do
traverse attribute list of A for each value v in the attribute list do find the corresponding entry in the class list, and hence the corresponding class and the leaf node (say l) update the class histogram in the leaf l if A is a numeric attributenumeric attribute then compute splitting index for test (A <= v) for leaf l if A is a categorical attributecategorical attribute then for each leaf of the tree do find subset of A with best split
在这里,种类型字段使用类直方图里面的信息,寻找达到最佳gini指标的属性子集
在这里,数值型字段使用类直方图里面的信息计算 gini指标,寻找最佳分割
17
进行节点分裂的例子: 正在扫描属性表 Salary List 已经完成对该表第一个节点
的扫描 正在扫描该表第二个节点…
18
2. SLIQ2. SLIQ 算法算法 预排序与广度优先增长策略
计算出最佳分割以后,就可以产生子节点了子节点声称以后,需要对类表进行更新,使它指
向原来节点的子节点更新类表的算法
UpdateLabels() for each attribute A used in a splitattribute A used in a split do traverse attribute list of A for each value v in the attribute list do find the corresponding entry in the class list (say e) find the new class c to which v belongs by applying the splitting test at node referenced from e update the class label for e to c update node referenced in e to the child corresponding to the class c
19
2. SLIQ2. SLIQ 算法算法 预排序与广度优先增长策略
类表升级的例子
20
2. SLIQ2. SLIQ 算法算法 预排序与广度优先增长策略
一个优化策略有些节点会提前停止分裂,例如纯节点,或者根据事
先给定的策略停止分裂的节点把已经停止分裂的节点包含的记录从属性表中删除属性表得到压缩,从而后面的算法执行速度会加快。
21
2. SLIQ2. SLIQ 算法算法 种类型字段的最佳子集生成方法
种类型字段,最佳分裂型如 ,开销主要是寻找最佳的子集
折衷方案属性可能的值的个数 小于MAXSETSIZE 时,遍
历所有子集,寻找最佳分割属性可能的值的个数 大于MAXSETSIZE 时,使
用贪心算法( Greedy Algorithm ),寻找最佳分割的近似解。
论文作者的 MAXSETSIZE 取 10 , 2 的 10次方次被认为可以接受
)(, ASSSA
|)(| AS
|)(| AS
22
2. SLIQ2. SLIQ 算法算法 MDL 剪枝
MDL 原理:对数据进行编码的最佳模型是使得用该模型描述数据和描述这个模型的带价的和最小的模型
算法中 MDL 剪枝的目的是:对于生成的初始树,发现最好的描述训练集 S 的子树 T
)()|(),( MCostMDCostDMCost
23
2. SLIQ 算法 MDL 剪枝
数据编码代价定义为所有分类错误的总和
模型编码对树编码( Code1, Code2, Code3 )分裂方案编码
数值型种类型
24
2. SLIQ 算法 MDL 剪枝
裁减算法:对不同字树进行比较Cleaf(t) 、 Cboth(t) 、 Cleft(t) 、 Cright(t)
三种裁减策略完全的( Full )部分的( Partial )混合的( Hybrid )
25
3. SLIQ3. SLIQ 性能评估性能评估 评价目标
MDL 剪枝混合方法的表现最出色
小数据集可伸缩性
对训练样本的个数对输入属性的个数
26
Any Questions?Any Questions?
Top Related