数据挖掘算法总结

一、关联规则挖掘

1、 Apriori算法

(1)Apriori算法原理

Apriori算法使用频繁项集的先验知识,使用一种称作逐层搜索的迭代方法,k项集用于探索(k+1)项集。首先,通过扫描事务(交易)记录,找出所有的频繁1项集,该集合记做L1,然后利用L1找频繁2项集的集合L2,L2找L3,如此下去,直到不能再找到任何频繁k项集。最后再在所有的频繁集中找出强规则,即产生用户感兴趣的关联规则。

(2)Apriori算法过程

Apriori算法具有这样一条性质:任一频繁项集的所有非空子集也必须是频繁的。因为假如P(I)<
最小支持度阈值,当有元素A添加到I中时,结果项集(A∩I)不可能比I出现次数更多。因此A∩I也不是频繁的。

1) 连接步

为找出Lk(所有的频繁k项集的集合),通过将Lk-1(所有的频繁k-1项集的集合)与自身连接产生候选k项集的集合。候选集合记作Ck。设l1和l2是Lk-1中的成员。记li[j]表示li中的第j项。假设Apriori算法对事务或项集中的项按字典次序排序,即对于(k-1)项集li,li[1]<li[2]<……….<li[k-1]。将Lk-1与自身连接,如果(l1[1]=l2[1])&&( l1[2]=l2[2])&&……..&&
(l1[k-2]=l2[k-2])&&(l1[k-1]<l2[k-1]),那认为l1和l2是可连接。连接l1和l2 产生的结果是{l1[1],l1[2],……,l1[k-1],l2[k-1]}。

2) 剪枝步

CK是LK的超集,也就是说,CK的成员可能是也可能不是频繁的。通过扫描所有的事务(交易),确定CK中每个候选的计数,判断是否小于最小支持度计数,如果不是,则认为该候选是频繁的。为了压缩Ck,可以利用Apriori性质:任一频繁项集的所有非空子集也必须是频繁的,反之,如果某个候选的非空子集不是频繁的,那么该候选肯定不是频繁的,从而可以将其从CK中删除。

3)由频繁项集产生关联规则

Confidence(A->B)=P(B|A)=support_count(AB)/support_count(A)

关联规则产生步骤如下:

1) 对于每个频繁项集l,产生其所有非空真子集;

2) 对于每个非空真子集s,如果support_count(l)/support_count(s)>=min_conf,则输出 s->(l-s),其中,min_conf是最小置信度阈值。(Tip:为什么要压缩CK呢?因为实际情况下事务记录往往是保存在外存储上,比如数据库或者其他格式的文件上,在每次计算候选计数时都需要将候选与所有事务进行比对,众所周知,访问外存的效率往往都比较低,因此Apriori加入了所谓的剪枝步,事先对候选集进行过滤,以减少访问外存的次数。)

(3)Apriori算法例子:


T100


I1,I2,I5


T200


I2,I4


T300


I2,I3


T400


I1,I2,I4


T500


I1,I3


T600


I2,I3


T700


I1,I3


T800


I1,I2,I3,I5


T900


I1,I2,I3

 

 

例如,在上述例子中,针对频繁集{I1,I2,I5}。可以产生哪些关联规则?该频繁集的非空真子集有{I1,I2},{I1,I5},{I2,I5},{I1 },{I2}和{I5},对应置信度如下:

I1&&I2->I5 confidence=2/4=50%

I1&&I5->I2 confidence=2/2=100%

I2&&I5->I1 confidence=2/2=100%

I1 ->I2&&I5 confidence=2/6=33%

I2 ->I1&&I5 confidence=2/7=29%

I5 ->I1&&I2 confidence=2/2=100%

如果min_conf=70%,则强规则有I1&&I5->I2,I2&&I5->I1,I5 ->I1&&I2。

2、Fp-tree算法

(1)Fp-tree算法步骤

a、建立 FP-tree树

扫描数据库一次,找出频繁1-项集,按递减顺序排序。再一次扫描数据库,建立FP-tree;

b、 利用FP-tree挖掘频繁集

对于每一个项,先构造条件模式基,然后构造条件FP-树。 在每一个新创建的条件FP-树上重复此过程。 直到结果FP-树为空,或只包含一条路径 。

(2)Fp-tree算法流程

Step 1:遍历一次数据库,导出频繁项(1项集)的集合和支持度计数(频率),并且以降序排序。

Step 2:构造FP-tree

Step 3:根据第二步得到的FP-Tree,
为1项频繁项集中的每一项构造条件FP-Tree.

Step 4:得到频繁模式(频繁项集)

(3)Fp-tree的优缺点

优点:整个过程只需要遍历两次事务数据库,并且把大量的数据压缩存储在树中,在时间与空间的开销都优于Apriori算法。

缺点:是需要使用条件模式基递归地构造FP-Tree不仅占用大量的内存空间,而且一次迭代过程结束后,通常只能得到几个频繁模式,因此算法的效率有待进一步提高。

 

二、分类(有监督学习)

1、KNN

(1)算法思路:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。KNN算法不仅可以用于分类,还可以用于回归

例如:

当K=3,取离绿圆最近的3个邻居,

显然多数类是红色三角,故为红色三角;

当K=5,取离绿圆最近的5个邻居,显然多数类是蓝色方形,故为蓝色方形

(2)KNN算法不足:

(a)当样本不平衡时,易误分。当一个类的样本容量很大,而其他类样本容量很小时,在输入一个新样本时,该样本的K个邻居中大容量类的样本占多数;

(b)计算量大。为了得出每一个待分类的文本都要计算出它到全体已知样本的距离,才能求得它的K个最近邻点。

2、朴素贝叶斯

多项式模型

(1)   贝叶斯公式

表示事件B已经发生的前提下,事件A发生的概率,叫做事件B发生下事件A的条件概率。其基本求解公式为:

贝叶斯定理之所以有用,是因为我们在生活中经常遇到这种情况:我们可以很容易直接得出P(A|B),P(B|A)则很难直接得出,但我们更关心P(B|A),贝叶斯定理就为我们打通从P(A|B)获得P(B|A)的道路。

下面不加证明地直接给出贝叶斯定理:

(2)   朴素贝叶斯分类原理

朴素贝叶斯分类的正式定义如下:

1、设为一个待分类项,而每个a为x的一个特征属性。

2、有类别集合

3、计算

4、如果

那么现在的关键就是如何计算第3步中的各个条件概率。我们可以这么做:

1、找到一个已知分类的待分类项集合,这个集合叫做训练样本集。

2、统计得到在各类别下各个特征属性的条件概率估计。即

3、如果各个特征属性是条件独立的,则根据贝叶斯定理有如下推导:

因为分母对于所有类别为常数,因为我们只要将分子最大化皆可。又因为各特征属性是条件独立的,所以有:

 

(3)贝叶斯分类应用举例

在多项式模型中,设某文档d=(t1,t2,…,tk),tk是该文档中出现过的单词,允许重复,则

先验概率P(c)= 类c下单词总数/整个训练样本的单词总数

类条件概率P(tk|c)=(类c下单词tk在各个文档中出现过的次数之和+1)/(类c下单词总数+|V|)

V是训练样本的单词表(即抽取单词,单词出现多次,只算一个),|V|则表示训练样本包含多少种单词。在这里,m=|V|, p=1/|V|。

P(tk|c)可以看作是单词tk在证明d属于类c上提供了多大的证据,而P(c)则可以认为是类别c在整体上占多大比例(有多大可能性)。

贝叶斯算法应用举例

给定一组分类好了的文本训练数据,如下:


docId


doc


类别

In c=China?


1


Chinese Beijing Chinese


yes


2


Chinese Chinese Shanghai


yes


3


Chinese Macao


yes


4


Tokyo Japan Chinese


no

给定一个新样本Chinese Chinese Chinese Tokyo Japan,对其进行分类。

该文本用属性向量表示为d=(Chinese, Chinese, Chinese, Tokyo, Japan),类别集合为Y={yes, no}。

类yes下总共有8个单词,类no下总共有3个单词,训练样本单词总数为11,因此P(yes)=8/11,
P(no)=3/11。类条件概率计算如下:

P(Chinese | yes)=(5+1)/(8+6)=6/14=3/7

P(Japan | yes)=P(Tokyo | yes)= (0+1)/(8+6)=1/14

P(Chinese|no)=(1+1)/(3+6)=2/9

P(Japan|no)=P(Tokyo| no) =(1+1)/(3+6)=2/9

分母中的8,是指yes类别下textc的长度,也即训练样本的单词总数,6是指训练样本有Chinese,Beijing,Shanghai,
Macao, Tokyo, Japan 共6个单词,3是指no类下共有3个单词。

有了以上类条件概率,开始计算后验概率,

P(yes | d)=(3/7)3×1/14×1/14×8/11=108/184877≈0.00058417

P(no | d)= (2/9)3×2/9×2/9×3/11=32/216513≈0.00014780

参考:http://blog.csdn.net/zhoubl668/article/details/7789330

 

三、聚类(无监督学习)

1、K-means

思路:首先从n个数据对象任意选择 k
个对象作为初始聚类中心;而对于所剩下其它对象,则根据它们与这些聚类中心的相似度(距离),分别将它们分配给与其最相似的(聚类中心所代表的)聚类;然后再计算每个所获新聚类的聚类中心(该聚类中所有对象的均值);不断重复这一过程直到标准测度函数开始收敛为止。

 

Kmeans算法的优点是简洁和快速,缺点是关键在于初始点的选取和跟离公式对最终的聚类效果影响明显。

2、层次聚类

缺点:一个样本点一旦划分给某个簇,在后继迭代的过程将永远属于这个类簇,不再具有分配能力。

3、基于密度聚类DBSCSN

算法目标:DBSCAN目标是为了找密度相连对象的最大集合。

算法描述:

标记所有对象为unvisited

Do

随机选择一个unvisited对象P

标记P为visited

If P的e邻域至少有minPts个对象

创建一个新簇C,并把P添加到C

令N为P的e邻域中的对象集合

For  N中每个点P

If P是unvisited

标记P为visited

If P为核心对象 
将P邻域中所有对象放入N中

If  P还不是任何簇的成员,把P添加到C

End For

输出C

ELSE
标记P为噪声点

Until 没有标记为unvisited的对象

算法优点:(1)  可以发现任意形状的聚类簇;

(2)
与K-MEANS比较起来,不需要输入要划分的聚类个数;

(3)聚类簇的形状没有偏倚;

(4)可以在需要时输入过滤噪声的参数;

算法缺点:(1)当数据量增大时,要求较大的内存支持I/O消耗也很大;

(2)高维度问题,密度定义麻烦;

(3)当空间聚类的密度不均匀、聚类间距差相差很大时,聚类质量较差。

时间: 2024-10-29 19:12:04

数据挖掘算法总结的相关文章

数据挖掘算法学习(三)NaiveBayes算法

算法简单介绍 NBC是应用最广的分类算法之中的一个.朴素贝叶斯模型发源于古典数学理论,有着坚实的数学基础,以及稳定的分类效率.同一时候,NBC模型所需预计的參数非常少,对缺失数据不太敏感,算法也比較简单. 算法如果 给定目标值时属性之间互相条件独立. 算法输入 训练数据   T={(x1,y1),(x2,y2),--,(xn,yn)} 待分类数据x0=(x0(1),x0(2),--,x0(n))T 算法输出 待分类数据x0的分类结果y0∈{c1,c2,--,ck} 算法思想 weka执行 以we

数据挖掘算法学习(一)K-Means算法

博主最近实习开始接触数据挖掘,将学习笔记分享给大家.目前用的软件是weka,下篇文章会着重讲解. 算法简介: K-Means算法是输入聚类个数k,以及包含n个数据对象的数据库,输出满足方差最小标准的k个聚类.并使得所获得的聚类满足:同一聚类中的对象相似度较高:而不同聚类对象相似度较小. 算法假设: 均方误差是计算群组分散度的最佳参数. 算法输入: 聚类个数k:包含n个数据对象的数据集. 算法输出: k个聚类 算法思想: (a)绿点表示数据集在二级的欧几里德空间,初始化的中心点u1和u2用红的和蓝

数据挖掘算法之k-means算法

系列文章:数据挖掘算法之决策树算法 [QQ群: 189191838,对算法和C++感兴趣可以进来]       k-means算法可以说是数据挖掘中十大经典算法之一了,属于无监督的学习.该算法由此衍生出了很多类k-means算法,比如k中心点等等,在数据挖掘领域,很多地方都会用到该算法,他能够把相似的一类很好的聚在一起.一类指的是,他们之间的相似度较高,计算相似度的常用度量有欧氏距离.余弦定理等.本算法采用的是欧式距离度量.这个对理解k-means算法不会造成任何实质性的影响. 为了更好的说明k

微软数据挖掘算法:结果预测篇

本文原文地址:(原创)大数据时代:基于微软案例数据库数据挖掘知识点总结(结果预测篇) 前言 本篇文章主要是继续前几篇微软数据挖掘算法:Microsoft 决策树分析算法(1).微软数据挖掘算法:Microsoft 聚类分析算法(2).微软数据挖掘算法:Microsoft Naive Bayes 算法(3),算法介绍后,经过这几种算法综合挖掘和分析之后,对一份摆在公司面前的人员信息列表进行推测,挖掘出这些人员信息中可能购买自行车的群体,把他们交个营销部,剩下的事就是他们无情的对这群团体骚扰.推荐.

十大经典数据挖掘算法

国际权威学术组织the IEEE International Conference on Data Mining (ICDM) 2006年12本月十大评选经典的数据挖掘算法:C4.5, k-Means, SVM, Apriori, EM, PageRank, AdaBoost, kNN, Naive Bayes, and CART. 不不过选中的十大算法.事实上參加评选的18种算法,实际上随便拿出一种来都能够称得上是经典算法,它们在数据挖掘领域都产生了极为深远的影响. 1. C4.5 C4.5算

数据挖掘算法之-关联规则挖掘(Association Rule)(购物篮分析)

在各种数据挖掘算法中,关联规则挖掘算是比较重要的一种,尤其是受购物篮分析的影响,关联规则被应用到很多实际业务中,本文对关联规则挖掘做一个小的总结. 首先,和聚类算法一样,关联规则挖掘属于无监督学习方法,它描述的是在一个事物中物品间同时出现的规律的知识模式,现实生活中,比如超市购物时,顾客购买记录常常隐含着很多关联规则,比如购买圆珠笔的顾客中有65%也购买了笔记本,利用这些规则,商场人员可以很好的规划商品摆放问题: 为叙述方便,设R= { I1,I2 ......Im} 是一组物品集,W 是一组事

18大经典数据挖掘算法小结

18大经典数据挖掘算法小结 本文所有涉及到的数据挖掘代码的都放在了我的github上了. 地址链接: https://github.com/linyiqun/DataMiningAlgorithm 大概花了将近2个月的时间,自己把18大数据挖掘的经典算法进行了学习并且进行了代码实现,涉及到了决策分类,聚类,链接挖掘,关联挖掘,模式挖掘等等方面.也算是对数据挖掘领域的小小入门了吧.下面就做个小小的总结,后面都是我自己相应算法的博文链接,希望能够帮助大家学习. 1.C4.5算法.C4.5算法与ID3

数据挖掘算法Analysis Services-基于SQL Server的数据挖掘

数据挖掘算法(Analysis Services – 数据挖掘) data mining algorithm is a set of heuristics and calculations that creates a data mining model from data.” xml:space=”preserve”>“数据挖掘算法”是根据数据创建数据挖掘模型的一组试探法和计算. 为了创建模型,算法将首先分析您提供的数据,并查找特定类型的模式和趋势. 算法使用此分析的结果来定义用于创建挖掘模型

数据挖掘算法之深入朴素贝叶斯分类

写在前面的话: 我现在大四,毕业设计是做一个基于大数据的用户画像研究分析.所以开始学习数据挖掘的相关技术.这是我学习的一个新技术领域,学习难度比我以往学过的所有技术都难.虽然现在在一家公司实习,但是工作还是挺忙的,经常要加班,无论工作多忙,还是决定要写一个专栏,这个专栏就写一些数据挖掘算法.数据结构.算法设计和分析的相关文章.通过写博文来督促自己不断学习.以前对于数学没有多大的兴趣爱好,从小到大,学数学也是为了考试能考个好的成绩,学过的很多数学知识,并没有深刻的感受到它的用途,不用也就慢慢遗忘,

微软数据挖掘算法:Microsoft 关联规则分析算法(7)

前言 本篇继续我们的微软挖掘算法系列总结,前几篇我们分别介绍了:微软数据挖掘算法:Microsoft 决策树分析算法(1).微软数据挖掘算法:Microsoft 聚类分析算法(2).微软数据挖掘算法:Microsoft Naive Bayes 算法(3).微软数据挖掘算法:Microsoft 时序算法(5),后续还补充了二篇微软数据挖掘算法:结果预测篇(4).微软数据挖掘算法:Microsoft 时序算法之结果预测及其彩票预测(6),看样子有必要整理一篇目录了,不同的算法应用的场景也是不同的,每