每天看一下ai画的美女,愉悦一下心情
1.关联规则
2.Apriori算法
3.close算法
4.FP-tree算法
1.关联规则
关联规则挖掘可以让我们从数据集中发现项与项(item 与 item)之间的关系,它在我们的生活中有很多应用场景。
“购物篮分析”就是一个常见的场景,这个场景可以从消费者交易记录中发掘商品与商品之间的关联关系,进而通过商品捆绑销售或者相关推荐的方式带来更多的销售量。所以说,关联规则挖掘是个非常有用的技术。
目的:发现不同数据项之间的联系规则
关于关联规则有三个比较重要的概念,可以结合上面的图表进行说明。
什么是支持度?
支持度是个百分比,它指的是某个商品组合出现的次数与总次数之间的比例。支持度越高,代表这个组合出现的频率越大。在这个例子中,我们能看到“牛奶”出现了 4 次,那么这 5 笔订单中“牛奶”的支持度就是 4/5=0.8。同样“牛奶 + 面包”出现了 3 次,那么这 5 笔订单中“牛奶 + 面包”的支持度就是 3/5=0.6。
什么是置信度?
它指的就是当你购买了商品 A,会有多大的概率购买商品 B,在上面这个例子中:置信度(牛奶→啤酒)=2/4=0.5,代表如果你购买了牛奶,有多大的概率会购买啤酒?所以说置信度是个条件概念,就是说在 A 发生的情况下,B 发生的概率是多少,相当于一种条件概率。(还有一个置信区间,记得区分下)
什么是提升度?
我们在做商品推荐的时候,重点考虑的是提升度,因为提升度代表的是“商品 A 的出现,对商品 B 的出现概率提升的”程度。
还是看上面的例子,如果我们单纯看置信度 (可乐→尿布)=1,也就是说可乐出现的时候,用户都会购买尿布,那么当用户购买可乐的时候,我们就需要推荐尿布么?实际上,就算用户不购买可乐,也会直接购买尿布的,所以用户是否购买可乐,对尿布的提升作用并不大。
我们可以用下面的公式来计算商品 A 对商品 B 的提升度:
提升度 (A→B)= 置信度 (A→B)/ 支持度 (B)
这个公式是用来衡量 A 出现的情况下,是否会对 B 出现的概率有所提升。所以提升度有三种可能:
提升度 (A→B)>1:代表有提升;
提升度 (A→B)=1:代表有没有提升,也没有下降;
提升度 (A→B)<1:代表有下降。
提升度(尿布->啤酒) = (2/5)/(2/5) = 1
提升度(牛奶->啤酒) = (2/4)/(2/5) = 5/4
这里显示牛奶对啤酒地提升更大,而尿布对啤酒并没有什么提升。但这里只是单纯地举个例子,并不代表实际情况,因此没有实际的参考价值,只是为了进行概念的说明。并且也可以说不同国家相差也会很大,并不一定有沃尔玛超市的那个情况。
挖掘关联规则的两个原则:
1.找出频繁项集(频繁项集是指支持度大于等于最小支持度(min_sup)的集合)
2.生成强关联规则
Apriori 算法
Apriori 算法其实就是查找频繁项集 (frequent itemset) 的过程,所以首先我们需要定义什么是频繁项集。
频繁项集就是支持度大于等于最小支持度 (Min Support) 阈值的项集,所以小于最小值支持度的项目就是非频繁项集,而大于等于最小支持度的项集就是频繁项集。
项集这个概念,英文叫做 itemset,它可以是单个的商品,也可以是商品的组合。我们再来看下这个例子,假设我随机指定最小支持度是 50%,也就是 0.5。
算法步骤:
从数据项集生成项为1的项集,很具支持度找出项为1的频繁项集,计算项为2的关联规则项集,通过同理,直到生成项数k的关联规则。
Apriori算法的简单实例Apriori算法举例——发现频发项集
2.Apriori算法举例——产生关联规则对于频繁项集{B, C, E}, 它的非空子集有{B}, {C}, {E}, {B, C}, {B,E}, {C,E}.以下 是据此获得的关联规则及其置信度
改进的方法, close算法 ,FP-Growth 算法
close算法
Close算法的思想:一个频繁闭合项目集的所有闭合子集一定是频繁的,一个非频繁项目集的所有闭合超集一定是非频繁的。
在之前一些概念需要知道:
闭项集:指一个项集x,它所有的超集(包含x的项集)的支持度计数都小于它的本身的支持度计数。
扫描交易数据集,执行交集运算得到候选闭项集
计算产生式的闭合集
剪掉支持数小于2的闭合,得到闭合项集
在Close算法中,使用了迭代的方法:利用频繁闭合i-项集记为,生成频繁闭合 (i+1)-项集,记为(i>=1)。
close算法优势
使用频繁闭合项目集发现频繁集,可以提高发现关
联规则的效率。
实际上既是频繁的又是闭合的项目集的比例比频繁
项目集的比例要小的多,而且随着数据集事务数的
增加和项的大小的增加,项目集格增长很快。
使用闭合项目集格可以通过减少查找空间、减少了
数据集扫描次数,来改进Apriori方法。
FP-growth算法
特点
不需要生成大量候选项集的频繁项集挖掘:用Frequent-Pattern tree(FP-tree)结构压缩数据集,避免代价较高的数据集扫描算法。
采用分而治之的策略:分解数据挖掘任务为小任务,用FP-tree递归增长频繁项集
主要步骤
-1.两次扫描数据集,生成频繁模式树FP-Tree:
-2.使用FP-Tree,生成频繁项集:
-如果条件FP-tree只包含一个路径,则直接生成所包含的频繁项集。
步骤描述
步骤1:扫描数据集一次,得到所有频繁1-项集的频度排序表T;依照T,再扫描数据集,得到FP-Tree。根据支持度排序原始项集,从根节点出发,在每个项集中选择一个像递归生成子节点.
步骤2:根据支持数来构建条件模式基,来找到最大频繁项集。为FP-tree中的每个节点生成条件模式基;用条件模式基构造对应的条件FP-tree;递归挖掘条件FP-tree同时增长其包含的频繁项集;如果条件FP-tree只包含一个路径,则直接生成所包含的频繁项集。