您的位置:首页 > 其它

数据挖掘学习笔记3: 关联规则1

2015-05-10 14:26 363 查看

?关联规则挖掘

从数据的项集之间发现有趣的, 频繁出现的模式关联和相关性.

购物篮分析,分类设计, 捆绑销售和亏本销售

购物篮分析

-如果问题的全域是商店中所有商品的集合, 则对每种商品都可以用一个不二良来表示该商品是否被顾客购买, 则每个购物篮都可以用一个布尔量表示; 而通过分析不二向量则可以得到商品被频繁关联或被同事购买的模式, 这些模式可以用关联规则表示.(ex. 10010010000 这种方法损失了购买的数量但是不影响购物篮分析)

基本概念



- 关联规则的两个兴趣度度量



1. 支持度: 事务集中包含A⋃BA\bigcup B的百分比



这里的并集符号并不是指数学意义上的并集而是指CustomerbuysbothCustomer buys both

2. 置信度: D中包含A的事务同时也包含B的百分比



例子

TIDitem
2000ABC
1000AC
4000AD
5000BEF
假设最小支持度为50%, 最小置信度为50%则有

A→C(50A\rightarrow C (50%, 66.6%)

C→A(50C\rightarrow A (50%, 100%)

大型数据库关联规则过程

概念



关联规则分类



单维布尔关联规则挖掘

最简单的关联规则挖掘, 即单维, 单层, 布尔关联规则的挖掘.

找出满足最小支持度的项集(仅有一个item的不算)

找出满足最小置信度的项集



Apriori算法

Apriori算法利用频繁项集性质的先验知识, 通过逐层搜索迭代方法, 即将k-项集用于探查(K+1)-项集, 来穷尽数据集中的所有频繁项集.

先找到频繁1-项集集合L1L_1, 然后用L1L_1找到频繁2-项集集合L2L_2, 接着用L2L_2找L3L_3, 直到找到不到频繁K-项集, 找每个LkL_k需要一侧数据库扫描.

性质: 频繁项集的所有非空子集也必须满足是频繁的. (A⋃BA\bigcup B模式不可能比A更频繁出现)

Apriori算法是反单调的, 即一个集合如果不能通过测试,则该集合的所有超集也不能通过相同的测试.

步骤

1. 连接:



CkC_k是LkL_k的超集, 即它的成员可能不是频繁的, 但是所有频繁的K-项集都在CkC_k中. 因此可以通过扫描数据库, 通过计算每个K-项集的支持度来得到LkL_k

为了减少计算量, 可以使用Apriori性质, 即如果一个K-项集的(K-1)-子集不在L(k−1)L_(k-1)中, 则该候选不可能是频繁的, 可以直接从CkC_k删除.

2. 剪枝

例子:



其中Apriori性质由L2L_2产生C3C_3



由频繁项集产生关联规则

同时满足最小支持度和最小置信度的才是强关联规则, 从频繁项集产生的规则都满足支持度要求, 而其置信度则可由以下公式计算



每个关联规则可由如下过程产生:



提高Apriori算法有效性

算法主要的挑战

要对数据进行多次扫描

会产生大量的候选项集

对候选项集的支持度计算非常繁琐

解决思路

减少对数据的扫描次数

缩小产生的候选项集

改进对候选项集的支持度的计算方法

法1 基于hash表的项集技术

将每个项集通过相应的hash函数映射到hash表中的不同的同种, 这样可以通过将桶中的项集技术跟最小支持计数相比较先淘汰一部分项集.(p165)

法2 事务压缩

不包含任何k-项集的事务不可能包含任何(k+1)-项集, 这种食物在下一步的计算中可以加上标记或删除

法3 划分

挖掘频繁项集只需要两次数据扫描

D中的任何频繁项集必须作为局部频繁项集至少出现在一个部分中

第一次扫描: 将数据划分为多个部分并找到局部频繁项集

第二次扫描: 聘雇每个候选项集的实际支持度,以确定全局频繁项集

法4 抽样

基本思想:选择原始数据的一个样本,在这个样本上用Apriori算法挖掘频繁模式

通过牺牲精确度来减少算法开销,为了提高效率, 样本大小应该可以放在内存中为宜, 可以适当降低最小支持度来减少遗漏的频繁模式

-可以通过全局扫描来验证从样本中发现的模式

-可以通过第二次全局扫描来找到遗漏的模式

方法5: 动态项集计数

在扫描的不同点调价候选项集,这样, 如果一个候选项集已经满足最小支持度,则可以直接将它添加到频繁项集

不产生候选频繁项集的算法-FP树

Apriori算法的主要开销

10410^4个频繁项集导致10710^7个频繁2-项集

对长度为100的频繁模式, 会产生21002^100个候选

重复扫描数据库, 通过模式匹配检查一个很大的候选集合

不产生候选频繁项集的算法—FP-树频集算法

一种采用divide and conquer (分治策略)的方法

-在经过第一遍扫描之后, 吧数据库中的频集压缩进一棵频繁模式树(FP-tree),同时依然保留其中的关联信息;

将FP-tree分化成一些条件库, 每个库和一个长度为1的频繁项集相关, 然后在对这些条件库分别进行挖掘。

ex:





FP树结构的好处

完整性

不会打破任何事物数据中的增长模式

为频繁模式的挖掘保留了完整的信息

紧凑性

减少了不相关的信息—飞频繁的项被删除

按频率递减排列—使得更频繁的项更容易在数结构中被共享

数据量比原数据要小

FP树的挖掘步骤

由长度为1的频繁模式(初始后缀模式)开始,构造它的条件模式基

构造该初始后缀模式的条件FP树, 并递归的在该树上实现挖掘。模式增长通过后缀模式与条件FP树产生的频繁模式链接实现

ex:



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: