基于内容的个性化推荐算法

news2025/7/20 17:19:52

一、什么是推荐算法

随着移动互联网的高速发展与智能手机的普及,海量的有用信息虽然为人们提供了更多的价值,然而信息的泛滥也意味着为了寻找合适的信息必须付出更多的时间成本。事实上,有时候仅仅是浏览和简单的查询来寻找有用的信息变得相当困难,在某种程度上过量的信息意味着信息缺乏,因此就需要某种工具来迅速帮自己找到所需要的信息,防止“信息过载”造成的影响。
在这里插入图片描述
为了更好地解决“信息过载”的问题,个性化推荐系统应运而生。随着推荐算法越来越成熟,现已经被广泛的应用到各种短视频平台、社交网络、电子商务、个性化音乐、个性化阅读等。
在这里插入图片描述
推荐系统本质上就是解决信息过载问题和用户无目的搜索问题,搜索引擎满足了用户有明确目的时的主动查找需求,而推荐系统能够在用户没有明确目的的时候帮助他们发现感兴趣的新内容。推荐系统的任务是联系用户和信息,一方面推荐系统能够帮助用户更好的获取到对自己有价值的信息,另一方面它能够让信息更好更快的推送到在对它感兴趣的用户手中,从而实现信息消费者和信息生产者的双赢。
在这里插入图片描述
关于推荐算法的都市传说 “啤酒与尿布” ,年轻爸爸去超市购买尿布时,经常会买点啤酒犒劳自己。因此,沃尔玛将这两种商品进行了捆绑销售,最终获得了更好的销量。

二、基于内容的推荐算法

基于内容的推荐算法是最早被应用到工业环境的推荐算法,到目前为止,基于内容的推荐算法大体可以分为四类,就是基于内容热度、内容标签、关联规则、情境感知。

1. 内容热度

基于热度的推荐算法原理是根据内容的互动数据,计算出当下热度最高的内容,并推荐给用户,计算内容热度的维度可以是时间、内容、访问量,用户对内容的评分的维度等。
计算原理:
内容热度分 = 初始热度分 + 用户交互产生的热度分 – 随时间衰减的热度分
比如百度热搜、微博热搜就是典型的基于热度推荐,它是在当前时间维度的基础上,根据内容的搜索访问量得出实时的最热榜单。
在这里插入图片描述
此外,一些影评类、视频类网站也会使用热榜来给用户进行推荐,像豆瓣电影就会按评分得出好评榜单。这种推荐算法的优点在于不依赖用户的历史数据,对新用户也可以进行推荐。甚至可以通过一些高质量榜单吸引新用户,比如短视频类APP、娱乐类信息类网站会给新用户推送时下热度最高的内容,可以大概率满足用户需求,提高新用户的留存率。

其次,对于一些应用来说,不断更新的热点能够维持老用户的活跃度。老用户可以高效的获取头部内容,比如吃瓜群众第一时间在微博、豆瓣上看娱乐八卦。而基于热度推荐的缺点则是热度高的内容,不一定质量高,就像微博明星热搜,很多时候是粉丝或背后的公关团队花钱买的。比如国内某流量明星一晚上60次热搜被被质疑数据造假。
在这里插入图片描述
某流量明星的热搜
此外基于热度的推荐,所推荐的都是一些大众化的内容,很难满足用户的个性化需求,某些用户喜欢的一些小众内容往往无法呈现给用户。

2. 内容标签

基于内容标签推荐是根据内容的特征打上对应的标签,将同一标签下的不同物品推荐给用户。这里所说的推荐相似物品并不依赖于用户的历史数据,仅仅是与物品本身的标签相似度有关。当新用户注册应用后,选取感兴趣的关注标签,系统可自动推送筛选。
在这里插入图片描述
推荐标签

例如当你开始注册豆瓣读书时,它会让你选自己感兴趣的单个或者多个标签,注册完成后登录,它就可以给你推荐与标签相关的内容。我注册时选取了神经网络这个标签,它会在我第一次登录给我推荐相关的书籍与专栏,而不需要我的历史阅读兴趣数据。
在这里插入图片描述
推荐内容
此外,在基于内容标签方面,还有基于知识的推荐例子。知乎在给用户推荐同一领域的文章时,是根据文章中知识本身所属领域的标签,而不取决于用户的历史平衡数据。
基于内容标签的推荐算法,优点是可以解决冷启动问题,不会过度依赖用户的历史数据,就算是新内容,也能有被推荐的机会。缺点是推荐内容的质量取决于标签的准确性,如果内容的标签不准确,那么相应的推荐也就无法很好的满足用户需求。其次,由于标签缺少用户反馈,这就导致标签的准确性难以得到优化提升。

3.关联规则

基于关联规则进行推荐,这是一种转化率比较高的推荐算法。从历史数据中挖掘关联规则,找出X事件与Y事件的关联,当X事件发生后,Y事件会有一定概率发生,这个概率是通过历史数据统计而来。关联规则的目的在于在一个数据集中找出项目与项目之间的关系。
在这里插入图片描述
关联规则

例如,关注人工智能与机器学习的用户,那么他很大可能会使用到高算力GPU或者或者是人工智能训练场景的服务器。
在这里插入图片描述
算力对算法发展的影响
基于关联规则给用户推荐的内容往往更有可能满足用户需求。除了转化率高这些优点,这种推荐算法还能够发现用户的新兴趣点,挖掘出用户的潜在需求。但是挖掘关联规则需要大量的数据做支撑,会出现冷启动的问题,而且在实际应用中,一些热门的项目关联度往往较高,容易被过度推荐。

4.情境感知

基于情境感知的推荐算法是指用户在进入应用时所处的时间、地点、日期、心情等情境。比如说你下午在家想点个外卖吃,那么打开外卖app后,系统会考量所在的地理位置,当前日期,以往的消费水平等,来进行一个综合的推荐。对于当前时间是下午,系统给你推荐的可能会是甜点、奶茶之类的下午茶食物,而不会是豆浆、油条之类的一般作为早餐的食物。而基于地点的推荐,体现在系统给你推荐商家的时候,往往是附近的商家,而不会推荐十公里以外的食物。毕竟太远的距离,当外卖送到你手里时,都不能食用了。
在这里插入图片描述
这种基于情境感知的推荐算法,优点在于实时性。比如虽然你在淘宝有过夏装的购物历史,但系统也不会在双十一时给你推荐夏装。很多时候,用户的兴趣还可能会随时间变化而变化,当用户大学时期喜欢购买文学类书籍,但工作后可能更多购买专业书籍,人早上起来喜欢关注一些新闻类的内容,而在晚上睡觉喜欢关注一些娱乐内的内容。情境感知推荐算法的多样性,则能够在不同时间段推荐不同的内容,更加灵活的满足用户需求。但其缺点是推荐范围比较窄,受到情境的影响,一些内容无法推荐给用户,并且在多维度情境下,内容匹配度的计算比较复杂,还存在冷启动的问题。还有如果用户不授权应用获取个人相关的一些信息,则无法根据情境进行精准推荐。

5.算法利癖

在实际情况中,为了突破单一算法的应用局限,往往会选择多种算法组合使用,这样能够取长补短,从而达到更好的推荐效果。常见的组合方式有加权、变化、混合、特征组合、特征扩充、元级别等组合方式。
一个好的推荐系统往往要具备以下两个特点,一、信息丰富:在这个内容为王的时代,信息是一切的基础,只有丰富的信息物库才能尽可能地满足不同用户的需求。二、推荐精准:用户能够快速地找到所需要的信息及更加懂用户潜在需求。在给用户提供精准推荐的同时,又要避免用户掉入“信息茧房”里面。

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

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

相关文章

「强烈收藏」Python第三方库资源大全,1000+工具包

前言 awesome-python 是 vinta 发起维护的 Python 资源列表,内容包括:Web 框架、网络爬虫、网络内容提取、模板引擎、数据库、数据可视化、图片处理、文本处理、自然语言处理、机器学习、日志、代码分析等。 (文末送读者福利) …

超全!程序员必备的20个学习网站,看这一篇就够了!

之前一直想出个程序员学习清单,终于腾出时间弄出来了,也趁此机会整理了收藏夹。 此篇对于新手程序员比较有用,技术老鸟们也可以查缺补漏。 话不多说,纯纯干货呈上,赶紧点个赞收藏,以后会用得上!…

CMake中include_directories的使用

CMake中include_directories命令用于在构建(build)中添加包含目录,其格式如下: include_directories([AFTER|BEFORE] [SYSTEM] dir1 [dir2 ...]) 将给定的目录添加到编译器(compiler)用于搜索包含文件的目录。相对路径被解释为相对于当前源目录。 包含目录被添加到当前C…

【网络】tcpdump、Wireshark 案例超详细介绍

文章目录网络分层应用层找到服务器的 IP查接口、对象的耗时删除指定网站的Cookie表示层、会话层tcpdump、wireshard传输层telnet: 路径可达性测试nc: 路径可达性测试netstat:查看当前连接状态iftop:查看当前连接的传输速率netstat -s: 查看丢包和乱序的统…

万字 HashMap 详解,基础(优雅)永不过时

本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 提问。 前言 大家好,我是小彭。 在上一篇文章里,我们聊到了散列表的整体设计思想,在后续几篇文章里,我们将以 Java 语言为例&#xff…

【王道计算机组成原理Note】5.5 指令流水线

5 指令流水线 5.1 指令流水的定义 一条指令的执行过程可以分成多个阶段(或过程)。根据计算机的不同,具体的分法也不同。 取指:根据Pc内容访问主存储器,取出一条指令送到IR中。分析:对指令操作码进行译码,按照给定的寻…

Visio 安装暴雷记录

Visio 安装记录起因: office2016家庭学生版中,安装visio2021后,插入word的vsdx图形右键显示unkown类型,无法识别,给学习工作带来很多麻烦!   搜查一圈没找到对应可用的方法,想着可能是visio20…

MobPush for Flutter

集成准备 这是一个基于 MobPush 功能的扩展的 Flutter 插件。使用此插件能够帮助您在使用 Flutter 开发应用时,快速地实现推送功能。 在pubspec.yaml文件中加入下面依赖 dependencies:mobcommonlib:mobpush_plugin: 然后执行:flutter packages get 导…

倍增(小试牛刀)

二分每次折半,倍增每次2的倍数 原理先存储每个小区间的最值也就是初始化,之后直接查询 1. 把数列按倍增分成小区间 对数列的每个元素,把从它开始的数列分成长度为1、2、4、8、…的小区间。下图给出了一个分区的例子,它按小区间…

java--JVM

JVM1.JVM的内存结构2.哪些部分会出现内存溢出3.方法区与永久代、元空间之间的关系4.JVM内存参数5.JVM垃圾回收算法(1)标记清除(2)标记整理(3)标记复制6.GC和分代回收算法7.三色标记和并发漏标问题8.垃圾回收…

【分布式技术专题】「Zookeeper中间件」给大家学习一下Zookeeper的”开发伴侣”—Curator-Framework(基础篇)

CuratorFramework基本介绍 CuratorFramework是Netflix公司开源的一套Zookeeper客户端框架,它作为一款优秀的ZooKeeper客户端开源工具,主要提供了对客户端到服务的连接管理和连接重试机制,以及一些扩展功能,它解决了很多ZooKeeper…

Linux服务器配置与管理(基于Centos7.2)任务目标(四)

文章目录一、任务目标二、任务资讯三、任务实施3-1.RPM软件包管理3-2.YUM方式安装软件一、任务目标 实施该工单的任务目标如下: 知识目标 1.了解RPM提供的功能。 2.了解YUM相对于RPM所具有的优点。 能力目标 1.能够通过RPM安装及管理软件包。 2.能够通过YUM安装及管…

uni-app —— 小程序加入购物车实现过程

文章目录 前言一、示意图二、整体实现思路三、实现过程 1.加入购物车2.获取当前用户购物车信息3.解决数据获取不及时的问题总结前言 前文已经讲解了如何实现商品规格的选择,那么接下来就应该将用户选中的商品加入购物车啦!那么如何实现呢?请…

[附源码]计算机毕业设计JAVA儒家文化网站

[附源码]计算机毕业设计JAVA儒家文化网站 项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis M…

FilterListenerAjax的介绍

目录 一、Filter 1、Filter概述 2、过滤器链 二、Listener 三、Ajax 1、基本介绍 2、快速入门案例 3、axios 4、JSON 一、Filter 1、Filter概述 ▶ 过滤器 Filter 表示过滤器,是 JavaWeb 三大组件(Servlet、Filter、Listener)之一。过滤器可以把对资源的请…

Centos--基于Jdk1.8环境安装+卸载Jenkins

基础准备 本人选择的安装的环境基于jdk1.8 操作系统:Centos7.9 java: 1.8.0_262 检查是否有旧版本 $rpm -ql jenkins 如果有老版本可以卸载后,再执行后面的安装步骤 卸载 jenkins $rpm -e jenkins —删除遗留文件: $find / -iname jenkins | xa…

【Lilishop商城】No2-4.确定软件架构搭建三(本篇包括ES检索)

仅涉及后端,全部目录看顶部专栏,代码、文档、接口路径在: 【Lilishop商城】记录一下B2B2C商城系统学习笔记~_清晨敲代码的博客-CSDN博客 全篇只介绍重点架构逻辑,具体编写看源代码就行,读起来也不复杂~ 谨慎&#xff…

windows文本绘制 TextOut、DrawText、CreateFont、SetTextColor、SetBkColor、SetBkMode

文本绘制 TextOut-将文字绘制在指定坐标位置 DrawText-在矩形区域绘制字符串 int DrawText(HDC hdc, //DC句柄LPCSTR lpString, //字符串int nCount, //字符串长度LPRECT lpRect, //绘制文字的矩形框UINT uFormat //绘制的方式,重点,花样繁多的关键点 );绘制文字样…

持续集成和上传源码

1.测试左移,测试右移 2.持续集成 是指通过自动化的方式,频繁多次将代码集成到主干。 快速发现错误 每完成一点更新,就集成到主干,可以快速发现错误,定位错误也比较容易。 防止分支大幅偏离主干 如果不是经常集成&…

nginx源码分析--双端列表

1.基本数据结构 struct ngx_queue_s {ngx_queue_t *prev;ngx_queue_t *next; };结构成员: ngx_queue_t *prev;前驱指针 ngx_queue_t *next;后继指针 2.操作函数--头结点 2.1基本函数 define ngx_queue_init(q) \(…