文章目录

    4 UGC推荐
        4.1 基于用户UGC标签进行推荐
            4.1.1 最简单的算法(SimpleTagBased)
            4.1.2 利用TF-IDF进行改进(TagBasedTFIDF和TagBasedTFIDF++)
            4.1.3 标签扩充改进
            4.1.4 基于图的推荐
        4.2 给用户推荐标签
            4.2.1 基于统计的方法
            4.2.2 基于图的标签推荐

4 UGC推荐

用户的标签行为数据集一般由(u, i, b)三元组组成,表示用户u给物品i打上了标签b的行为。
4.1 基于用户UGC标签进行推荐

4.1.1 最简单的算法(SimpleTagBased)

在拿到用户标签行为数据之后,一个最容易想到的方法就是:

    统计每个用户最常用的标签
    对于每个标签,统计被打过这个标签次数最多的物品
    对于每个用户,首先找到他常用的标签,然后找到具有这些标签的最热门物品进行推荐

用公式表示用户u对物品i的兴趣为,其中,nu,b
nu,b​是用户u打过标签b的次数,nb,i

nb,i​是物品i被打过标签b的次数。

p(u,i)=∑bnu,bnb,i

p(u,i)=b∑​nu,b​nb,i​
4.1.2 利用TF-IDF进行改进(TagBasedTFIDF和TagBasedTFIDF++)

上面的公式倾向于给热门标签对应的热门物品很大的权重,从而不能反映用户个性化的兴趣,因此可以借鉴TF-IDF思想,对上述公式进行改进(TagBasedTFIDF):

p(u,i)=∑bnu,blog(1+n(u)b)nb,i

p(u,i)=b∑​log(1+nb(u)​)nu,b​​nb,i​

其中n(u)b

nb(u)​记录了标签b被多少个不同的用户使用过。

可见这个公式是对热门标签进行惩罚,当然对于热门物品也可以进行同样的惩罚(TagBasedTFIDF++):

p(u,i)=∑bnu,blog(1+n(u)b)nb,ilog(1+n(u)i)

p(u,i)=b∑​log(1+nb(u)​)nu,b​​log(1+ni(u)​)nb,i​​

其中n(u)i

ni(u)​记录了物品i被多少个不同的用户打过标签
4.1.3 标签扩充改进

前面的算法中,用户兴趣和物品的联系是通过B(u)⋂B(i)

B(u)⋂B(i)中的标签建立的。但对于新用户或新物品,这个集合中的标签数量会很少,因此可以考虑对标签集合进行扩展。

一种简单的扩充方法是基于邻域的做法,即通过计算标签之间的相似度进行扩充。对于标签的相似度计算可以从数据中统计,当两个标签同时出现在很多物品的标签集合中时,就可以认为它们具有较大的相似度。

对于标签b,令N(b)
N(b)为有标签b的物品的集合,nb,i

nb,i​为给物品i打上标签b的用户数,可以用如下的余弦相似度计算标签b和标签b’的相似度:

sim(b,b′)=∑i∈N(b)⋂N(b′)nb,inb′,i∑i∈N(b)n2b,i∑i∈N(b′)n2b′,i√
sim(b,b′)=∑i∈N(b)​nb,i2​∑i∈N(b′)​nb′,i2​

​∑i∈N(b)⋂N(b′)​nb,i​nb′,i​​

后续就可以根据这种标签的相似度进行聚合排序,而后作为用户新的标签集合。
4.1.4 基于图的推荐

相比较于协同过滤算法中提到的(User, Item)二元组,这里的数据是(User, Item, Tag)三元组,因此也可以构建成如下的图:

其中ABC表示用户,abc表示物品,123表示标签。在建立了这种图之后,就可以用协同过滤部分提到的PersonalRank算法进行随机游走计算了。

而对于前面的简单算法来说,用户对物品的兴趣公式为:

P(i∣u)=∑bP(i∣b)P(b∣u)

P(i∣u)=b∑​P(i∣b)P(b∣u)

其实这个可以用简化的图模型来建模,即SimpleTagGraph,如下图所示,它将前面的三条边(User,Item),(Item, Tag),(User, Tag)改成了两条边,去掉了(User, Item)边,并且改为了有向图。

这时用PersonalRank算法, 设K=1

K=1,就等价于前面提到的简单推荐算法SimpleTagBased。
4.2 给用户推荐标签

给用户推荐标签的好处在于:1)方便用户输入;2)提升标签质量
4.2.1 基于统计的方法

当用户u给物品i打标签时,有如下4种方法给用户推荐和物品i相关的标签:

    PopularTags:给用户u推荐整个系统里面最热门的标签
    ItemPopularTags:给用户u推荐物品i上面被打的最热门标签
    UserPopularTags:给用户u推荐他自己经常打的标签
    HybridPopularTags:线性加权融合方式2、3,对两个列表进行线性相加之前,需要对其按照各自的最大值进行归一化

4.2.2 基于图的标签推荐

在根据用户打标签的行为生成图之后(4.1.4),同样可以利用PersonalRank方法进行排名。这次的问题是,当用户u遇到物品i时,会给物品i打什么样的标签。因此,需要重新定义顶点的启动概率:

PR⎛⎝⎜v⎞⎠⎟=rv(k)=⎧⎩⎨⎪⎪α1−α0v(k)==v(u)v(k)==v(i)other

PR(v)=rv(k)​=⎩⎨⎧​α1−α0​v(k)==v(u)v(k)==v(i)other​

也就是说,只有用户u和物品i对应的顶点有非0的启动概率,而其他顶点的启动概率都为0。在上面的定义中,v(u)
v(u)和v(i)v(i)的启动概率并不相同,v(u)v(u)的启动概率是αα,而v(i)v(i)的启动概率是1−α1−α。参数αα可以通过离线实验选择。

UGC的更多相关文章

  1. 解读2015年互联网UGC内容发展态势,安全事件频发

    <2015内容安全年报> 阿里移动安全 第一章 2015年内容安全形势 随着互联网业务的迅速发展,互联网上的信息内容带来了爆炸式的增长.由于缺乏对网络活动进行有效监督和管理的措施,致使互联 ...

  2. 一文读懂UGC:互联网上的生态秘密

    转载自近乎: UGC(User- Generated Content)用户原创生产内容,它是相对于PGC(Professionally-produced Content)专业生产内容的一种内容来源,简 ...

  3. 门户级UGC系统的技术进化路线——新浪新闻评论系统的架构演进和经验总结(转)

    add by zhj:先收藏了 摘要:评论系统是所有门户网站的核心标准服务组件之一.本文作者曾负责新浪网评论系统多年,这套系统不仅服务于门户新闻业务,还包括调查.投票等产品,经历了从单机到多机再到集群 ...

  4. 关于ugc的一点思考

    ugc会使互联网繁荣,但依赖大众用户创造的内容质量上会存在参差不齐,这是ugc本身存在的问题. 就拿技术论坛或社区来说,好的内容不少,但质量不好的内容也很多.社区在引导用户发言的同时,也应 对用户创造 ...

  5. 门户级UGC系统的技术进化路线 [转]

    原文链接   :http://weibo.com/p/1001603789147444803230 新闻门户网站的评论系统,或者称为跟帖.留言板,是所有门户网站的核心标准服务组件之一.与论坛.博客等其 ...

  6. 【总结整理】UGC内容

    除了内容了产品,还有什么适合引入UGC? :引发讨论,诱导参与,然后促成销售. User Generated Content,也就是用户生成内容的意思. 购买类产品,内容催生购买 1.为用户购买提供思 ...

  7. 大中型 UGC 平台的反垃圾(anti-spam)工作

    本文来自网易云社区 随着互联网技术的日渐发展,相继诞生了垂直社区.社交平台.短视频应用.网络直播等越来越多样的产品.但在内容爆炸式增长的同时,海量UGC中也夹杂着各种违规垃圾信息,包括垃圾广告.诈骗信 ...

  8. 对话 CTO〡用声音在一起,听荔枝 CTO 丁宁聊 UGC 声音互动平台的技术世界 原创 王颖奇 极客公园 2018-12-01

    https://mp.weixin.qq.com/s/jfHFXZpzbAEbHKkCMSev6w 对话 CTO〡用声音在一起,听荔枝 CTO 丁宁聊 UGC 声音互动平台的技术世界 原创 王颖奇 极 ...

  9. ugc pgc ogc web2.0 mgc

    http://yjy.people.com.cn/n/2014/0120/c245079-24169402.html machine

随机推荐

  1. 用于ASP.net的MVC模块

    下载MVCBricks_SRC - 492.58 KB 表的内容 介绍系统要求游戏闪屏的最终考虑历史 介绍 自从我写上一篇关于ASP的文章以来,已经有很长时间了.净的话题.这次我决定写一些关于它的东西 ...

  2. MYSQL账户是否不允许远程连接。如果无法连接可以尝试以下方法:

    mysql账户是否不允许远程连接.如果无法连接可以尝试以下方法: mysql -u root -p //登录MySQL mysql> GRANT ALL PRIVILEGES ON *.* TO ...

  3. java基础知识总结(续写)

    1.两个容易搞混的C盘文件夹 文件名 描述 Progrm Files 默认存储的64位软件 Progrm Files(x86) 默认存储32位软件 2.常用基础DOS命令(Windows+R打开命令) ...

  4. 一文看懂Vue3.0的优化

    1.源码优化: a.使用monorepo来管理源码 Vue.js 2.x 的源码托管在 src 目录,然后依据功能拆分出了 compiler(模板编译的相关代码).core(与平台无关的通用运行时代码 ...

  5. day03 Pyhton学习

    昨日回顾 1.while循环 语法 while 条件: 语句 else: 语句 执行语句:判断语句是否为真.如果真,执行循环,然后再次判断条件,如果不满足执行else语句. break 结束循环 co ...

  6. day25 Pyhton学习 MD5加密.日志

    一.MD5加密 MD5是一种不可逆的加密算法. 它是可靠的. 并且安全的. 在python中我们不需要手写这一套算法. 只需要引入一个叫hashlib的模块就能搞定MD5的加密工作 import ha ...

  7. GCC编译选项笔记

    警告选项 -Wall:开启大多数的警告信息 -Wextra:开启额外的警告信息,比如参数未使用警告(-Wunused-parameter) -Werror:将警告当作错误,中断编译 优化选项 -O,- ...

  8. 不出意外,排名第一的还是它,程序员为什么都喜欢用Chrome?

    程序员为什么喜欢使用Chrome? 其实不单单是程序员喜欢使用Chrome,现在大多数的小伙伴都使用Chrome. 我们可以看到Netmarketshare发布了2020年7月的操作系统与浏览器市场份 ...

  9. golang拾遗:为什么我们需要泛型

    从golang诞生起是否应该添加泛型支持就是一个热度未曾消减的议题.泛型的支持者们认为没有泛型的语言是不完整的,而泛型的反对者们则认为接口足以取代泛型,增加泛型只会徒增语言的复杂度.双方各执己见,争执 ...

  10. 自定义常用input表单元素三:纯css实现自定义Switch开关按钮

    自定义常用input表单元素的第三篇,自定义一个Switch开关,表面上看是和input没关系,其实这里采用的是checkbox的checked值的切换.同样,采用css伪类和"+" ...