iBit

导航

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进行分组,遍历每个用户看过的每一部电影;创建一个数据框,以便了解每部电影的影迷数量。

代码:

 

posted on 2019-10-10 11:32  iBit  阅读(794)  评论(1)    收藏  举报