关联分析-从算法到实战

基本概念

了解一些基本概念。
购物篮事务:如下数据的例子通常被称为购物篮事务。其中一行对应一个事务,包含一个唯一的标识和给定客户购买的商品集合;
在这里插入图片描述
二元表示:项用二元变量表示,如果项在事务中出现,则值为1,否则为0;
I:购物篮事务中所有项的集合;
T:所有事务的集合,每个事务ti包含的项集都是I的子集;
项集:包含0个或者多个项的集合。如果一个项集包含k个项,则称它为k-项集;
支持度计数:包含特定项集的事务个数;
关联规则:形如X->Y的蕴涵表达式,其中X和Y是不相交的项集。关联规则的强度可以用支持度(support)和置信度(confidence)度量。
支持度:支持度确定规则可以用于给定数据集的频繁程度
s(X→Y)=δ(X∪Y)/N
置信度:置信度确定Y在包含X的事务中出现的频繁程度
c(X→Y)=δ(X∪Y)/δ(X)

为什么使用支持度和置信度?
支持度是一种重要的度量,支持度很低的规则可能只是偶然出现。从商务角度来看,低支持度的规则多半是无意义的,对顾客很少购买的商品进行促销可能并无益处。因此,支持度通常用来删去那些无意义的规则。另一方面,置信度度量通过规则进行推理具有可靠性。对于给定的规则X->Y,置信度越高,Y包含在X的事务中出现的可能性就越大。当然,由关联规则作出的推论不必然蕴涵因果关系,只是表示规则前件和后件中的项明显的同时出现。因果关系需要关于数据中原因和结果属性的知识,并且通常涉及长期出现的联系。

关联规则发现:给定事务的集合T,关联规则发现是指找出支持度大于等于minsup并且置信度大于等于minconf的所有规则,其中minsup和minconf是对应的支持度和置信度阈值。
频繁项集:满足最小支持度阈值的所有项集
规则:从上一步发现的频繁项集中提取所有高置信度的规则

apriori算法:

先验原理:如果一个项集是频繁的,则它所有子集一定也是频繁的。相反,如果项集是非频繁的,则它的所有超集也一定是非频繁的。

apriori频繁项集产生的部分有两个特点:第一,是一个逐层算法,从频繁1-项集到最长的频繁项集,它每次遍历项集格中的一层;第二,使用产生-测试策略来发现频繁项集。每次迭代后,新的候选项集都是由前一次迭代发现的频繁项集产生,然后对每个候选的支持度进行计数,并与最小的支持度阈值进行比较。

apriori计算复杂度的影响因素:支持度阈值,项数,事务数,事务的平均宽度
apriori时间复杂度的影响因素:频繁1-项集的产生,候选的产生,支持度计数
关联模式的评估
A:通过统计论据建立。涉及相互独立的项或者覆盖少量事务的模式被认为是不令人感兴趣的,可能反映数据中的伪联系。这些模式可以用客观兴趣度度量,如支持度,置信度和相关性。
B:通过主观论据建立。即模式被主观的认为是无趣的,除非能够揭示料想不到的信息或者提供导致有益行动的有用信息。
一些兴趣度的客观度量
提升度(lift):规则置信度和规则后件中项集的支持度之间的比率。
由于置信度度量忽略了规则后件中出现的项集的支持度,高置信度的规则有可能出现误导。此时提升度派上用场。如当lift>1时,规则后件的支持度是大于规则的置信度的。
在这里插入图片描述
兴趣因子(interest factor):由如果A,B是相互独立的,则P(A,B)=P(A)*P(B),则I(A,B)度量可以解释为,=1时,A和B独立;>1正相关;<1负相关。
在这里插入图片描述
相关分析:对于连续变量,相关性用皮尔森相关系数定义;对于二元变量如下,相关度从-1(完全负相关)到+1(完全正相关),为0时,两者完全独立。局限性在与把项在事务中同时出现和同事不出现视为同等重要。更适合分析对称的二元变量。
在这里插入图片描述
IS度量:处理非对称二元变量。等价于二元变量的余弦度量cosine(A,B)。局限性在于当两者独立时,即使不相关或负相关模式,度量值也可能很大。
在这里插入图片描述
更多的概念:
处理分类属性:二元化后考虑,1.将相关属性值分组,形成少数类别;2.避免产生包含来自同一属性的项的候选集。
处理连续属性:离散化。
概念分层:在一个特定的域中的各种实体或概念的多层组织。可用有向无换图表示。其优点,位于层次结构较下的项可能没有足够的支持度,从而不在任何频繁项集中出现。在概念分层的较低层发现的规则过于特殊,可能不如高层的规则令人感兴趣。
序列模式:给定序列数据集D和用户指定的最小支持度阈值minsup,序列模式发现的任务时找出支持度大于或者等于minsup的所有序列。其中时限约束可以是,最大跨度约束maxspan,最小间隔mingap,最大间隔maxgap,窗口大小约束ws。

PYTHON中算法的实现

apriori - 频繁项集的产生

apriori(df,min_support = 0.5,use_colnames = False,max_len = None,n_jobs = 1)
其中df允许的值为0/1或True / False。

假设交易数据如下:

dataset = [['Milk', 'Onio
  • 3
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值