• 推荐算法 相关笔记整理


    余弦相似度公式

     

     推荐算法的冷启动

    没有用户的时候,将不同的内容打标签,然后将相同标签的内容推荐给他

    小红书的内容推荐算法:

    大量的“大字报”和过分的标题党对社区生态并不健康,不够真实更不够美好,用户也会逐渐认为这是个产出内容门槛很高的平台,减少其分享普通日常生活的欲望。

    可以看出大字报首图内容很受欢迎:

    2. 用户通过搜索消费内容的行为比例高

    小红书爆款笔记的点赞量是相对缓慢地不断爬升,但内容的生命周期非常长

    内容在小红书的主要曝光渠道

    关注逻辑以及推荐逻辑:

    推荐的时候跟点赞以及收藏的内容强相关

    小红书现有的推荐算法对用户喜爱的内容标签进行实时反馈推荐,即你现在点赞了一个早餐的笔记,接下来会立刻出现相关内容。

    如何判定两个内容之间的相似性

    1) 内容标签相似

    2)图片相似

    对于推荐系统来说,通常是基于向量来确定两两用户或两个物品是否相似,即系统首先要把用户(用户属性或用户行为偏好)、物品(物品特征)向量化

    推荐算法一般而言分为三类

    1)基于属性相似度的推荐

    用户属性的相似度推荐,即按用户的年龄、性别、地域等基础特征建模,计算用户之间的相似度,把用户A喜欢的物品推荐给与他类似的用户B。

    物品属性的相似度推荐,即按物品的属性特征(以音乐举例,如音乐类型、歌手、播放时长等)建模,用户喜欢钢琴曲,而小提琴曲与钢琴曲都可以划分为轻音乐,则系统把小提琴曲推荐给用户。

     优缺点:

    上述基于属性相似度的推荐,好处是推荐解释性较强,易于理解,且不需要过多依赖用户行为的历史数据,对于长尾/上新的物品都能做到很好的曝光。

    然而这类算法的缺点也很明显,如算法特征过于简单(仅包括用户或物品的基础属性),而人们的喜好通常会随环境、时间成长等动态变化,无法很好的满足用户需求多样性。

    2)基于协同过滤推荐

    协同过滤,顾名思义就是指由相似兴趣的用户们组成‘邻居’互相协作,通过不断的与系统发生交互从而持续过滤掉用户不感兴趣的内容,它是一种群体智慧效应的体现。

    从用户与内容的角度又可划分为:基于用户的协同过滤(UserCF)和基于物品的协同过滤(ItemCF)。

    基于用户的协同过滤是通过用户的行为去寻找与其相似的用户进行推荐,与上一节基于用户属性的推荐对比,两者的核心区别是计算相似度的定义不同,基于用户属性推荐只考虑用户的静态特征,而UserCF是在用户的历史行为偏好中计算相似度。

    基于用户协同过滤预测用户u对物品i的兴趣程度p(ui)的公式如下:

     从公式可以看出,基于用户的协同过滤算法主要有两步:一是用户之间的相似度,二是用户与内容之间的行为偏好分数,通过图形拆解算法的计算路径如下图。

    基于物品的协同过滤是通过用户对物品的行为偏好找到与用户喜欢物品的相似物品进行推荐,简单理解即喜欢物品1的用户大多也喜欢物品2。

    基于物品的协同过滤预测用户u对物品j的兴趣程度p(uj)的公式如下:

     同UserCF,基于物品的协同算法主要也是两步:一是物品之间的相似度,二是用户产生过偏好行为的物品评价分数,图示计算路径如下。

    3)基于模型的推荐

    基于模型的推荐主要是利用机器学习的方法挖掘用户、物品、用户历史行为偏好之间的关系,从而找到用户可能感兴趣的物品进行推荐。

    机器学习包括深度学习的推荐算法在业界已经提出了很多种,本文仅介绍一种经典的模型——基于隐语义的模型推荐(LFM)。如下图形式是把所有用户和物品按用户对物品的偏好程度画成一张表中,推荐系统的工作就是要预测那些表格中的空白值。

    为了找到用户喜欢的物品,我们可以先把用户按其兴趣偏好进行分类,比如在买手机的时候有的人会关注品牌,有的人喜欢尺寸要大、有人在意型号、有人对价格敏感等等。

    同样,物品也可以按这些用户偏好(品牌、尺寸、型号、价格)进行分类。

    隐语义模型就是要找到用户-偏好、物品-偏好这两个关系矩阵(如下图),然后通过矩阵计算的方式合成用户-物品的完整矩阵,求得用户对物品的推荐分数。

    系统求解的过程是随机生成初始矩阵,推荐结果要与原始数据矩阵中有值的项尽可能相近,这就转换成了机器学习求最优解的问题。

    相比协同过滤,无论UserCF或ItemCF,能够影响推荐效果的往往是少部分的用户行为和物品,而隐语义模型则通过机器挖掘隐藏在数据中的偏好从而进行推荐,通常能更充分的探寻到数据中的信息,推荐效果也更准确。

    但因为偏好信息没有具体物理意义,所以其缺点也同样明显,无法对推荐结果做出合理的解释。

    补充说明:

    1.LFM原理分析

    从矩阵的角度来理解LFM原理矩阵表示如下图所示。

    R矩阵表示用户对物品的偏好信息。 [公式] 代表User i对Item j的兴趣度

    P矩阵表示用户对各物品类别的一个偏好信息。其中 [公式] 代表User i对Class j的兴趣度。

    Q矩阵表示各个物品归属到各个类别的信息。其中 [公式] 代表Item j在Class i中的权重或概率。

    隐语义模型就是要将矩阵R分解为P和Q的乘积。也就是说通过矩阵中的物品类别将用户和物品联系起来。

    可以得到隐语义模型计算用户对物品兴趣度的公式为:

    参数说明:

    [公式] :用户u兴趣和第k个隐类的关系。

    [公式] :第k个隐类和物品i的关系。

    K:隐类的数量。

    用户的偏好类别,以及当前类别在偏好中的权重求积

    意料之外,情理之中,也许是对推荐系统最好的诠释。最好的推荐算法。

    产品经理需要了解的三种算法:

    热度算法的计算公式可以简单的参考下面这个基础公式,pgc内容的推荐逻辑:

    热度分=初始热度分+用户行为交互分-时间衰减分

    1 初始热度不应该一致

    上面的算法为每一条入库的新闻赋予了同样的热度值,但在现实使用后发现行不通,例如娱乐类别比文化类别受欢迎程度本身就高很多;或者突发了严重的灾害或事故;或是奥运会期间,体育类别的关注度突然高了起来;而此时如果还是每条新闻给同样的热度就不能贴合实际了。

    解决办法就是把初始热度设置为变量

    (1)按照新闻类别给予新闻不同的初始热度,让用户关注度高的类别获得更高的初始热度分,从而获得更多的曝光,例如:

     (2)对于重大事件的报道,如何让它入库时就有更高的热度,我们采用的是热词匹配的方式。

    即对大型新闻站点的头条,Twitter热点,竞品的头条做监控和扒取,并将这批新闻的关键词维护到热词库并保持更新;每条新闻入库的时候,让新闻的关键词去匹配热词库,匹配度越高,就有越高的初始热度分。

    这样处理后,重大事件发生时,Twitter和门户网站的争相报道会导致热词集中化,所有匹配到这些热词的新闻,即报道同样事件的新闻,会获得很高的初始热度分。

    2 用户行为分规则不是固定不变的

    解决了新闻入库的初始分之后,接下来是新闻热度分的变化。先要明确用户的的哪些行为会提高新闻的热度值,然后对这些行为赋予一定的得分规则。例如对于单条新闻,用户可以点击阅读(click),收藏(favor),分享(share),评论(comment)这四种行为,我们为不同的行为赋予分数,就能得到新闻的实时用户行为分为

    S(Users) = 1*click + 5*favor + 10*comment + 20*share

    这里对不同行为赋予的分数为1,5,10,20,但这个值不能是一成不变的;当用户规模小的时候,各项事件都小,此时需要提高每个事件的行为分来提升用户行为的影响力;当用户规模变大时,行为分也应该慢慢降低,因此做内容运营时,应该对行为分不断调整。

    当然也有偷懒的办法,那就是把用户规模考虑进去,算固定用户数的行为分,即:

    S(Users) = (1*click + 5*favor + 10*comment + 20*share)/DAU * N(固定数)

    这样就保证了在不同用户规模下,用户行为产生的行为分基本稳定。

    3 热度随时间的衰减不是线性的

    参考牛顿冷却定律,时间衰减因子应该是一个类似于指数函数:

    T(Time) = e ^ (k*(T1 – T0)) 

  • 相关阅读:
    Tomcat
    二叉树
    CDOJ 1962 天才钱vs学霸周2【最大流】
    次小生成树(POJ1679/CDOJ1959)
    CDOJ1927 爱吃瓜的伊卡洛斯(2) 【并查集】启发式合并+set
    HDU 1074 Doing Homework(DP状态压缩)
    uva 11367 (Dijkstra+DP)
    线段树模板
    openpose pytorch代码分析
    opencv图片坐标和数组下标
  • 原文地址:https://www.cnblogs.com/bohemiaCP/p/14507544.html
Copyright © 2020-2023  润新知