❶ 第九章 数据关联规则分析算法——基于Apriori算法的关联项分析
9.1 基于Apriori算法的关联分析
Aprior算法是关联规则分析中较为经典的频繁项集算法。关联规则反映的是两个或多个事物相互之间的依存性和关联性。如果两个或者多个事物相互之间存在一定的关联关系,则它们之间存在一种关联规则使得它们之间可以进行搭配。
9.1.1 基本概要
Apriori算法利用频繁项集的先验知识,不断地按照层次进行迭代,计算数据集中的所有可能的频繁项集,它的分析主要包括两个核心部分。
1、根据支持度找出频繁项集;
2、根据置信度产生关联规则。
9.1.2 Apriori算法原理
基本流程:
1、扫描历史数据,并对每项数据进行频率次数统计。
2、构建候选集 ,并计算其支持度,即数据出现频率次数与总数的比。
3、对候选项集进行筛选,筛选的数据项支持度应当不小于最小支持度,从而形成频繁项集 .
4、对频繁项集 进行连接生成候选集 ,重复上述步骤,最终形成频繁K项集或者最大频繁项集。
Apriori算法存在两大定理:
1、如果一个集合是频繁项集,那么它的所有子集都是频繁集合。
2、如果一个集合它不是频繁集合,那么它的所有超集都不是频繁项集。
9.1.3 Apriori算法优缺点
优:运算过程非常简单,理论方法也比较容易理解,对数据特征的要求也相对较低。
缺:
1、产生候选集是产生较多的组合,没有考虑将一些无关的元素排除后再进行组合。
2、每次计算项集的过程中都会扫描元素的数据表。
针对不足推出不断改进的Apriori算法:
1、将数据表(事务表)进行压缩。
2、利用哈希表的快速查找特性对项集进行计数统计。
3、合理选样。
❷ 关联规则是什么
关联规则是形如X→Y的蕴涵式,其中, X和Y分别称为关联规则的先导(antecedent或left-hand-side, LHS)和后继(consequent或right-hand-side, RHS) 。其中,关联规则XY,存在支持度和信任度。
关联规则最初提出的动机是针对购物篮分析(Market Basket Analysis)问题提出的。假设分店经理想更多的了解顾客的购物习惯。特别是,想知道哪些商品顾客可能会在一次购物时同时购买;
为回答该问题,可以对商店的顾客事物零售数量进行购物篮分析。该过程通过发现顾客放入“购物篮”中的不同商品之间的关联,分析顾客的购物习惯。这种关联的发现可以帮助零售商了解哪些商品频繁的被顾客同时购买,从而帮助他们开发更好的营销策略。
关联规则研究
由于许多应用问题往往比超市购买问题更复杂,大量研究从不同的角度对关联规则做了扩展,将更多的因素集成到关联规则挖掘方法之中,以此丰富关联规则的应用领域,拓宽支持管理决策的范围。
如考虑属性之间的类别层次关系,时态关系,多表挖掘等。围绕关联规则的研究主要集中于两个方面,即扩展经典关联规则能够解决问题的范围,改善经典关联规则挖掘算法效率和规则兴趣性。
❸ 常见的关联规则挖掘算法包括
典的关联规则挖掘算法包括Apriori算法和FP-growth算法。
apriori算法多次扫描交易数据库,每次利用候选频繁集产生频繁集;而FP-growth则利用树形结构,无需产生候选频繁集而是直接得到频繁集,大大减少扫描交易数据库的次数,从而提高了算法的效率。但是apriori的算法扩展性较好,可以用于并行计算等领域。
2、
Logistic回归,LR有很多方法来对模型正则化。比起NB的条件独立性假设,LR不需要考虑样本是否是相关的。
与决策树与支持向量机不同,NB有很好的概率解释,且很容易利用新的训练数据来更新模型。如果你想要一些概率信息或者希望将来有更多数据时能方便的更新改进模型,LR是值得使用的。
3、决策树,DT容易理解与解释。DT是非参数的,所以你不需要担心野点(或离群点)和数据是否线性可分的问题,DT的主要缺点是容易过拟合,这也正是随机森林等集成学习算法被提出来的原因。
4、支持向量机,很高的分类正确率,对过拟合有很好的理论保证,选取合适的核函数,面对特征线性不可分的问题也可以表现得很好。SVM在维数通常很高的文本分类中非常的流行。
❹ 关联规则算法(The Apriori algorithm)
关联规则的目的在于在一个数据集中找出项之间的关系,也称之为购物篮分析 (market basket analysis)。例如,购买鞋的顾客,有10%的可能也会买袜子,60%的买面包的顾客,也会买牛奶。这其中最有名的例子就是"尿布和啤酒"的故事了。
本篇的Apriori算法主要是基于频繁集的关联分析。其主要目的就是为了寻找强关联规则。
要理解频繁集、强关联规则,要先借助下面的一个情境,来介绍几个重要概念。
下表是一些购买记录:
将购买记录整理,可得到下表,横栏和纵栏的数字表示同时购买这两种商品的交易条数。如购买有Orange的交易数为4,而同时购买Orange和Coke的交易数为2。
置信度,表示这条规则有多大程度上值得可信。
设条件的项的集合为A,结果的集合为B。置信度计算在A中,同时也含有B的概率。即Confidence(A->B)=P(B|A)。例 如计算"如果Orange则Coke"的置信度。由于在含有Orange的4条交易中,仅有2条交易含有Coke。其置信度为0.5。
支持度,计算在所有的交易集中,既有A又有B的概率。
例如在5条记录中,既有Orange又有Coke的记录有2条。则此条规则的支持度为2/5=0.4。现在这条规则可表述为,如果一个顾客购买了Orange,则有50%的可能购买Coke。而这样的情况(即买了Orange会再买Coke)会有40%的可能发生。
支持度大于预先定好的最小支持度的项集。
关联规则:令项集I={i1,i2,...in},且有一个数据集合D,它其中的每一条记录T,都是I的子集。那么关联规则是形如A->B的表达式,A、B均为I的子集,且A与B的交集为空。这条关联规则的支持度:support = P(A并B)。这条关联规则的置信度:confidence = support(A并B)/suport(A)。
强关联规则:如果存在一条关联规则,它的支持度和置信度都大于预先定义好的最小支持度与置信度,我们就称它为强关联规则。
下面用一个例子说明算法的过程:
项目集合 I={1,2,3,4,5};
事务集 T:
设定最小支持度(minsup)=3/7,最小置信度(misconf)=5/7。
假设:n-频繁项目集为包含n个元素的项目集,例如1-频繁项目集为包含1个元素的项目集
则这里,1-频繁项目集有:{1},{2},{3},{4},{5}
生成2-频繁项目集的过程如下:
首先列出所有可能的2-项目集,如下:
{1,2},{1,3},{1,4},{1,5}
{2,3},{2,4},{2,5}
{3,4},{3,5}
{4,5}
计算它们的支持度,发现只有{1,2},{1,3},{1,4},{2,3},{2,4},{2,5}的支持度 满足要求,因此求得2-频繁项目集:
{1,2},{1,3},{1,4},{2,3},{2,4}
生成3-频繁项目集:
对于现有的2-频繁项目集,两两取并集,并确保第三个二元组也在2-频繁项目集内,把得到的所有3-项目集分别计算支持度,剔除不满足最小支持度的项目集;
例如,
{1,2},{1,3}的并集得到{1,2,3};
{1,2},{1,4}的并集得到{1,2,4};
{1,3},{1,4}的并集得到{1,3,4};
{2,3},{2,4}的并集得到{2,3,4};
但是由于{1,3,4}的子集{3,4}不在2-频繁项目集中,所以需要把{1,3,4}剔除掉。{2,3,4} 同理剔除。
然后再来计算{1,2,3}和{1,2,4}的支持度,发现{1,2,3}的支持度为3/7 ,{1,2,4}的支持度为2/7,所以需要把{1,2,4}剔除。因此得到3-频繁项目集:{1,2,3}。
重复上面步骤继续寻找n-频繁项目集,直到不能发现更大的频繁项目集。所以,到此,频繁项目集生成过程结束。
这里只说明3-频繁项目集生成关联规则的过程,即以集合{1,2,3}为例:
回顾事物集,先生成1-后件的关联规则:
(1,2)—>3,置信度=3/4(出现(1,2)的记录共4条,其中有3条包含3,所以3/4);
(1,3)—>2,置信度=3/5;
(2,3)—>1,置信度=3/3;
第二条置信度<5/7,未达到最小置信度,所以剔除掉。所以对于3-频繁项目集生成的强关联规则为:(1,2)—>3和(2,3)—>1。
这表示,如果1、2出现了,则极有可能出现3;2、3出现,则极有可能有1。
http://www.cnblogs.com/junyuhuang/p/5572364.html
❺ 关联算法
关联, 指的是关联分析, 这里引用网络的定义.
通过关联分析, 可以挖掘出"由于某些事件的发生而引起另外一些事件的发生"之类的规则, 比如说"面包=>牛奶", 其中面包被称为规则的前项, 而牛奶则被称为规则的后项.
常用于关联分析的算法有Apriori算法, FP-growth算法, Eclat算法, 灰色关联法等, 下面将着重介绍Apriori算法.
在介绍Apriori算法之前, 我们先来了解几个概念:
1.事务: 一条交易记录称为一个事务
2.项: 交易中的每一个物品称为一个项
3.项集: 包含0个或多个项的集合
4.支持度计数: 项集在所有事务中出现的次数.
5.支持度: 支持度计数除于总的事务数.
6.频繁项集: 支持度大于等于某个阀值的项集.
关联规则的挖掘通常分为两步: 第一步, 找出所有的频繁项集; 第二步, 由频繁项集产没判答生强关联规则. 而Apriori算法则是挖掘频繁项集的基本算法.
可以看到以上每个过程均需要扫描一次数据, 为了提高频繁项集逐层迭代产生的效率, 需要利用一条重要性质, 其称为先验性质:
当然, 非频繁项集的所有超集也一定是非频繁的.
将先验性质应用到Apriori算法中就是将之枯慧前的过程分为两大部分, 连接步和剪枝步.
连接步: 连接步的目的是产生候选项集.
剪枝步: 应用先验性质对候选项集进行筛选, 将不满足先验性质的候选项集剔除, 再进而根据最小支持度找出频繁项集, 这样可以有效缩短计算量.
关联分析的目标是找出强关联规则, 因此这里的关联规则是指强关联规则, 我们把满足最小支持度和最小置信度的规则称为强关联规则.
对于规则A=>冲敏B, 置信度的计算公式就是项集{A, B}的支持度计数除于项集{A}的支持度计数.
优点: 简单, 易理解, 对数据要求低
缺点: 容易产生过多的候选项集, I/O负载大.