【实用算法教学】——Apriori算法,教你使用亲和性分析方法推荐电影

本文学习如何用亲和性分析方法找出在什么情况下两个对象经常一起出现。通俗来讲,这也
叫“购物篮分析”,因为曾有人用它找出哪些商品经常一起出售。
前一篇文章关注的对象为球队,并用特征描述球队。本文所用到的电影评分数据有所不同,我们
所关注的对象(电影)埋在数据中。本章数据挖掘任务的目标是找出对象同时出现的情况,也就
是寻找用户同时喜欢几部电影的情况。
本文主要涉及以下几个概念。
亲和性分析
Apriori 算法挖掘关联特征
电影推荐
数据稀疏问题


一 亲和性分析

亲和性分析用来找出两个对象共同出现的情况。而前文,我们关注的是同种对象之间的相似度。亲和性分析所用的数据通常为类似于交易信息的数据。从直观上来看,这些数据就像是商店的交易数据—— 从中能看出哪些商品是顾客一起购买的。
然而,亲和性分析方法的应用场景有很多,比如:
欺诈检测
顾客区分
软件优化
产品推荐
亲和性分析比分类更具探索性,因为通常我们无法拿到像在很多分类任务中所用的那样完整
的数据集。例如,在电影推荐任务中,我们拿到的是不同用户对不同电影的评价。但是,每个用
户不可能评价过所有电影,这就给亲和性分析带来一个不容忽视的大难题。如果用户没有评价过
一部电影,是因为他们不喜欢这部电影(据此就不推荐给他们),还是因为他们出于别的原因还
没有评价?
本文不对上述问题做出解答,但是我们要思考数据集中类似这样的潜在问题该怎么解决。这
些思考有助于提升推荐算法的准确性。

二 亲和性分析算法

基础的亲和性分析算法,尝试了所有可能的规则组合,计算了每条规则的置信度和支持度,并根据这两个标准进行排序,选取最佳规则。
然而,这个方法效率不高。即使是再不起眼的小卖铺出售的商品也达上百种之多,网店更是有成千上万种 商品(甚至几百万种!)。如果规则生成方法 过于简单,计算这些规则所需要的时间复杂度将呈指数级增长。随着商品数量的增加,计算所有规则所需的时间增长得很快。 。数据集有 5 个特征,可能的规则就有 31 条;有 10 个特征,可能的规则就有1023 条;仅仅有 100 个特征,规则数就能达到 30 位数字。即使计算能力大幅提升也未必能赶上在线商品的增长速度。因此,与其跟计算机过不去,不如寻找更加聪明的算法。
Apriori 算法可以说是经典的亲和性分析算法。它只从数据集中频繁出现的商品中选取共同出现的商品组成频繁项集 frequent itemset ),避免了上述复杂度呈指数级增长的问题。一旦找到频繁项集,生成关联规则就很容易了。
Apriori 算法背后的原理简洁却不失巧妙。首先,确保了规则在数据集中有足够的 支持度 。 Apriori算法的一个重要参数就是最小支持度。比如,要生成包含商品 A B 的频繁项集( A, B ),要求支持度至少为30 ,那么 A B 都必须至少在数据集中出现 30 次。更大的频繁项集也要遵守该项约定,比如要生成频繁项集(A, B, C, D ),那么子集 (A, B, C) 必须是频繁项集(当然 D 自己也 要满足最小支持度标准)。
生成 频繁项集 后,将不再考虑其他可能的却不够频繁的项集(这样的集合有很多),从而大
大减少测试新规则所需的时间。
其他亲和性分析算法有 Eclat 频繁项集挖掘算法 FP-growth )。从数据挖掘角度看,这些
算法比起基础的 Apriori 算法有很多改进,性能也有进一步提升。接下来,先来看一下最基础的
Apriori 算法。

三 选择参数

挖掘亲和性分析所用的关联规则之前,我们先用Apriori算法生成频繁项集。接着,通过检测频繁项集中前提和结论的组合,生成关联规则(例如,如果用户喜欢电影X,那么他很可能喜欢电影Y)。

第一个阶段,需要为 Apriori 算法指定一个项集要成为频繁项集所需的最小支持度。任何小于最小支持度的项集将不再考虑。如果最小支持度值过小,Apriori 算法要检测大量的项集,会拖慢的运行速度;最小支持度值过大的话,则只有很少的频繁项集。
找出频繁项集后,在第二个阶段,根据置信度选取关联规则。可以设定最小置信度,返回一
部分规则,或者返回所有规则,让用户自己选。
本文,我们设定最小置信度,只返回高于它的规则。置信度过低将会导致规则支持度高,正确率低;置信度过高,导致正确率高,但是返回的规则少。

四 电影推荐问题

产品推荐技术是门大生意。网店经常用它向潜在用户推荐他们可能购买的产品。好的推荐算法能带来更高的销售业绩。每年有几百万乃至几千万用户进行网购,向他们推荐更多的商品,潜在收益着实可观。
产品推荐问题被人们研究了多年,但它一直不温不火,直到 2007 年到 2009 年间, Netflix 公司推出数据建模大赛,并设立Netflix Prize 奖项之后,才得到迅猛发展。该竞赛意在寻找比 Netflix公司所使用的预测用户为电影打分的系统更准确的解决方案。最后获奖队伍以比现有系统高10个百分点的优势胜出。虽然这个改进看起来不是很大,但是Netflix 公司却能借助它实现更精准的电影推荐服务,从而多赚上百万美元。

六 获取数据集

自打 Netflix Prize 奖项设立以来,美国明尼苏达大学的 Grouplens 研究团队公开了一系列用于
测试推荐算法的数据集。其中,就包括几个大小不同的电影评分数据集,分别有 10 万、 100 万和
1000 万条电影评分数据。
数据集下载地址为 http://grouplens.org/datasets/movielens/ 。本文将使用包含 100 万条数据的
MovieLens 数据集。下载数据集,解压到你的 Data 文件夹。启动 IPython Notebook
  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值