HCIE:第五章关联分析与推荐问题建模(学习笔记)

一、关联算法

关联规则基本概念:

    项集:项的集合,包含K个项的项集成为K项集;

    频繁项集:满足规定的最小支持度的项集;

    支持度:表示物品集X和Y同时出现的次数占总记录数的比例。

    置信度:集合X与集合Y同时出现的总次数/集合X出现的记录数。

    提升度:表示含有X的条件下同时含有Y的概率占Y总体发生的概率之比。

    最小支持度:专家定义的衡量支持度的阈值,表示项目集在统计意义上的最低重要性。

    最小置信度:专家定义的衡量置信度的阈值,表示关联规则的最低可靠性。

    强关联规则:同时满足最小支持度阈值和最小置信度阈值的规则。

    提升度大于1则X->Y是有效的强关联规则,小于等于1则是无效的强关联规则。

关联规则的挖掘步骤:生成频繁项集和生成规则;找出强关联规则;找出所有满足强关联规则的项集。

(1)Apriori算法

Apriori算法为挖掘关联规则的频繁项集算法,核心思想:通过频繁项集生成和关联规则生成两个阶段来挖掘频繁项集;主要任务是设法发现事物之间的内在联系。

优缺点:

    优点:使用先验原理,大大提高频繁项集逐层产生的效率;简单易理解,数据集要求低。

    缺点:产生候选项目集时循环产生的组合过多,没有排除不应该参与组合的元素;每次计算项集支持度时对全部记录进行扫描比较,如果大型数据库则大大增加计算机系统的I/O开销。

算法应用:推荐系统(用关联算法做协同过滤)、不适用非重复项集数元素较多的案例,建议分析商品种类为10左右。

使用方法:Python工具库mlxtend(machine  learning  extensions),通过mlxtend子模块frequent_patterns调用方法Apriori。

方法描述:Apriori(df,min_support=0.5,use_colnames=False,max_len=None,n_jobs=1),其中df代表数据框数据集,min_support表示指定的最小支持度,use_colnames=True表示使用元素名字,默认的False使用列名代表元素,max_len表示生成的项目集的最大长度。如果为 None,则评估所有可能的项集长度。

(2)FP-growth算法

FP-growth算法采用更高级的数据结构FP-tree减少扫描数据次数,只需要两次扫描数据库。相比于Apriori算法需要多次扫描数据库的问题。

该数据结构包括三部分:

    一个项头表里面记录了所有的1项频繁集出现的次数,按照次数降序排列;

    FP-Tree将原始数据集映射到了内存中的一颗FP树;

    节点链表所有项头表里的1项频繁集都是一个节点链表的头,它依次指向FP树种该1项频繁集出现的位置。

FP-Tree数据结构与挖掘:

    从项头表的底部项依次向上挖掘;找到每一项条件模式基:以要挖掘的节点作为叶子节点所对应的FP子树,得到这个FP子树,将子树中每个节点的计数设置为叶子节点的计数,并删除计数低于支出度的节点;从条件模式基就可以递归挖掘得到频繁项集。

FP-Growth优缺点:优点:快于Apriori;缺点:实现比较困难,在某些数据集上性能会下降;适用数据类型为离散型数据。

使用方法:通过Python可以调用Spark接口Pyspark,创建 spark的环境后,调用Spark中的工具库pyspark.mllib.fpm模块中的FPGrowth方法。FPGrowth.train(transactions,minSupport,numPartitions)

FP-Growth变体FP-Max:FP-Max专注于获取最大项集。

(3)PrefixSpan(Prefix-Projected Pattern Growth)算法(前缀投影的模式挖掘)

算法思想:目的是挖掘出满足最小支持度的频繁序列,从长度为1的前缀开始挖掘序列模式,搜索对应的前缀投影数据库,得到长度为1的前缀对应的频繁序列,然后递归的挖掘长度为2的前缀对应的频繁序列,依次类推,直到某个前缀的前缀投影数据库为空时结束。

优缺点:

    优点:由于不用产生候选序列、且投影数据库缩小的很快内存消耗比较稳定,作为频繁序列模式挖掘的时候效果很高。

    缺点:运行时最大的消耗在递归的构造投影数据库。如果序列数据集较大,项数种类较多时,算法运行速度会有明显下降。

二、推荐算法

(1)协同过滤推荐

协同过滤(Collaborative Filtering)作为推荐算法中最经典的类型,其模型一般为n个物品,m个用户的数据,只有部分用户和部分数据之间是有评分数据的,其它部分评分是空白,此时我们要用已有的部分稀疏数据来预测那些空白的物品和数据之间的评分关系,找到最高评分的物品推荐给用户。协同过滤推荐分为两种类型:

基于用户(User-based)的协同过滤;思想:基于用户对物品的偏好找到相邻邻居用户,然后将邻居用户喜欢的推荐给当前用户。

基于项目(Item-based)的协同过滤;思想:基于用户对物品的偏好找到相似的物品,然后根据用户的历史偏好,推荐相似的物品给他。

应用场景:当用户量远远少于 Item数量时,可以考虑使用User-Based算法。当Item数量远远少于用户量时, 可以使用Item-Based算法。

(2)基于内容推荐

基于内容的推荐算法(Content-Based Recommendations)是基于标的物相关信息、用户相关信息及用户对标的物的操作行为来构建推荐算法模型,为用户提供推荐服务。基于内容的推荐算法一般只依赖于用户自身的行为为用户提供推荐,不涉及到其他用户的行为。

实现原理:根据用户的历史行为获得用户兴趣偏好,为用户推荐跟他的兴趣偏好想起的标的物。需要三步:基于用户信息及用户操作行为构建用户特征表示、基于标的物信息构建标的物特征表示、基于用户及标的物特征表示为用户推荐标的物。

基于内容的推荐算法应用场景:完全个性化推荐、标的物关联标的物推荐、配合其他推荐算法、主题推荐、给用户推荐标签。

优缺点:

    优点:非常直观易懂可解释性强;可以更加容易的解决冷启动;算法实现相对简单;对于小众领域也能有比较好的推荐效果;非常适合标的物快速增长的有时效性要求的产品。

    缺点:推荐范围狭窄新颖性不强;需要知道相关的内容信息且处理起来较难;较难将长尾标的物分发出去;推荐精准度不太高。

(3)基于知识推荐

基于知识的推荐技术(Knowledge-based Recommendations,KB)是专门解决这类问题的一种新的推进技术,高度重视知识源,不会存在冷启动的问题,因为推荐的需求都是被直接引出的。缺点:知识获取比较难,需要知识整理工程师将领域专家的知识整理成为规范的、可用的表达形式。

基于知识的推进技术需要主动的询问用户的需求,然后返回推荐结果。有两种基本类型:基于约束的推荐和基于实例的推荐。

两种方法相似点:用户必须指定需求,然后系统设法给出解决方案,如果找不到方案,用户必须修改需求,系统还需要给出推荐物品的解释。

两种方法不同点:如何使用提供的知识,基于实例推荐着重于根据不同的相似度衡量方法检索出相似的物品,基于约束的推荐系统则依赖明确定义的推荐规则集合。

基于约束的推荐:一般可以表示为由约束求解器解决的约束满足问题

基于实例的推荐:主要利用相似度衡量标准从目录中检索物品

优缺点:

基于约束的推荐技术构建约束条件需要比较多的一个领域知识,比较难。

基于样列的推进技术当计算物品和需求之间相似度公式效果不佳的时候,推荐的结构比较不好,而且结构化物品特征数量以及构建特征属性和需求之间的相似度计算规则比较难,需要比较高 的一个领域知识。

未来是一个发展方向,但是在当前推荐领域中实际应用的不多。

(4)混合推荐

分别用基于内容的方法和协同过滤推荐方法去产生一个推荐预测结果,然后用某方法组合其结果。组合推荐一个最重要原则就是通过组合后要能避免或弥补各自推荐技术的弱点。

价值:冷启动问题、数据稀疏性问题、马太效应、灰羊(gray sheep)效应、投资组合效应(portfolio effect)、稳定性(stabillity)/可塑性(plasticity)问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值