4、亲和性分析(关联分析)——推荐电影
1、主要概念:
- 找出两个对象共同出现的情况
- 数据通常为交易信息的数据——从中能看出哪些商品是一起购买的
- 之前的亲和性分析示例比较简单,适用于商品数量少的情况。但如果规则生成方法像那样简单,计算这些规则所需要的时间将呈指数增长(n个特征规则就有2^n-1:如3项集有7规则——2是因为分为前提和结论(有的规则作为前提,其余规则作为结论),-1是因为有一个空集)
- Apriori算法是典型的亲和性分析算法,它只从数据集频繁出现的商品中选取共同出现的商品组成频繁项集。(1项集:有一个特征,n项集:有n个特征)
- 频繁项集用于生成关联规则——依据支持度(频度)找出所有频繁项集,依据置信度(强度)产生关联规则。 关联规则:前提和结论
- Apriori算法有一个重要参数——最小支持度(如商品A、B的频繁项集(A,B)要求支持度至少为30,那么A和B都至少出现30次)
- 生成频繁项集后,不再考虑不符合频繁项集的情况——大大减少测试新规则的时间
- 其他亲和性分析算法:Eclat和FP-growth(频繁模式增长算法)
2、选择参数:
- 指定合适的最小支持度:不能过大也不能过小
- 找出频繁项集后,根据置信度选取关联规则:指定最小置信度(满足最小置信度的规则称为强规则),返回高于它的规则(置信度过低将导致支持度高,反之支持度低)。
3、电影推荐问题:
- 获取数据集
- 用pandas加载数据:
- 调整参数设置——原因:数据之间用制表符而不是逗号,没有表头;所以:把分隔符设置为制表符,表头设为None(告诉pandas不要把第一行作为表格),再手动设置名称。
- 稀疏数据格式
- 为了节省空间
- 每一行为一个用户,每一列为一部电影,值为用户对电影的评分
- 有的用户没有打过分,所以会存在大量的0,用稀疏矩阵可以大大节省空间,使我们忽略无用的0值,只关注现有数据
- Apriori算法的实现:
- 目标规则:如果用户喜欢某些电影,那么他会喜欢这部电影
- 扩展:讨论喜欢某几部电影的用户,是否喜欢另一部电影。
- 过程:首先确定用户是否喜欢某一部电影,创建特征Favorable,若用户喜欢,则该值为true;从数据中抽取一份作为训练集,取前200名用户的打分数据;新建一个数据集,只包含用户喜欢某部电影的数据行;因为需要知道用户各喜欢哪部电影,按照User ID进行分组,遍历每个用户看过的每一部电影;创建一个数据框,以便了解每部电影的影迷数量。
代码:
浙公网安备 33010602011771号