转载地址:http://www.raychase.net/1951
ICDM(国际数据挖掘大会)2006年从18种提名的数据挖掘算法中投票选出了十大算法。这18中提名数据挖掘算法分属10大数据挖掘主题,蓝色部分即为最终选出的十大算法:
- 分类(Classification)
- C4.5
- CART
- K Nearest Neighbours
- Naive Bayes
- 统计学习(Statistical Learning)
- SVM
- EM
- 关联分析(Association Analysis)
- Apriori
- FP-Tree
- 链接挖掘(Link Mining)
- PageRank
- HITS
- 聚类(Clustering)
- K-Means
- BIRCH
- 袋装与推进(Bagging and Boosting)
- AdaBoost
- 序列模式(Sequential Patterns)
- GSP
- PrefixSpan
- 集成挖掘(Integrated Mining)
- CBA
- 粗糙集(Rough Sets)
- Finding Reduct
- 图挖掘(Graph Mining)
- gSpan
以下是其中关于分类和统计学习主题的笔记。
C4.5
C4.5算法源于ID3算法,也是一种分类决策树算法,但是做了如下的改进:
1、用“信息增益率”代替“信息增益”来选择属性,克服了用信息增益选择属性时偏向选择取值多的属性的不足:
关于“信息增益率”,先要理解“信息增益(Information Gain)”,请参见《使用ID3算法构造决策树》这篇文章,里面既介绍了C4.5的前身ID3算法,同时,也以一个实际例子提到了“信息熵”和“信息增益”的含义,这个例子理解以后,下面对于信息熵和信息增益的公式就清楚了。
信息熵(Entropy):
信息增益是用来衡量样本集S下属性A分裂时的信息熵减少量:
信息增益是信息熵的有效减少量,值越高,说明目标属性在参考属性处损失的信息熵越多,也就是失去的不确定性越多,那么在决策树进行分类的时候,它就应该越早作为决策的依据属性。
但是,使用信息增益作为判断节点分裂依据的一个缺陷在于它偏向于选择具有更多取值的属性作为节点分裂属性,而实际上属性值较多的属性不一定是最优的分类属性。
C4.5算法使用信息增益率来取代信息增益,信息增益率的定义:
其中Gain(S,A)是上面提到过的信息增益,而SplitInfo(S,A)指的是分裂信息,代表了按照属性A来分裂样本集S的广度和均匀性:
公式中,从S1到Sc是c个不同值的属性A分割S而形成的c个样本子集。
2、在树构造过程中进行剪枝;
3、能够完成对连续属性的离散化处理:
对于连续型属性进行排序,得到多个阈值,取能够产生最大信息增益的阈值作为分裂的阈值。
4、能够对不完整数据进行处理:
在数据不完整时,对于某个具有缺失值的属性计算信息增益率,有几种处理办法,例如直接忽略该类样本,选择常用值或均值填充等等。
CART
CART(Classification And Regression Tree,分类回归树)采用一种二分递归分割的技术,将当前样本集分为两个子样本集,使得生成的决策树的每个非叶子节点都有两个分支。因此,CART算法生成的决策树是结构简洁的二叉树。
还是举和《使用ID3算法构造决策树》一样的例子,现在我们要研究狗的智商,潜在的关联因子包括毛的长度和颜色:
颜色(color) | 毛长度(length) | 智商(IQ) |
black | 长 | 高 |
white | 长 | 高 |
white | 短 | 高 |
white | 短 | 低 |
在决策树的每一个节点上都可以按照任一个属性来划分,但是到底按照那种属性来划分,需要用一个数值来衡量,例如Gini指数,如果我们用k,k=1,2,3……c表示类,其中c是类别集Result的因变量数目,pk表示观测点中属于k类的概率,一个节点A的Gini指数定义为:
好,我们现在最终是要考察哪一个潜在关联因子和狗的智商关联度最高。先看毛长度,智商为高的狗有三条,毛长度一个短、两个长;智商为低的狗有一条,短毛:
1
|
Gini(length) = ( 3 / 4 ) * ( 1 -( ( 1 / 3 )² + ( 2 / 3 )² ) ) + ( 1 / 4 ) * ( 1 -( ( 1 / 1 )² ) )
|
再看颜色,智商高的狗有三条,颜色两白一黑;智商低的狗有一条,颜色白:
1
|
Gini(color) = ( 3 / 4 ) * ( 1 -( ( 1 / 3 )² + ( 2 / 3 )² ) ) + ( 1 / 4 ) * ( 1 -( ( 1 / 1 )² ) )
|
最后比较两者的Gini系数,如果Gini(length)更小,那么使用毛长度的划分要更好(但是这个例子里面可以看出二者的Gini系数相同)。
关于终止条件:最简单的情况是,如果只剩下一个元素了,或者包含元素都属于同一个类别了,那么分类就可以停止了,但是我们也可以设定一个阈值,低于这个阈值时就没有必要继续划分了。
关于剪枝:使用验证数据进行剪枝是CART的一个重要思想。最常见的有两种剪枝方式,预剪枝和后剪枝。预剪枝就是满足剪枝条件时树停止生长,后剪枝就是在允许决策树得到最充分生长的基础上,再根据一定的规则,自下而上逐层进行剪枝。
关于分类后的回归:现实中会有些数据很复杂,肉眼几乎看不出符合那种模型,因此构建全局的模型就有点不合适。“回归”就是为了解决这类问题,在构建决策节点把数据数据切分成区域之后,局部区域可以进行回归拟合,例如最后取值为叶节点目标变量的加权值。
KNN
KNN(K Nearest Neighbours)属于比较简单的一种用来归类的算法,给定一个表示范围的k值,从而确定了一定的范围,然后根据范围内的点的分布来确定待分类目标点属于哪个范围。下面这张图来自维基百科。
k在这张图里可以理解成圆的半径,当k取值较小时,范围为图中实线的圆,圆内红色点数目多过蓝色点,因此绿色的待分类点属于红色点集的分类;当k取值较大,范围为图中虚线的圆时,蓝色点有三个,多于两个红色点,因此绿色的待分类点属于蓝色点集的分类。
当然,这只是最简单的一个例子,实际应用中,会有很多的推广情形,以及许多改进。例如,可以把二维的例子推广到N维;可以引入不同的距离计算方法(如把欧氏距离变成汉明距离);可以引入权值,增强较近的点对结果的影响等等。
Naive Bayes
朴素贝叶斯分类,对部分未知的状态用主观概率估计,然后用贝叶斯公式对概率进行修正,最后再利用期望值和修正概率做出最优决策的分类方法。基本思想是:
- 已知类条件概率密度参数表达式和先验概率;
- 利用贝叶斯公式转换成后验概率;
- 根据后验概率大小进行决策分类。
请参见我曾经写过的一篇文章《朴素贝叶斯分类》,已经详细介绍了。
SVM
SVM(Support Vector Machine,支持向量机)是一种对线性数据和非线性数据进行分类的算法。它使用非线性映射,把原训练数据映射到较高维上,并且搜索新维度的最佳分离超平面,即将一个类的元素和其他类分离的最佳决策边界。
下面两幅图来自维基百科:
从上图可见,两个维度上看,有两组数据,一组黑点表示,一组白点表示,直线H1并未做到分类;H2虽然做到分类,但是两类之间的空隙太小;H3分类了,并且使得两类之间的空隙最大。
这幅图展示分隔两个分类的“最佳分离超平面”(两个虚线之间的最短距离达到最大),而落在图中虚线之间、得以成功分隔这两个分类的的超平面,都被称为“支持向量”。
SVM学习问题可以表示为凸优化问题,因此可以利用已知的有效算法发现目标函数的全局最小值。而其他分类方法(如前面介绍的分类方法,基于规则的分类器和人工神经网络等等)都采用一种基于贪心学习的策略来搜索假设空间,这种方法一般只能获得局部最优解。另外,SVM一般只能用在二类问题,对于多类问题效果不好。
在低维线性不可分的模式通过非线性映射到高维特征空间后,可能可以做到线性可分了,但是维度的增加会引发计算量指数级增长的问题。核函数就是用来解决这样的问题的,上面和下面共两张图都来自pluskid的博客,上图可见这个数据集线性不可分,现在把平面空间点映射到三维空间后,再旋转坐标轴,使得重新满足线性可分:
EM
EM(Expectation-maximization,期望最大)算法在统计中被用于寻找,依赖于不可观察的隐性变量的概率模型中,参数的最大似然估计。
在统计计算中,最大期望(EM)算法是在概率模型中寻找参数最大似然估计(一种统计方法,它用来求一个样本集的相关概率密度函数的参数。)或者最大后验估计的算法,其中概率模型依赖于无法观测的隐藏变量。最大期望经常用在机器学习和计算机视觉的数据聚类领域。
- 最大期望算法经过两个步骤交替进行计算:
第一步是计算期望(E),利用对隐藏变量的现有估计值,计算其最大似然估计值; - 第二步是最大化(M),最大化在 E 步上求得的最大似然值来计算参数的值。
M 步上找到的参数估计值被用于下一个 E 步计算中,这个过程不断交替进行。
EM的整个推导过程请参见JerryLead的这篇文章。
相关推荐
数据结构学习笔记排序算法:基数排序数据结构学习笔记排序算法:基数排序数据结构学习笔记排序算法:基数排序数据结构学习笔记排序算法:基数排序数据结构学习笔记排序算法:基数排序数据结构学习笔记排序算法:基数...
SQL.SERVER.2008学习笔记:日常维护、深入管理、性能优化]
Contiki学习笔记:进程、事件、etimer关系 Contiki 实例: Contiki学习笔记:创建两个交互进程 Contiki 主函数剖析: Contiki学习笔记:main函数剖析 Contiki学习笔记:启动一个进程process_start Contiki学习笔记...
SQL SERVER 2008 学习笔记:日常维护、深入管理、性能优化。
Microsoft.SQL.Server.2008.学习笔记:日常维护、深入管理、性能优化.part2.rar; 中文版; 第二部分(共两部分)
ORACLE学习笔记:日常应用、深入管理、性能优化.part1
2. 数据挖掘任务类型:主要分为五类:分类、聚类、关联规则学习、序列模式挖掘和异常检测。分类是根据已知特征将数据划分为预定义类别;聚类则是将相似的数据分组;关联规则用于发现项集之间的频繁模式;序列模式...
本篇学习笔记主要涵盖了数据挖掘的基础概念、常用算法以及实践应用。 首先,我们需要理解数据挖掘的定义:它是从大量数据中通过运用专门的算法和技术,提取出有用信息并进行模式识别的过程。数据挖掘的目标通常分为...
学习笔记OpenGL:VisualStudio2022配置OpenGL环境学习笔记OpenGL:VisualStudio2022配置OpenGL环境学习笔记OpenGL:VisualStudio2022配置OpenGL环境学习笔记OpenGL:VisualStudio2022配置OpenGL环境学习笔记OpenGL:...
-book- R 语言学习笔记:数据操作、统计图形和数值优化_notesdown
book_R_语言学习笔记:数据操作、统计图形和数值优化_notesdown
《机器学习与数据挖掘学习笔记》是一份综合性的学习资料,涵盖了这两个领域的重要概念、算法和技术。这份笔记的目的是为了帮助读者深入理解机器学习和数据挖掘的基础知识,并提供实际操作的指导。 首先,我们来探讨...
Python金融大数据挖掘与分析全流程详解-学习笔记及案例代码.zip Python金融大数据挖掘与分析全流程详解-学习笔记及案例代码.zip Python金融大数据挖掘与分析全流程详解-学习笔记及案例代码.zip Python金融大数据挖掘...
MS.SQL.Server.2008.学习笔记:日常维护、深入管理、性能优化.part1.rar; SQLServer; 2008; 维护; 管理; 优化; 第一部分(共两部分)
1.iBatis2学习笔记:基本原理和配置.doc 2.iBatis2学习笔记:与Spring2的整合.doc 3.iBatis2学习笔记:单表映射 .doc 4.iBatis2学习笔记:SqlMap的配置总结(18条).doc 5.iBatis2学习笔记:入参和返回值的问题.doc ...
读书笔记:《统计学习方法》_spark_scala自编程实现
读书笔记:《统计思维程序员数学之概率统计》
学习笔记:大模型课程ChatGPT对话内容。 自回归模型是一种统计模型,它使用观察值的历史值(也就是它们的滞后值)作为预测因子。在自然语言处理(NLP)中,自回归模型被用来预测序列中的下一个单词,基于前面的所有...
读书笔记:《统计思维程序员数学之概率统计》图书源码