DS&ML_关联分析笔记

其他相关文章

DS&ML_分类算法笔记之支持自动机SVM模型
DS&ML_分类算法笔记之随机森林、梯度提升树、XGBoost模型
DS&ML_分类算法笔记之k-近邻、KD-Tree模型
DS&ML_降维算法笔记之主成分分析PCA模型
DS&ML_分类算法笔记之朴素贝叶斯模型
DS&ML_聚类算法笔记之k-means模型
DS&ML_分类算法笔记之决策树模型
DS&ML_分类算法笔记之逻辑回归模型

对于关联分析模型的相关知识点的总结与整理

简单描述一下关联分析的思想,关联分析是什么?

关联算法与聚类和主成分一样,也是一种无监督算法。是从大规模数据集中寻找物品间的隐含关系的算法。(Copyright © https://blog.csdn.net/s_gy_zetrov. All Rights Reserved)

关联规则挖掘要求输入的数据必须为布尔型,而推荐系统并处理的评价或喜好值多为数值型的。由于数据类型不是二值布尔型,无法应用关联规则挖掘算法找出项目之间的关联。典型的做法就是先将评价值离散化。常用的自动离散化方法包括分箱、直方图分析、基于熵的离散化、基于统计分析离散化、聚类分析和根据直观划分离散化。

几个概念
  • 项集(itemset):包含0个或者多个项的集合称为项集。
  • 频繁项集:那些经常一起出现的物品集合
  • 啤酒和尿布算法的三个指标
    • 支持度(support):一个项集的支持度被定义为数据集中包含该项集的记录所占的比例。
      • 表示同时包含A和B的事务占所有事务的比例。如果用P(A)表示使用A事务的比例,那么Support=P(A&B)/N【support(A->B) = support_count(A∪B) / N】
    • 可信度(confident):是针对一条诸如{尿布}→{啤酒}的关联规则来定义的。
      • 表示使用包含A的事务中同时包含B事务的比例,即同时包含A和B的事务占包含A事务的比例。公式表达:Confidence=P(A&B)/P(A)
      • 可信度({尿布}→{啤酒})=支持度({尿布,啤酒})/支持度({尿布})
    • 提升度(Lift):表示”包含A的事务中同时包含B事务的比例”与”包含B事务的比例”的比值。公式表达:Lift=( P(A&B)/P(A))/P(B)=P(A&B)/P(A)/P(B)。
      • 提升度反映了关联规则中的A与B的相关性,提升度>1且越高表明正相关性越高,提升度<1且越低表明负相关性越高,提升度=1表明没有相关性。

具体展开

关联分析的两种关系:简单关联关系和序列关联关系
  • 简单关联关系:

    简单关联关系可以从经典的购物中进行分析,购买面包的顾客80%都会购买牛奶,由于面包和牛奶是早餐搭配的必需品,二者搭配构成了早餐的组成部分,这就是一种简单的关联关系。

  • 序列关联关系:

    当购买一款新手机后,就会考虑去购买手机膜等手机配件,这就是一种序列关系,不会先买手机膜再买手机的,先后关系是非常明显的,这种关系是一种顺序性的关系,也就是一种序列关联关系。

关联规则:规则就是一种衡量事物的标准,也就是一个算法。关联规则同样的可以分为两种:简单关联规则和序列关联规则
  • 简单关联规则:

    简单关联规则是无指导的学习方法,着重探索内部结构。简单关联规则也是使用最多的技术,主要算法包括:Apriori、GRI、Carma,其中Apriori和Carma主要是如何提高关联规则的分析效率,而GRI注重如何将单一概念层次的关联推广到更多概念层次的关联,进而揭示事物内在结构。

    简单关联规则的数据存储形式:一种是交易数据格式,一种是表格数据格式。

  • 序列关联规则:

    序列关联规则的核心就是找到事物发展的前后关联性,研究序列关联可以来推测事物未来的发展情况,并根据预测的发展情况进行事物的分配和安排。

举例

10000个超市订单(10000个事务),其中购买三元牛奶(A事务)的6000个,购买伊利牛奶(B事务)的7500个,4000个同时包含两者。

  • 三元牛奶(A事务)和伊利牛奶(B事务)的支持度为:P(A&B)/ N =4000/10000=0.4.
  • 三元牛奶(A事务)对伊利牛奶(B事务)的置信度为:包含A的事务中同时包含B的占包含A的事务比例。4000/6000=0.67,说明在购买三元牛奶后,有0.67的用户去购买伊利牛奶。
  • 伊利牛奶(B事务)对三元牛奶(A事务)的置信度为:包含B的事务中同时包含A的占包含B的事务比例。4000/7500=0.53,说明在购买三元牛奶后,有0.53的用户去购买伊利牛奶。
上面我们可以看到A事务对B事务的置信度为0.67,看似相当高,但是其实这是一个误导

因为在没有任何条件下,B事务的出现的比例是0.75,而出现A事务,且同时出现B事务的比例是0.67,也就是说设置了A事务出现这个条件,B事务出现的比例反而降低了。这说明A事务和B事务是排斥的。

下面就有了提升度的概念

  • 我们把0.67/0.75的比值作为提升度,即P(B|A)/P(B),称之为A条件对B事务的提升度,即有A作为前提,对B出现的概率有什么样的影响,如果提升度=1说明A和B没有任何关联,如果<1,说明A事务和B事务是排斥的,>1,我们认为A和B是有关联的,但是在具体的应用之中,我们认为提升度>3才算作值得认可的关联。
  • 提升度是一种很简单的判断关联关系的手段,但是在实际应用过程中受零事务的影响比较大,零事务在上面例子中可以理解为既没有购买三元牛奶也没有购买伊利牛奶的订单。数值为10000-4000-2000-3500=500,可见在本例中,零事务非常小,但是在现实情况中,零事务是很大的。在本例中如果保持其他数据不变,把10000个事务改成1000000个事务,那么计算出的提升度就会明显增大,此时的零事务很大(1000000-4000-2000-3500),可见提升度是与零事务有关的。

应用

  • 啤酒与尿布(购物篮分析)
    通过查看那些商品经常在一起出售,可以帮助商店了解用户的购物行为,这种从数据的海洋中抽取只是可以用于商品定价、市场促销、存货管理等环节
  • 在Twitter源中发现一些公共词。对于给定的搜索词,发现推文中频繁出现的单词集合
  • 从新闻网站点击流中挖掘新闻流行趋势,挖掘哪些新闻广泛被用户浏览到
  • 搜索引擎推荐,在用户输入查询时推荐同时相关的查询词项
  • 发现毒蘑菇的相似特征。这里只对包含某个特征元素(有毒素)的项集感兴趣,从中寻找毒蘑菇中的一些公共特征,利用这些特征来避免迟到哪些有毒的蘑菇
  • 图书馆信息的书籍推荐,对于学生的借书信息,不同专业学生的借书情况,来挖掘不同学生的借书情况,进行数目的推荐。
  • 校园网新闻通知信息的推荐,在对校园网新闻通知信息进行挖掘的过程中,分析不同部门,不同学院的新闻信息的不同,在进行新闻信息浏览的过程中进行新闻的推荐。

具体算法

经典的关联规则挖掘算法包括Apriori算法和FP-growth算法,前者多次扫描数据库,每次利用候选频繁集产生频繁集;后者则利用树形结构直接得到频繁集,减少了扫描数据库的次数,从而提高了算法的效率。但是,前者的扩展性较好,可用于并行计算等领域。

Apriori算法

Apriori算法是挖掘布尔型关联规则频繁项集的最为经典、最为基础的算法,该算法需要不断寻找候选集,然后剪枝即去掉非频繁子集的候选集,时间复杂度由暴力枚举所有子集的指数级别O(n^2)将为多项式级别,多项式具体系数是底层实现情况而定的。

Apriori算法基于这样的事实:算法使用频繁项集的性质的先验知识。Apriori使用一种称作逐层搜索的迭代方法,k-项集用于探索(k+1)-项集。首先,找出频繁1-项集的集合。该集合记作L1。L1用于找频繁2-项集的集合L2,而L2用于找L3,如此下去,直到不能找到频繁k-项集。Ariori算法有两个主要步骤:

  1. 连接:(将项集进行两两连接)

    利用已经找到的Lk,通过两两连接得出C(k+1),注意进行连接的Lk[i],Lk[j],必须有k-1个属性值相同,然后另外两个不同的分别分布在Lk[i],Lk[j],这样的求出的C(k+1)为L(k+1)的候选集。

  2. 剪枝:(去掉非频繁项集)

    候选集 Ck+1中的并不都是频繁项集,必须剪枝去掉,越早越好以防止所处理的数据无效项越来越多。只有当子集都是频繁集的候选集才是频繁集,这是剪枝的依据.

FP-tree算法

对于输入的dataset,统计所有事项中各元素的出现频次,即每个1项集的频数,并将各元素按照频数降序排序,删除那些出现频数少于设定支持度sup的元素,形成列表L,留下来的元素就构成了频繁1项集。(这是对数据集的第一遍扫描)

对数据集中每个事务的元素按照列表L排序(按支持度降序排列),开始构造FP-tree。树的根节点为空,每个事务中的所有元素形成一条从根节点到叶子结点的路径。若几个事务的元素按列表L排序后,具有相同的前m个元素,则它们在FP-tree中共享前m个元素代表的节点。树中每个节点的计数为路径经过该节点的事务集的个数。(这是对数据集的第二遍扫描)

在创建FP-tree的同时,headTable也就创建好了,headTable可以理解为一个具有三列的表。第一列为元素(项ID),第二列为支持度计数,第三列为节点链。

接下来寻找FP,从headTable中的最后一行开始,依次往上取项。FP的发现过程就是一个循环里不断递归的操作。循环,循环的是headTable中的各个元素项;递归,递归的是元素项的CPB构成的事务数据集形成的FP-tree中发现FP

零碎的一些知识点积累

R中arules包apriori函数、Python中fp_growth包find_frequent_itemsets函数

import fp_growth as fpg  
frequent_itemsets = fpg.find_frequent_itemsets(transactions, minimum_support, include_support=False) 
'''
transactions是我们的输入,格式可以是list of list;minimum_support是算法的最小支持度,这个是小数表示的;include_support设置为True,则结果中包括频繁项集的支持度,否则不包括;frequent_itemsets就是我们要获得的频繁项集。
'''
序列模式挖掘
  • 挖掘相对时间或其他模式出现频率高的模式,典型的应用还是限于离散型的序列。
  • 如:大型连锁超市的交易数据有一系列的用户事务数据库,每一条记录包括用户的ID,事务发生的时间和事务涉及的项目。如果能在其中挖掘涉及事务间关联关系的模式,即用户几次购买行为间的联系,可以采取更有针对性的营销措施。
  • 序列模式挖掘的数据库是序列数据库,关联规则分析的数据集是事务数据库
  • 序列模式挖掘的关注点是单项间在同一事务内以及事务间的关系,关联规则分析的关注点是单项间在同一事务内的关系

参考资料

[1] https://blog.csdn.net/kevinelstri/article/details/53487186

[2] https://blog.csdn.net/daizongxue/article/details/77504158

(Copyright © https://blog.csdn.net/s_gy_zetrov. All Rights Reserved)


visitor tracker
访客追踪插件


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值