聊聊推荐系统的评测(下)

news2024/11/15 3:52:33

这是鼎叔的第三十九篇原创文章。

行业大牛和刚毕业的小白,都可以进来聊聊。

欢迎关注本人专栏和微信公众号《敏捷测试转型》,大量原创思考文章陆续推出。

上篇请查阅:聊聊推荐系统的评测(上)

下篇,我们聊聊推荐系统如何冷启动,它如何利用用户打标签,利用上下文信息和社交网络,以及推荐系统的架构组成。

四 推荐系统如何冷启动

如何在没有大量用户数据和大量物品的情况下,让用户对推荐结果满意,从而使用它,这就是冷启动问题。它主要分为三种情况:为新用户做个性化推荐,把新物品推荐给可能对它感兴趣的人,以及网站刚发布时如何让用户体验个性化推荐。

应对冷启动的方法有两种:

1)暂时提供非个性化的推荐,如热门排行榜,或由专家推荐。专家可以根据对物品的大量定义好的分类特征,进行专家人工标注分类,以供用户自行挑选类型。

2)利用用户个人注册信息(主要是人口统计学特性),社交网络好友信息。或者让用户给物品打兴趣标签。如果想让用户给物品打标签,那这些物品集合的特征应该是比较热门的(不了解就无法打标签),有代表性和区分性,覆盖多样性,用户对物品往往有“感兴趣”,“不感兴趣”,“不认识”三种反馈。

对于某些网站,推荐列表可能是新用户获得信息的主要途径,那第一推动力从哪来?网站可以采用随机展示物品的方式。如果新物品不展示给用户,用户就无法对它产生行为,因此系统可以利用物品的内容属性,频繁更新物品相关表。

物品的描述内容包含一系列的实体关键词(比如电影物品的实体词有导演,主演,类别,发行时间,发行公司等),可以把它们组成关键词集合,排名计算权重,生成关键词向量,物品内容的相似度就可以通过向量之间的余弦相似度来计算。

五,利用用户打的标签

除了借助用户协同过滤和借助物品协同过滤,推荐系统还可以利用特征(属性关键词)把用户和物品联系起来,我们也称之为“标签”。前面介绍的专家打标签,称之为PGC,如果是普通用户打标签,就是UGC。

 

标签系统带来的收益包含:让用户表达自己,并在用户打标签的同时也给TA推荐和该标签有关物品,帮助用户更容易发现自己的兴趣物品。不同标签下的推荐结果,本身就带有了可解释性。

由于热门标签对应的是热门物品,因此在推荐权重计算公式中要对热门程度进行惩罚,否则推荐结果的新颖性不足。

用户和物品形成的标签矩阵,通常是很稀疏的,可能需要扩展。即,把相似的标签也加进来,最简单的就是同义词。如果两个标签总是同时出现在很多物品的标签集合中,那它们也有很大的相似度。

扩展后的标签推荐算法,其准确率和召回率确实得到了提升,但可能会略微降低覆盖率和新颖度。

最后,不是所有标签都代表了用户的兴趣,有必要对某些标签进行清理,比如去掉一些情绪化词语,如“没意思”(用户不会对“没意思”感兴趣);去掉语法格式略有变化的同义词。也可以让用户“众包”指出当前标签的不当之处。

标签集合/标签云可以帮助用户找到多样性的结果,因为用户每天的兴趣会有一定程度被影响,标签云就可以起到提醒变化的牵引作用。如果兴趣从来不变,那么多样性就很差了。

在用户浏览某个物品时,标签系统实时推荐了标签清单供用户确认,这种方式降低了用户输入的成本,也借助众包的力量提高标签库的质量。

那么,标签清单里的标签怎么选择?有的系统直接选择热门标签,有的系统给出该物品身上被打的最多的标签,还有的系统兼而有之。

六 利用上下文信息

以上推荐算法都忽略了重要的一点,用户是处于一定的上下文的,上下文对于推荐效果非常重要,它包括时间,地点,用户心情,和谁同伴等等。比如,不同的季节应该推荐不同时令的服装;正在A城市的用户,不应该被优先推荐B城市的餐厅。

1 时间上下文

时间会带来用户兴趣的变化。大学时候的兴趣,到了工作后可能就变化了。物品也是有时效性的,不同类型的物品受时间影响不同,比如新闻的时效性非常强。在消费领域,季节性和节日是一个非常明显的影响,不同的日子会带来消费的周期性变化。

基于时间维度信息,推荐系统就变成实时性系统,用户行为动作也变成了时间序列。因此系统需要搜集每天用户的数据增长情况,物品变化情况和用户访问情况。实时推荐系统需要实时响应用户新的行为,让推荐列表满足用户不断变化的需求。因此,每次推荐前都会根据用户之前的行为完成实时计算。

度量物品时效性的指标可以是:平均在线天数(每天至少被一个用户产生过行为即为在线),相隔N天物品流行度的平均相似度,下降越快说明时效越强。

推荐如果缺乏时间多样性,用户的满意度会逐步下降,所以,即使没有发生用户新的行为,推荐系统也应当经常变化一下结果,加入一些随机性,并对之前看到的推荐物品进行适当降权,还可以轮换不同的推荐算法。

推荐算法还需要平衡用户的短期行为和长期行为,既体现短期变化,又有预测兴趣的延续性。只有经过多次的实验才能找到最佳力度的时间多样性。采用的模型可以是“最近最热门”(引入时间衰减参数),或者让用户很短时间内喜欢的物品之间拥有更高的相似度。比如昨天看过的电影,比上个月看过的电影,相似度统计价值大很多。

对于用户兴趣协同的算法,两个用户同一时期喜欢相同的物品,那兴趣相似度也应该更高。同理,我们也应该给用户推荐和他兴趣相似的用户最近喜欢的物品,比如给球迷用户推荐同一个球迷圈用户刚看过的新闻。

 

2 地点上下文。

有时间,就有地点。地点作为重要的空间特征,也是重要的上下文信息。用户在不同的地方兴趣可能也会不同。有些物品的空间属性很强,如餐厅,办公室,景点等,一个用户往往在附近地点活动,有些空间属性弱,比如文章,音乐,电影等。

我们可以发现不同地方的用户,兴趣差异比较大。比如对音乐个性化推荐而言,国家特征的影响远大于年龄,性别。基于位置的推荐就是把可能感兴趣的物品和用户的距离作为计算权重,注意这个距离是交通距离,不是直线距离。

 

六 利用社交网络

我们可以从这些地方获得用户社交信息:1 邮箱后缀就是隐性的社交关系,可以用来做社交用户的冷启动。2 用户注册信息,如在同一家公司或学校的用户。3 用户的位置信息。4论坛的讨论组。5 IM/SNS好友列表。

 

社交网络中用户的关注和被关注(或者称为入度和出度),是满足长尾分布的。

基于社交网络推荐,我们既要考虑两个用户之间的兴趣相似度,也要考虑两人的熟悉程度,因为越熟悉的朋友才会有越信任的关系。熟悉程度可以用两人的共同好友比例来评估。

在实际环境中,要实时拿到用户所有好友的历史行为数据,是非常困难的,我们可以只拿出用户相似度最高的少数好友来查询行为接口。另一个办法是为每个用户做一个消息队列,一旦有用户产生新的行为,其所有好友的消息队列就会记录该行为,当该用户访问推荐系统时,就根据最新消息队列重新计算推荐物品的权重。

因为社交网络推荐并不能提高预测准确性,而是根据好友推荐提升信任度,用户满意度也会高于文章前面介绍的协同过滤算法。

七 推荐系统的架构

所有的推荐系统基本都是由三个部分组成:前台展示页面,后台日志系统,推荐算法系统。因此,推荐系统要发挥大的作用,还依赖界面展示和用户行为数据。只有快速拿到大量用户的新行为,推荐系统才能实时地适应用户当前的需求,给出有效的实时推荐。

当用户加入后,推荐系统需要为用户生成特征,然后对每个特征找到相关的物品,从而生成推荐列表。用户的特征除了人口统计学特征外,还包括操作行为特征和话题兴趣特征。

一个推荐系统要完成的商业任务目标也会是多样的,可以是推荐最新产品,也可以是推荐商业广告,还可以是多样类型结果输出,也可以是根据上下文特征来推荐。统筹考虑各种特征和任务,会导致系统设计很复杂。因此我们可以用多个推荐引擎组合成推荐列表,按照一定的优先级规则,这样可以方便的增删,满足商业需求;也可以获取用户对于具体推荐引擎的偏好。

所谓推荐引擎,主要是提取用户的特征及其权重,获得初步的特征-物品相关推荐结果,然后根据商业产品需求对结果进行过滤(去掉不符合要求的,或低质量物品),按照一定的排序规则展示出来。

结尾:设计推荐系统的经验教训

用户遇到信息过载才需要推荐系统,你确定你的产品真的需要推荐系统么?

商业目标和用户满意度不一定一致,但是用户满意度一定符合企业的长期利益。

不用担心冷启动问题,互联网上有各种你需要的数据,另外,用户只要喜欢你,就会不断贡献数据。

使用正确的用户数据对推荐算法更重要,数据分析决定了如何设计模型,而算法只是努力优化模型。

找到相关物品很容易,但是如何展现给用户是很困难的,不应该为了推荐而推荐。

时刻关注推荐系统的性能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/12562.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于SSM的旅游景点购票管理系统

1、项目介绍 基于SSM的旅游景点购票管理系统拥有两种角色,管理员和用户 管理员:用户管理、景点管理、购票管理、酒店管理、客房管理、客房预订管理、轮播图管理等 用户:登录注册、景区购票、评论、预订客房、收藏、发布攻略等 2、项目技术…

App推广渠道追踪技术更新及应用

如今App推广渠道追踪对App厂商来说非常重要,因为App厂商需要通过渠道追踪来寻找成本最低的和价值最高的获客渠道。 但是现在线上渠道的选择五花八门,比如各种新闻门户网站、字节系平台、腾讯系平台等,那么到底该花多少钱去获取用户&#xff…

本地浏览器打开远程服务器上的Jupyter Notebook

文章目录一、配置过程二、其他需求后台运行Jupyter端口映射实验环境及需求:远程服务器配置了 Jupyter Notebook,本地电脑没有相关的环境,想要在服务器端启动 Jupyter Notebook,然后直接从本地浏览器打开进行操作。 一、配置过程 …

【百度AI_文字识别】示例身份证图片识别(代码官方文档完整,只需获得修改参数、下载类)

文章目录提取身份证信息第一步:登录第二步:获取资源第三步:获取access_token参数(AuthService.java)第四步:请求代码Idcard.java第五步:修改Idcard.java文件注意:返回错误提取身份证…

【跨境电商卖家】Instagram营销初学者指南(一):重要性、优势

关键词:跨境电商卖家、instagram营销 1.为什么 Instagram 营销对企业很重要? Instagram 是接触大量受众的完美渠道——每月有超过10 亿活跃用户。平均而言,用户每天在 Instagram 上花费 53 分钟,这使得该平台成为仅次于Facebook的…

微信网页支付小白指南-域内浏览器支付 + 外部浏览器支付

关于微信网页支付,分为微信域内浏览器支付 外部浏览器支付,两者还是稍微有点点区别的,内部浏览器即在微信内打开网页,进行支付,支付调用是需要开通JSAPI支付方式;而外部浏览器「比如浏览器等」则需要开通 …

Leetcode刷题day2|数组二|977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II

文章目录一、有序数组的平方错误的尝试思路注意AC代码暴力版本双指针方法二、长度最小的子数组错误的尝试思路滑动窗口介绍注意AC代码三、螺旋矩阵错误的尝试思路注意AC代码继承前边循环变量的写法不继承前边循环变量的做法四、数组做题思路总结基本知识解题思路一、有序数组的…

将爱心代码设为电脑屏保,俘获少女芳心,还能假装黑客,在酷炫的界面中保护隐私

本文介绍 Hacker Screen Saver 一款开源 Windows 屏保的使用。Hacker Screen Saver 是一款 .NET 设计的屏幕保护程序,可以显示 HTML 页面,你可以将黑客模拟器的网页,或者爱心代码网页设置为你的 Windows 电脑屏保。详细介绍了软件的使用和对应…

apritag 定位记录 C++ opencv 3.4.5

参考:2021-06-23 基于AprilTag的位姿估计,原理,完整代码(相机坐标系、世界坐标系) - 简书 Apriltag使用之二:方位估计(定位)_arczee的博客-CSDN博客_apriltag位姿估计 1.AprilTag概述 AprilTag是一种视觉…

Matlab:绘制日期时间

Matlab:绘制日期时间绘制日期时间数据指定坐标区范围指定刻度值指定刻度格式存储日期时间的坐标区属性导出和转换数据提示值绘制来自文件的日期时间数据此示例说明如何使用存储为 datetime 和 duration 数组的日期时间创建线图。datetime 数据类型表示时间点&#x…

Linux I/O 原理和 Zero-copy 技术全面分析

两万字长文从虚拟内存、I/O 缓冲区,用户态&内核态以及 I/O 模式等等知识点全面而又详尽地剖析 Linux 系统的 I/O 底层原理,分析了 Linux 传统的 I/O 模式的弊端,进而引入 Linux Zero-copy 零拷贝技术的介绍和原理解析,将零拷贝…

项目终于收尾了,第一次体验到专业项目管理软件的魅力

转眼到了年底,我跟进的项目也到了收尾阶段。之前陆陆续续给大家分享了入职新公司后,使用新引进的项目管理软件做项目的一些体会和心得,其中一些比较高效便捷的技巧和功能模块也引起了大家的兴趣。 最近刚好临近项目尾声,也给大家…

Maven的详解

在java中Maven就是一个包管理工具,在没有包管理工具时,我们要做一个java项目,需要第三方依赖包,将别人打包好的Jar包下载到本地,然后手动指定给项目.操作比较麻烦,比如版本控制,有的甚至还有其他包的依赖,属实是繁琐,技术是不断地迭代的,所以就出现了Maven,用了Maven之后,需要什…

安装nodejs的详细流程保姆级(踩了无数次坑)

node 简述: node的使用已经是前端选手基本的选择,其强大的功能甚至到了要和后端抢活干的地步,同时想要搭建个人的博客用node工具也是非常方便的,作为一名后端选上,刚开始准备下载node的时候是因为想要去搭建个人的博客,但是下载之后,使用npm install命令的时候一直报错,无奈找…

G1D14fraudgitpipenvdf操作APT论文RCE37-40服务器搭建

一、fraud 突然发现电脑上还没有python编译器,xswl,快装一下 (一)git操作 (二)git中分支的作用 (三)虚拟环境 1、pip install后的包一般放在哪里 lib/site-packages下 真的是欸&a…

LiveData

LiveData是一个抽象类,那么我们从简单的MutableLiiveData开始剖析,先看源码 源码太简洁了,就是继承LiveData,然后重写了父类的方法,并且没有多余的操作,都是直接使用父类方法里的逻辑,那我们就根…

安全防护的原则

电力行业 工控安全解决思路保障框架从电力行业对工控安全需求看,电力企业在主要是以合规性建设为主,在 2004 年原电监会 5 号令颁布开始,大部 分的电厂控制系统安全 建设已经按照 5 号令的要求进行了整改,形成“安全分区、网络专…

数电笔记总结(三)(逻辑门电路)

目录逻辑门基础逻辑门电路分立元件基本逻辑门电路TTL集成门电路(与非门)两种特殊门(重点)1.集电极开路门(OC门)2.三态门电路逻辑门基础 逻辑门电路 门电路:具有控制信号通过或不通过能力的电路…

某某桥的检测和加固设计

目录 某某大桥桥梁检测及加固设计报告 1 0 总论 2 0.1 检测目的 2 0.2 桥梁结构混凝土强度检测[1] 2 0.3 结构综合评定指标 4 0.4桥梁承载能力[3] 4 0.5 桥梁结构荷载试验 6 0.6 主要结果与结论 8 1某某大桥简介 11 1.1某某大桥简介 11 1.2 检测仪器与设备 15 2 外观检查与检测…

【跟学C++】C++STL标准模板库——算法整理(上)(Study18)

文章目录1、STL简介2、STL算法分类及常用函数2.1、非变序算法2.1.1 计数算法(2个)2.1.2 搜索算法(7个)2.1.3 比较算法(2个)3、总结 【说明】 大家好,本专栏主要是跟学C内容,自己学习了这位博主【 AI菌】的【C21天养成计划】,讲的十分清晰&am…