Top 10 algorithms in data mining

这是我学习完数据挖掘经典的十大算法+深度学习算法+推荐算法及系统(最重要的文献)英文版之后所整理出来的中文笔记,拿出来跟大家分享。若有错误之处欢迎广大博友提出宝贵意见!!!


          1. Top 10 algorithms in data mining(2008, PhillipS Yu)


算法就是定义良好的计算过程,它取一个或一组值作为输入,并产生出一个或一组值作为输出。

Top 10 algorithms in data mining    数据挖掘十大算法

C4.5

1. 决策树模型与学习

(1)决策树(decision tree)算法基于特征属性进行分类,其主要的优点:模型具有可读性,计算量小,分类速度快。决策树算法包括了由Quinlan提出的ID3与C4.5,Breiman等提出的CART。其中,C4.5是基于ID3的,对分裂属性的目标函数做出了改进。

 

(2)决策树模型:

决策树是一种通过对特征属性的分类对样本进行分类的树形结构,包括有向边与三类节点:

·        根节点(root node),表示第一个特征属性,只有出边没有入边;

·        内部节点(internal node),表示特征属性,有一条入边至少两条出边

·        叶子节点(leaf node),表示类别,只有一条入边没有出边。

 

(3)决策树具有以下特点:

·        对于二叉决策树而言,可以看作是if-then规则集合,由决策树的根节点到叶子节点对应于一条分类规则;

·        分类规则是互斥并且完备的,所谓互斥即每一条样本记录不会同时匹配上两条分类规则,所谓完备即每条样本记录都在决策树中都能匹配上一条规则。

·        分类的本质是对特征空间的划分

(4)决策树学习:

决策树学习的本质是从训练数据集中归纳出一组分类规则[2]。但随着分裂属性次序的不同,所得到的决策树也会不同。如何得到一棵决策树既对训练数据有较好的拟合,又对未知数据有很好的预测呢?

首先,我们要解决两个问题:

·        如何选择较优的特征属性进行分裂?每一次特征属性的分裂,相当于对训练数据集进行再划分,对应于一次决策树的生长。ID3算法定义了目标函数来进行特征选择。

·        什么时候应该停止分裂?有两种自然情况应该停止分裂,一是该节点对应的所有样本记录均属于同一类别,二是该节点对应的所有样本的特征属性值均相等。但除此之外,是不是还应该其他情况停止分裂呢?

 

 

2. 决策树算法

 

(1)特征选择:特征选择指选择最大化所定义目标函数的特征。

为了衡量类别分布概率的倾斜程度,定义决策树节点  t的不纯(impurity),其满足:不纯度越小,则类别的分布概率越倾斜;

 

(2)决策树生成:

ID3算法的核心是根据信息增益最大的准则,递归地构造决策树;算法流程如下:

1.如果节点满足停止分裂条件(所有记录属同一类别 or 最大信息增益小于阈值),将其置为叶子节点;

2.选择信息增益最大的特征进行分裂;

3.重复步骤1-2,直至分类完成。

C4.5算法流程与ID3相类似,只不过将信息增益改为信息增益比

 

3. 决策树剪枝

(1)过拟合

 生成的决策树对训练数据会有很好的分类效果,却可能对未知数据的预测不准确,即决策树模型发生过拟合(overfitting)——训练误差(trainingerror)很小、泛化误差(generalization error,亦可看作为test error)较大。

当节点数较小时,训练误差与测试误差均较大,即发生了欠拟合(underfitting)。当节点数较大时,训练误差较小,测试误差却很大,即发生了过拟合。只有当节点数适中是,训练误差居中,测试误差较小;对训练数据有较好的拟合,同时对未知数据有很好的分类准确率。

发生过拟合的根本原因是分类模型过于复杂,可能的原因如下:

·        训练数据集中有噪音样本点,对训练数据拟合的同时也对噪音进行拟合,从而影响了分类的效果;

·        决策树的叶子节点中缺乏有分类价值的样本记录,也就是说此叶子节点应被剪掉。

 

(2)剪枝策略

为了解决过拟合,C4.5通过剪枝以减少模型的复杂度。

如果剪枝后损失函数减少了,即说明这是有效剪枝。具体剪枝算法可以由动态规划等来实现。

 

 

 

 

 

K-Means

1.引言

k-means与kNN虽然都是以k打头,但却是两类算法——kNN为监督学习中的分类算法,而k-means则是非监督学习中的聚类算法;二者相同之处:均利用近邻信息来标注类别。

聚类是数据挖掘中一种非常重要的学习流派,指将未标注的样本数据中相似的分为同一类,正所谓“物以类聚,人以群分”嘛。k-means是聚类算法中最为简单、高效的,核心思想:由用户指定k个初始质心(initial centroids),以作为聚类的类别(cluster),重复迭代直至算法收敛。

 

2. 基本算法

在k-means算法中,用质心来表示cluster;且容易证明k-means算法收敛等同于所有质心不再发生变化。基本的k-means算法流程如下:

选取k个初始质心(作为初始cluster);

repeat

   对每个样本点,计算得到距其最近的质心,将其类别标为该质心所对应的cluster

   重新计算k个cluser对应的质心;

until质心不再发生变化

 

k-means存在缺点:

(1)k-means是局部最优的,容易受到初始质心的影响;比如在下图中,因选择初始质心不恰当而造成次优的聚类结果(SSE较大):

(2)同时,k值的选取也会直接影响聚类结果,最优聚类的k值应与样本数据本身的结构信息相吻合,而这种结构信息是很难去掌握,因此选取最优k值是非常困难的。

 

3.优化

为了解决上述存在缺点,在基本k-means的基础上发展而来二分 (bisecting) k-means,其主要思想:一个大cluster进行分裂后可以得到两个小的cluster;为了得到k个cluster,可进行k-1次分裂。算法流程如下:

初始只有一个cluster包含所有样本点;

repeat:

   从待分裂的clusters中选择一个进行二元分裂,所选的cluster应使得SSE最小;

until有k个cluster

 

SVM

SVM(Support Vector Machines)是分类算法中应用广泛、效果不错的一类。由简至繁SVM可分类为三类:线性可分(linear SVM in linearlyseparable case)的线性SVM、线性不可分的线性SVM、非线性(nonlinear)SVM。

1. 线性可分

将距离分离超平面最近的两个不同类别的样本点称为支持向量(support vector)的,构成了两条平行于分离超平面的长带,二者之间的距离称之为margin。显然,margin更大,则分类正确的确信度更高(与超平面的距离表示分类的确信度,距离越远则分类正确的确信度越高)。

margin以外的样本点对于确定分离超平面没有贡献,换句话说,SVM是有很重要的训练样本(支持向量)所确定的。

2.线性不可分

线性不可分意味着有样本点不满足约束条件

3.非线性

对于非线性问题,线性SVM不再适用了,需要非线性SVM来解决了。解决非线性分类问题的思路,通过空间变换(一般是低维空间映射到高维空间后实现线性可分

 

 

Apriori

1. 关联分析

关联分析是一类非常有用的数据挖掘方法,能从数据中挖掘出潜在的关联关系。

2. Apriori算法

Agrawal与Srikant提出Apriori算法,用于做快速的关联规则分析。

(1)频繁项集生成

根据支持度的定义,得到如下的先验定理:

·        定理1:如果一个项集是频繁的,那么其所有的子集(subsets)也一定是频繁的。

这个比较容易证明,因为某项集的子集的支持度一定不小于该项集。

·        定理2:如果一个项集是非频繁的,那么其所有的超集(supersets)也一定是非频繁的。

 

 

 

 

 

EM

1. 极大似然

极大似然(Maximum Likelihood)估计为用于已知模型的参数估计的统计学方法。

2. EM算法

EM算法(Expectation Maximization)是在含有隐变量(latentvariable)的模型下计算最大似然的一种算法。所谓隐变量,是指我们没有办法观测到的变量。

 

 

 

 

 

 

 

 

 

 

PageRank

1. 引言

PageRank是Sergey Brin与Larry Page于1998年在WWW7会议上提出来的,用来解决链接分析中网页排名的问题。在衡量一个网页的排名,直觉告诉我们:

·        当一个网页被更多网页所链接时,其排名会越靠前;

·        排名高的网页应具有更大的表决权,即当一个网页被排名高的网页所链接时,其重要性也应对应提高。

对于这两个直觉,PageRank算法所建立的模型非常简单:一个网页的排名等于所有链接到该网页的网页的加权排名之和:

 

 

 

 

 

 

 

AdaBoost

1. 集成学习

集成学习(ensemble learning)通过组合多个基分类器(base classifier)来完成学习任务,颇有点“三个臭皮匠顶个诸葛亮”的意味。基分类器一般采用的是弱可学习(weakly learnable)分类器,通过集成学习,组合成一个强可学习(stronglylearnable)分类器。所谓弱可学习,是指学习的正确率仅略优于随机猜测的多项式学习算法;强可学习指正确率较高的多项式学习算法。集成学习的泛化能力一般比单一的基分类器要好,这是因为大部分基分类器都分类错误的概率远低于单一基分类器的。

(1)偏差与方差

偏差-方差分解”(bias variancedecomposition)是用来解释机器学习算法的泛化能力的一种重要工具。

误差可以分解为3个部分:bias、variance、noise。bias度量了算法本身的拟合能力,刻画模型的准确性;variance度量了数据扰动所造成的影响,刻画模型的稳定性。为了取得较好的泛化能力,则需要充分拟合数据(bias小),并受数据扰动的影响小(variance小)。但是,bias与variance往往是不可兼得的:

·        当训练不足时,拟合能力不够强,数据扰动不足以产生较大的影响,此时bias主导了泛化错误率;

·        随着训练加深时,拟合能力随之加强,数据扰动渐渐被学习到,variance主导了泛化错误率。

(2)Bagging与Boosting

集成学习需要解决两个问题:

·        如何调整输入训练数据的概率分布及权值;

·        如何训练与组合基分类器。

从上述问题的角度出发,集成学习分为两类流派:Bagging与Boosting。Bagging(BootstrapAggregating)对训练数据擦用自助采样(boostrap sampling),即有放回地采样数据;

Boosting的思路则是采用重赋权(re-weighting)法迭代地训练基分类器,即对每一轮的训练数据样本赋予一个权重,并且每一轮样本的权值分布依赖上一轮的分类结果;基分类器之间采用序列式的线性加权方式进行组合。

 

 

 

 

 

KNN

1.引言

顶级数据挖掘会议ICDM于2006年12月评选出了数据挖掘领域的十大经典算法:C4.5, k-Means, SVM, Apriori, EM, PageRank, AdaBoost, kNN, NaïveBayes与 CART。

kNN算法是监督学习中分类方法的一种。所谓监督学习与非监督学习,是指训练数据是否有标注类别,若有则为监督学习,若否则为非监督学习。监督学习是根据输入数据(训练数据)学习一个模型,能对后来的输入做预测。在监督学习中,输入变量与输出变量可以是连续的,也可以是离散的。若输入变量与输出变量均为连续变量,则称为回归;输出变量为有限个离散变量,则称为分类;输入变量与输出变量均为变量序列,则称为标注。

2. kNN算法

kNN算法的核心思想非常简单:在训练集中选取离输入的数据点最近的k个邻居,根据这个k个邻居中出现次数最多的类别(最大表决规则),作为该数据点的类别。

3.存在问题

k值得选取对kNN学习模型有着很大的影响。若k值过小,预测结果会对噪音样本点显得异常敏感。特别地,当k等于1时,kNN退化成最近邻算法,没有了显式的学习过程。若k值过大,会有较大的邻域训练样本进行预测,可以减小噪音样本点的减少;但是距离较远的训练样本点对预测结果会有贡献,以至于造成预测结果错误。

k邻域的样本点对预测结果的贡献度是相等的;但距离更近的样本点应有更大的相似度,其贡献度应比距离更远的样本点大。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Naïve Bayes

朴素贝叶斯(Naïve Bayes)属于监督学习的生成模型,实现简单,没有迭代,学习效率高,在大样本量下会有较好的表现。但因为假设太强——假设特征条件独立,在输入向量的特征条件有关联的场景下并不适用。

1. 朴素贝叶斯算法

朴素贝叶斯分类器的主要思路:通过联合概率建模,运用贝叶斯定理求解后验概率,将后验概率最大者对应的的类别作为预测类别。

2. 拼写检查

当用户在输入拼写错误单词时,如何返回他想输入的拼写正确单词。这种拼写检查的问题等同于分类问题:在许多可能拼写正确单词中,到底哪一个时最有可能的呢?

3.存在问题

Norvig所介绍的拼写检查是非常简单的一种,他在博文[2]中指出不足。此外,还有一些需要优化的地方:

·        上下文关联,比如输入thew,在不同的上下文中可能返回的拼写正确单词不同;

·        输入媒介,比如用户用键盘输入与用手机的九宫格输入,其拼写错误的方式时不一样的。

 

 

CART

1. 前言

分类与回归树(Classification and Regression Trees, CART)是由四人帮Leo Breiman, Jerome Friedman, Richard Olshen与Charles Stone于1984年提出,既可用于分类也可用于回归。本文将主要介绍用于分类的CART。CART被称为数据挖掘领域内里程碑式的算法。

不同于C4.5,CART本质是对特征空间进行二元划分(即CART生成的决策树是一棵二叉树),并能够对标量属性(nominal attribute)与连续属性(continuous attribute)进行分裂。

2. CART生成

CART对特征属性进行二元分裂。特别地,当特征属性为标量或连续时,可选择如下方式分裂:

An instance goes left if CONDITION, andgoes right otherwise

即样本记录满足CONDITION则分裂给左子树,否则则分裂给右子树。

3.CART算法

CART算法流程与C4.5算法相类似:

1.若满足停止分裂条件(样本个数小于预定阈值,或Gini指数小于预定阈值(样本基本属于同一类,或没有特征可供分裂),则停止分裂;

2.否则,选择最小Gini指数进行分裂;

3. 递归执行1-2步骤,直至停止分裂。

 


  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值