• 基于物品的协同过滤算法(ItemCF)


    最近在学习使用阿里云的推荐引擎时,在使用的过程中用到很多推荐算法,所以就研究了一下,这里主要介绍一种推荐算法—基于物品的协同过滤算法。
    ItemCF算法不是根据物品内容的属性计算物品之间的相似度,而是通过分析用户的行为记录来计算用户的相似度。该算法认为物品A和物品B相似的依据是因为喜欢物品A的用户也喜欢物品B。
    基于物品的协同过滤算法实现步骤:
    1、计算物品之间的相似度
    2、根据物品的相似度和用户的历史行为记录给用户生成推荐列表
    下面我们一起来看一下这两部是如何实现的:
    一、计算物品之间的相似度
    通过查询一下资料,ItemCF的物品相似度计算模型如下:
    screenshot
    公式中|N(i)|表示喜欢物品i的用户数,|N(j)|表示喜欢物品j的用户数, |N(i)∩N(j)|表示同时喜欢物品i和物品j的用户数。从上面的公式我们可以看出物品i和物品j相似是因为他们共同别很多的用户喜欢,相似度越高表示同时喜欢他们的用户数越多。
    下面举例讲解一下相似度的计算过程:
    假设用户A对物品a,b,d有过评价,用户B对物品b,c,e有过评价,如下图:

    A : a b d
    B : b c e
    C : c d
    D : b c d
    E : a d
    根据上面用户的行为构建:用户——物品倒排表:例如:物品a有用户A和E做过评价。
    a : A E
    b : A B D
    c : B C D
    d : A C D E
    e : B
    根据上面的倒排表我们可以构建一个相似度矩阵:
    screenshot

    图 1.1 计算物品的相似度
    图中最左边的是用户输入的用户行为记录,每一行代表用户感兴趣的物品集合,然后对每个物品集合,我们将里面的物品两两加一,得到一个矩阵。最终将这些矩阵进行相加得到上面的C矩阵。其中Ci记录了同时喜欢物品i和j的用户数。这样我们就得到了物品之间的相似度矩阵W。

    二、根据物品的相似度和用户的历史行为记录给用户生成推荐列表
    ItemCF通过下面的公式计算用户u对一个物品j的兴趣:

    screenshot
    这里的N(u)代表用户喜欢的物品的集合,S(j,k)是和物品j最相似的的k个物品的集合,wij是物品j和i的相似度,r_ui代表用户u对物品i的兴趣。该公式的含义是,和用户历史上最感兴趣的物品月相似的物品,越有可能在用户的推荐列表中获得比较高的排名。
    下面是查阅资料找到的一些优化方法:
    (1)、用户活跃度对物品相似度的影响
    即认为活跃用户对物品相似度的贡献应该小于不活跃的用户,所以增加一个IUF(Inverse User Frequence)参数来修正物品相似度的计算公式:
    screenshot
    用这种相似度计算的ItemCF被记为ItemCF-IUF。
    ItemCF-IUF在准确率和召回率两个指标上和ItemCF相近,但它明显提高了推荐结果的覆盖率,降低了推荐结果的流行度,从这个意义上说,ItemCF-IUF确实改进了ItemCF的综合性能。

    (2)、物品相似度的归一化
    Karypis在研究中发现如果将ItemCF的相似度矩阵按最大值归一化,可以提高推荐的准确度。其研究表明,如果已经得到了物品相似度矩阵w,那么可用如下公式得到归一化之后的相似度矩阵w':
    screenshot
    最终结果表明,归一化的好处不仅仅在于增加推荐的准确度,它还可以提高推荐的覆盖率和多样性。用这种相似度计算的ItemCF被记为ItemCF-Norm。

  • 相关阅读:
    DataGridView 复选框 操作大全
    ClickOnce 创建桌面快捷方式
    测量程序经过的时间
    C# Js 时间格式化问题
    MVC 漫长之路(一)
    SQL 查一年内的数据
    DataRow对象的RowState和DataRowVersion属性特点
    iOS打开百度地图、高德地图导航
    NSURLCache 和 NSCache 的区别
    MagicalRecord的使用(第三方库实现的数据库)
  • 原文地址:https://www.cnblogs.com/dtstack/p/10271551.html
Copyright © 2020-2023  润新知