[数据挖掘课程笔记]SLIQ算法
1.数据结构

主要的数据结构有:1.Attribute List 2.Class List
对于数据集,每一个属性都有一个对应的Attribute List.如上图所示,每个Attribute List有两列,分别是对应的属性值和该条记录在Class List里的索引。根据不同的索引值,可以得到记录的类标。对于连续型的属性,Attribute List应当是有序的。
对于Class List,存储的是每条记录对应的类标以及记录所在的当前叶节点。Class List 需常驻内存当中。
2.算法过程
gini index:如果一个数据集D有n个不同的类,那么:

在属性A下,把数据集分为D1和D2,那么:

基尼增益定义:


算法思想:扫描全部的Attribute List.对于每一个不同的Attribute List,从上到下扫描,并计算以当前记录split所得出的基尼增益。从而求出最大基尼增益的属性和分裂点。
在对Attribute List 从上到下扫描时,需要用到另一种数据结构——类直方图。类直方图的行表分裂点的左边和右边,列代表不同的类。如上图所示,当算法扫描到Salary List的第一条记录时,首先根据index找到当前记录所属的叶子节点。可知,salary = 15时这条记录属于N2节点。当前N2节点有两条记录,类直方图初始化时默认这两条记录属于未分裂。所以,在N2节点中共有两条记录,分别是索引值1和索引值2的记录。在Class List中可知,这两条记录分别属于G类和B类。
算法在扫描到salary = 15这条记录时,实际上是在N2这个节点做了一次试探性的分裂,N2中salary<=15的记录归为左边,其余的归为右边。类直方图可变为:

从而可以根据这次分裂算得基尼增益:

依次向下扫描,分别得到每一次试探性分裂的基尼增益,选择基尼增益最大的分裂。比如,在N2节点中,选择salary = 15这条记录分裂所得的基尼增益最大,那么在该节点的分裂点就是(a1+a2)/2,也就是40.
算法在决定每一个当前叶子节点的分裂点之后,需要根据分裂点,更新Class List中每条记录所属的叶子节点。然后再次循环分裂。

[数据挖掘课程笔记]SLIQ算法的更多相关文章
- [数据挖掘课程笔记]关联规则挖掘 - Apriori算法
两种度量: 支持度(support) support(A→B) = count(AUB)/N (N是数据库中记录的条数) 自信度(confidence)confidence(A→B) = count ...
- [数据挖掘课程笔记]基于规则的分类-顺序覆盖算法(sequential covering algorithm)
Rule_set = {}; //学习的规则集初试为空 for 每个类c do repeat Rule = Learn_One_Rule(D,Att-vals,c) 从D中删除被Rule覆盖的元组; ...
- 数据挖掘学习笔记--AdaBoost算法(一)
声明: 这篇笔记是自己对AdaBoost原理的一些理解,如果有错,还望指正,俯谢- 背景: AdaBoost算法,这个算法思路简单,但是论文真是各种晦涩啊-,以下是自己看了A Short Introd ...
- [数据挖掘课程笔记]无监督学习——聚类(clustering)
什么是聚类(clustering) 个人理解:聚类就是将大量无标签的记录,根据它们的特点把它们分成簇,最后结果应当是相同簇之间相似性要尽可能大,不同簇之间相似性要尽可能小. 聚类方法的分类如下图所示: ...
- [数据挖掘课程笔记]人工神经网络(ANN)
人工神经网络(Artificial Neural Networks)顾名思义,是模仿人大脑神经元结构的模型.上图是一个有隐含层的人工神经网络模型.X = (x1,x2,..,xm)是ANN的输入,也就 ...
- [数据挖掘课程笔记]Naïve Bayesian Classifier
朴素贝叶斯模型 1) X:一条未被标记的数据 2) H:一个假设,如H=X属于Ci类 根据贝叶斯公式 把X表示为(x1,x2,....xn) x1,x2,....xn表示X在各个特征上的值. 假设有c ...
- Andrew Ng机器学习课程笔记--汇总
笔记总结,各章节主要内容已总结在标题之中 Andrew Ng机器学习课程笔记–week1(机器学习简介&线性回归模型) Andrew Ng机器学习课程笔记--week2(多元线性回归& ...
- 深度学习课程笔记(三)Backpropagation 反向传播算法
深度学习课程笔记(三)Backpropagation 反向传播算法 2017.10.06 材料来自:http://speech.ee.ntu.edu.tw/~tlkagk/courses_MLDS1 ...
- Andrew Ng机器学习课程笔记(五)之应用机器学习的建议
Andrew Ng机器学习课程笔记(五)之 应用机器学习的建议 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7368472.h ...
随机推荐
- hdu 2078(DFS)
Matrix Time Limit: 2000MS Memory Limit: 30000K Total Submissions: 3845 Accepted: 1993 Descriptio ...
- LeetCode OJ——Unique Binary Search Trees
class Solution { public: int numTrees(int n) { ); vector<int> numVector; numVector.assign(n+,) ...
- LeetCode OJ——Binary Tree Inorder Traversal
http://oj.leetcode.com/problems/binary-tree-inorder-traversal/ 树的中序遍历,递归方法,和非递归方法. /** * Definition ...
- loading上下左右居中
.loading { width: 50px; height: 60px; text-align: center; font-size: 10px; position:fixed; left:50%; ...
- 关于xcode 9.0数组问题的遇到的坑
1.最近一直在忙着做项目,今天就来总结最近这段时间遇到的一些比较麻烦的问题.有时候也是颇感无奈. 有句话说的好.人不要总在一棵树上吊死.去旁边那棵树上也可以试试.好了不扯了.直接进入正题吧! 先来阐述 ...
- 浅谈HookSSDT和和Resume(恢复)SSDT
最近在学HookSSDT和针对Hook的ResumeSSDT,避免自己理解有所偏差,把它们写出来,希望大家不吝赐教.(虽然已经是过时了的技术,但是最起码了解其中的原理,嘿嘿嘿.) 转载注明出处:ht ...
- UVA - 10615 Rooks
建一下模,把行和列看成二分图的点,把车看成是二分图中的边,这样就变成了上一个博客的问题. 我们每次新加一条边,就把它加入一条 这条边两端点最小没有出现的颜色 交替出现的路径中去. #include& ...
- Android中使用SDcard进行文件的读取
来自:http://www.cnblogs.com/greatverve/archive/2012/01/13/android-SDcard.html 平时我们需要在手机上面存储想音频,视频等等的大文 ...
- tar命令中的-C作用
一直不知道解压命令如何指定文件夹,今天学到了一个 -C 参数 tar zxvf test.tar.gz -C test 注释:上面的命令将 test.tar.gz 这个压缩包解压到当前目录下的 tes ...
- 45个非常有用的Oracle查询语句(转自开源中国社区)
日期/时间 相关查询 获取当前月份的第一天 运行这个命令能快速返回当前月份的第一天.你可以用任何的日期值替换 “SYSDATE”来指定查询的日期. SELECT TRUNC (SYSDATE, 'MO ...