1 / 26

SLIQ :一种快速可伸缩分类器 Manish Mehta, Rakesh Agrawal, Jorma Rissanen IBM Almaden Research Center, 1996

SLIQ :一种快速可伸缩分类器 Manish Mehta, Rakesh Agrawal, Jorma Rissanen IBM Almaden Research Center, 1996. 报告人:郭新涛 2003.03.29. 内容摘要. 决策树算法 SLIQ 算法 数据结构 预排序与广度优先增长策略 种类型字段的最佳子集生成方法 MDL 剪枝 SLIQ 性能评估. 1. 决策树算法. 决策树算法 SLIQ 算法 数据结构 预排序与广度优先增长策略 种类型字段的最佳子集生成方法 MDL 剪枝 SLIQ 性能评估. 1. 决策树算法.

ivrit
Download Presentation

SLIQ :一种快速可伸缩分类器 Manish Mehta, Rakesh Agrawal, Jorma Rissanen IBM Almaden Research Center, 1996

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. SLIQ:一种快速可伸缩分类器Manish Mehta, Rakesh Agrawal, Jorma RissanenIBM Almaden Research Center, 1996 报告人:郭新涛 2003.03.29

  2. 内容摘要 • 决策树算法 • SLIQ算法 • 数据结构 • 预排序与广度优先增长策略 • 种类型字段的最佳子集生成方法 • MDL剪枝 • SLIQ性能评估

  3. 1. 决策树算法 • 决策树算法 • SLIQ算法 • 数据结构 • 预排序与广度优先增长策略 • 种类型字段的最佳子集生成方法 • MDL剪枝 • SLIQ性能评估

  4. 1. 决策树算法 • 什么是分类(Classification)? • 训练集 • 待测试样本集 • 可伸缩性(Scalability) • 大多数分类算法面临的共同问题:训练集受内存容量的限制。 • 算法可伸缩性的优势:更高的准确性 • 设计目标:一个可伸缩的分类器

  5. 1. 决策树算法 • 什么是决策树(Decision Tree)? • 决策树的优点 • 与其他分类方法相比相对较快 • 容易转化为分类规则,也容易转化为SQL查询 • 近似的或者更好的准确度

  6. 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 Use best split found to partition S into S1 and S2; Partition (S1); Partition (S2); • 剪枝阶段 • 为什么剪枝:训练数据中的“噪声”影响最终模型的准确性。这些错误的枝条将导致利用模型时的分类错误。 • 剪枝的方法:去除那些导致错误的枝条,在可能的自述中挑选出错率最小的字树。 这一步是整个算法中时间消耗最大的部分

  7. 1. 决策树算法 • 可伸缩性问题研讨(1) • 设计目标:一个可伸缩的、能够处理大数据集的决策树 • 以前的可伸缩性方案 • 数据采样 • 连续属性的离散化 • 数据分成若干小块,分别构建决策树,然后综合成一棵最终的树 • 面临的问题:降低了准确性

  8. 决策树算法 • 可伸缩性问题研讨(2) • 建树阶段 • 关键:提高“确定最佳分裂(Best Split )”的可伸缩性 • 分裂指标举例 ,计算开销不大 • 数值型字段,最佳分裂型如 ,开销主要是排序 • 种类型字段,最佳分裂型如 ,开销主要是寻找最佳的子集(遍历所有子集,时间复杂度为指数级)。

  9. 1. 决策树算法 • 可伸缩性问题研讨(3) • 剪枝阶段 • 剪枝:选择导致最低错误率的子树 • 方案一:使用原有的测试数据 • 方案二:使用独立的数据集 • 取样困难 • 降低生成的模型的准确率 • 理想的剪枝方法:快速得到简洁而且准确的决策树

  10. 2. SLIQ算法 • 决策树算法 • SLIQ算法 • 数据结构 • 预排序与广度优先增长策略 • 种类型字段的最佳子集生成方法 • MDL剪枝 • SLIQ性能评估

  11. 2. SLIQ算法 • SLIQ的优异性能 • 可伸缩性良好 • 缩短学习时间 • 处理常驻磁盘的大数据集的能力:对训练数据的记录个数和训练样本的属性个数没有过多的限制 • 处理大数据集,带来结果的准确性 • 新的剪枝方法 • 更简洁、准确的结果

  12. 2. SLIQ算法 • SLIQ的关键词 • 预排序 • 广度优先增长策略 • 常驻磁盘的数据集 • 快速寻找子集方法 • MDL剪枝

  13. 2. SLIQ算法 • 数据结构 • 属性表(Attribute List) • 每个属性有一个属性表 • 有必要的话,属性表可以写回磁盘 • 类表(Class List) • 仅有一张类表,类表必须常驻内存 • 类表第n项,存放第n条记录的类标签。

  14. 2. SLIQ算法 • 数据结构 • 树结点 • 内部节点记录必要的分类信息 • 叶子节点代表训练集的一块数据,也就是一个类别 • 每个节点都有一个类直方图,用来统计分类所需的必要的类别分布的信息。 数值型字段的类直方图 种类型字段的类直方图

  15. 2. SLIQ算法 • 预排序与广度优先增长策略 • 预排序的例子

  16. 2. SLIQ算法 • 预排序与广度优先增长策略 • 计算最佳分割的算法EvaluateSplits()for each attribute A do traverse attribute list of Afor 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 lif A is a numeric attribute then compute splitting index for test (A <= v) for leaf lif A is a categorical attribute thenfor each leaf of the tree do find subset of A with best split 在这里,数值型字段使用类直方图里面的信息计算gini指标,寻找最佳分割 在这里,种类型字段使用类直方图里面的信息,寻找达到最佳gini指标的属性子集

  17. 进行节点分裂的例子: • 正在扫描属性表Salary List • 已经完成对该表第一个节点的扫描 • 正在扫描该表第二个节点…

  18. 2. SLIQ算法 • 预排序与广度优先增长策略 • 计算出最佳分割以后,就可以产生子节点了 • 子节点声称以后,需要对类表进行更新,使它指向原来节点的子节点 • 更新类表的算法UpdateLabels() for each attribute A used in a split do traverse attribute list of Afor 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. SLIQ算法 • 预排序与广度优先增长策略 • 类表升级的例子

  20. 2. SLIQ算法 • 预排序与广度优先增长策略 • 一个优化策略 • 有些节点会提前停止分裂,例如纯节点,或者根据事先给定的策略停止分裂的节点 • 把已经停止分裂的节点包含的记录从属性表中删除 • 属性表得到压缩,从而后面的算法执行速度会加快。

  21. 2. SLIQ算法 • 种类型字段的最佳子集生成方法 • 种类型字段,最佳分裂型如 ,开销主要是寻找最佳的子集 • 折衷方案 • 属性可能的值的个数 小于MAXSETSIZE时,遍历所有子集,寻找最佳分割 • 属性可能的值的个数 大于MAXSETSIZE时,使用贪心算法(Greedy Algorithm),寻找最佳分割的近似解。 • 论文作者的MAXSETSIZE取10,2的10次方次被认为可以接受

  22. 2. SLIQ算法 • MDL剪枝 • MDL原理:对数据进行编码的最佳模型是使得用该模型描述数据和描述这个模型的带价的和最小的模型 • 算法中MDL剪枝的目的是:对于生成的初始树,发现最好的描述训练集S的子树T

  23. 2. SLIQ算法 • MDL剪枝 • 数据编码 • 代价定义为所有分类错误的总和 • 模型编码 • 对树编码(Code1, Code2, Code3) • 分裂方案编码 • 数值型 • 种类型

  24. 2. SLIQ算法 • MDL剪枝 • 裁减算法:对不同字树进行比较 • Cleaf(t)、Cboth(t)、Cleft(t)、Cright(t) • 三种裁减策略 • 完全的(Full) • 部分的(Partial) • 混合的(Hybrid)

  25. 3. SLIQ性能评估 • 评价目标 • MDL剪枝 • 混合方法的表现最出色 • 小数据集 • 可伸缩性 • 对训练样本的个数 • 对输入属性的个数

  26. Any Questions?

More Related