【推荐系统】什么是好的推荐系统?个性化和非个性化推荐

article/2025/7/1 10:33:53

推荐示例

最近在写一些关于推荐系统的介绍,找了不少案例及资料,总觉得不够具体及深入,没有一些可作为基础及科普类,于是萌生自己来写一篇试试。

定义:推荐系统是信息过滤系统的子类,旨在预测用户对产品或服务的“评分”或“偏好”。

在过去的几年中,无论国内或国际上各大公司在推荐系统上投入了大量资金。2009 年,Netflix 向一个开发团队颁发了 100 万美元的奖金,用于奖励其将公司推荐引擎的准确性提高 10% 的算法。

推荐系统主要有两种类型:个性化和非个性化。

推荐系统类型

一、非个性化推荐

非个性化推荐系统(如基于流行度的推荐器)向用户推荐最受欢迎的Item,例如前 10 部电影、最畅销的书籍、最常购买的产品。

什么是好的推荐?

  • 个性化的(与该用户相关)
  • 多样化的(包括不同的用户兴趣)
  • 第二次不向用户推荐相同商品的人
  • 推荐可用产品的一种

二、个性化推荐

个性化推荐系统更详细地分析用户数据、他们的购买、评分以及他们与其他用户的关系。这样,每个用户都将获得定制的推荐。

目前最流行的个性化推荐系统类型是基于内容和协同过滤。

1、基于内容

基于内容的推荐系统使用item或用户元数据来创建特定的推荐。观察用户的购买历史。例如,如果用户已经阅读了一位作者的书或购买了某个品牌的产品,则假定该客户偏好该作者或该品牌,并且用户有可能在未来购买该品牌类似产品。假设 小红喜欢科幻小说,而她最喜欢的作家是 刘慈欣。如果她读 刘慈欣的书,那么她推荐的书将是疯狂的外星人,也是刘慈欣 写的科幻书。

基于内容的推荐

实践中的协同过滤比基于内容的方法可实现更好的推荐结果。也许是因为结果的多样性不如协同过滤。

基于内容的推荐缺点:

  • 滤泡现象:如果用户阅读了一本关于某种政治意识形态的书籍,并且向他推荐了与该意识形态相关的书籍,那么他将处于“他先前兴趣的泡沫”中。
  • 需要收集有关用户及其偏好的大量数据以获得最佳推荐
  • 在实践中,有 20% 的商品吸引了 70-80% 的用户关注,而 70-80% 的商品吸引了 20% 的用户关注。推荐的目标是介绍其他用户第一眼看不到的产品。在基于内容的方法中,这个目标没有在协同过滤中实现。

2、协同过滤

协同过滤的思路很简单:利用用户组行为向其他用户进行推荐。由于推荐基于其他用户的偏好,因此称为协作。

协同过滤有两种类型:基于内存的和基于模型的。

2.1 基于内存

基于内存的技术无需预处理即可应用于原始数据。它们易于实施,由此产生的建议通常易于解释。每次都需要对所有推荐的数据进行预测。

有两种类型:基于用户和基于Item的协同过滤。

  • 基于用户:“与你相似的用户也喜欢……”产品是根据与观察到的用户相似的用户购买/喜欢的推荐给用户的。如果我们说用户相似,那是什么意思?例如,小明和小红喜欢科幻书籍。当一本新的科幻书出现时,小明买了那本书,因为小红也喜欢科幻书,那么我们可以向小红也推荐小明购买的书。

基于用户的协同过滤推荐系统

  • 基于Item:“喜欢这个产品的用户也喜欢…”如果小明、小红和小花对科幻书籍 《时间简史》 和 《时间机器》 给予高度评价,例如给 5 星,那么当 小红购买 《时间简史》 这本书时,那么《时间机器》这本书也被推荐给他,因为系统根据用户评分将书籍识别为相似。

基于Item的协同过滤推荐系统

如何计算用户-用户和Item-Item相似度?

与使用关于用户或Item的元数据的基于内容的方法不同,基于协同过滤的方法观察并记忆用户行为,例如用户是否喜欢或Item是否被某个用户喜欢或评价。

例如,这个想法是向小明推荐新的科幻小说。

步骤:

  1. 创建用户Item评分矩阵

  2. 创建用户-用户相似度矩阵 (以下是示例)

  • 计算每两个用户之间的余弦相似度(替代方案:调整余弦相似度、皮尔逊相似度、斯皮尔曼等级相关性)。这样就得到了一个用户-用户矩阵。该矩阵小于初始用户Item评分矩阵。

余弦相似度

  1. 查找相似用户
  • 在用户-用户矩阵中,观察到与小明最相似的用户
  1. 候选生成
  • 当找到小明最相似的用户时,我们会查看这些用户阅读的书籍以及他们给出的评分。
  1. 候选人评分
  • 根据评分,从小明最相似的用户最喜欢的书籍到他们最不喜欢的书籍进行排名。
  • 结果被归一化(从 0 到 1)
  1. 候选过滤
  • 正在检查小明是否已经购买了这些书。那些书应该被淘汰,因为他已经读过了。

Item相似度的计算以相同的方式完成,并且具有与用户-用户相似度相同的步骤。

基于用户和基于Item的方法的比较

Item之间的相似度比用户之间的相似度更稳定,因为数学书永远是一本数学书,但用户可以改变主意,例如他上周喜欢的东西下周可能不喜欢。另一个优点是产品比用户少。这导致得出的结论是,具有相似性分Item-Item矩阵将小于用户-用户矩阵。如果新用户访问该站点,而基于用户的方法在这种情况下是存在的,那么基于Item的方法也是一种更好的方法。

2.2 基于模型

这些模型是使用机器学习算法开发的。创建一个模型并基于它提供推荐候选结果,从而加快系统的工作。这种方法有更好的可扩展性。这种方法经常使用降维,最著名的方案是矩阵分解。

矩阵分解

如果有来自用户的反馈,例如,用户观看了特定的电影或阅读了特定的书并给出了评分,则可以以矩阵的形式表示,其中每行代表特定用户,每列代表一个特定Item。由于用户几乎不可能对每一个Item进行评分,因此该矩阵将有许多未填充的值,这称为稀疏性。矩阵分解方法用于找到一组潜在因素并使用这些因素确定用户偏好。可以通过分析用户行为来评价潜在信息,潜在因素也称为特征。

为什么要分解?

评分矩阵是两个较小矩阵的乘积:Item特征矩阵和用户特征矩阵。 
矩阵分解

矩阵分解步骤:

  1. 随机用户和Item矩阵的初始化

  2. Ratings矩阵由用户乘以转置的item矩阵得到

  3. 矩阵分解的目标是最小化损失函数(预测矩阵和实际矩阵的评级差异必须最小)。每个评分可以描述为用户矩阵中的行和Item矩阵中的列的点积。
    最小化损失函数

 其中 K 是一组 (u,i) 对,r(u,i) 是用户 uItem项目 i 的评分,λ 是正则化项(用于避免过度拟合)。
  1. 为了最小化损失函数,我们可以应用随机梯度下降(SGD)或交替最小二乘法(ALS)。这两种方法都可用于随着新评级的出现而增量更新模型。SGD 比 ALS 更快、更准确。

3、混合推荐

混合推荐代表不同推荐者的组合。一般是几个不同推荐器的组合将比单个算法提供更好的结果,实际上大多公司都是使用混合推荐

4、推荐系统指标

将使用哪些指标取决于要解决的业务指标。如果我们认为我们已经做出了最好的推荐方案并且指标很好,但在实践中它很不理想,那么我们的推荐方案就是不理想的。最重要的是用户对推荐系统要有信心,使用推荐系统的结果。如果我们向他推荐前 10 个产品,而只有 2 或 3 个与他相关,用户会认为推荐系统不好。出于这个原因,我们的想法不是总是推荐前 10 个Item,而是推荐超过某个阈值的Item项目。

指标:

  • 准确度(MAE、RMSE)

  • 测量前 N 个推荐人

    • 命中率:首先在训练数据中找到该用户历史中的所有Item;删除其中一项(交叉验证);使用所有Item作为推荐者并找到前 10 条推荐;如Item出现在前 10 条推荐中,则它是成功的。如果没有,它是不理想的。
    • 平均互惠命中率(ARHR):我们推荐用户在排名中排名靠前的Item比排名靠Item更多。
    • 累积命中率:那些低于某个阈值的评分被拒绝,例如低于 4 的评分
    • 评分命中率- 计算每个item的评分,以确定哪种评分获得更多点击。将 top-N 列表中每种评分的命中数相加,然后除以 top-N 列表中每个评分的Item总数。
  • 在线 A/B 测试:A/B 测试是对推荐系统进行在线评估的最佳方式。

推荐系统实际使用中的挑战

  • 冷启动问题:出现了新用户,推荐什么?

    • 例如前 10 名最畅销的产品

    • 10大促销产品

    • 可以采访用户以了解他喜欢什么

  • 新用户出现了,新产品如何被用户认可?

    • 使用基于内容的属性

    • 随机添加新产品到用户推荐

    • 推广新产品

  • 行为搅动

    • 由于用户随时间改变行为,一定量的随机化应该是推荐系统的一部分,以刷新推荐Item的前 N 个列表
  • 注意不要对用户进行任何形式的区别对待

  • 避免推荐结果包含粗俗词语、宗教和政治话题或毒品的商品


http://chatgpt.dhexx.cn/article/giXBvrer.shtml

相关文章

个性推荐①——系统总结个性化推荐系统

个性推荐系列目录: 个性推荐②—基于用户协同过滤算法原及优化方案 个性推荐③—基于物品的协同过滤算法及优化方案 本文是整理于个性推荐经典之作《推荐系统实战》,将会以十个大家最想问的问题,揭开个性化推荐系统的神秘面纱(文…

个性化推荐算法(推荐系统)概要

读者读完本文后,你会知道每类范式常用的算法有哪些、实现的思路是什么、以及常用的应用场景。本文也可以作为读者落地推荐算法到真实推荐场景的参考指南。 一、推荐算法与产品介绍 什么是推荐系统? 在介绍推荐算法之前需要先介绍一下什么是信息过载。…

深度解析京东个性化推荐系统

向AI转型的程序员都关注了这个号👇👇👇 人工智能大数据与深度学习 公众号:datayx 作者简介: fisherman,时任推荐部门推荐系统负责人,负责推荐部门的架构设计及相关研发工作。Davidxiaozhi&…

个性化推荐系统实践

个性化推荐已经成为现代人们生活的一部分, “猜你喜欢”、“相关阅读”你一定并不陌生。计算机如何做到对用户投其所好?企业在做个性化推荐时要如何精准把握用户兴趣?如何解决冷启动问题?如何避免推荐结果的单调与重复&#xff1f…

Scratch Paper Minecraft

Paper Minecraft Scratch 也能创造奇迹 几乎还原了Paper Minecraft,我的世界2D版。| o | 注:文章末尾有下载链接。❤

指纹传感器和Blackfin处理器增强了生物识别设备的设计

生物识别与安全 在当今世界,对有效安全实施和有效实施的需求日益明显。必须确定个人身份以允许或禁止访问安全区域,或使他们能够使用计算机,个人数字助理(PDA)或移动电话。生物特征签名或生物特征用于通过测量某些独特…

js学到什么程度学框架_如何学到什么

js学到什么程度学框架 Set a target, learn just enough to hit it, teach someone, repeat. 设定目标,学习足以达到目标的目标,教某人,然后重复。 JavaScript’s my craft. JavaScript是我的技能。 Despite my young career, no other ski…

java开发简单解释器,实现一个简单的解释器(5)

你如何处理和了解像创建解释器或编译器这样复杂的事情?在开始时,一切看上去都像是一团乱七八糟的纱线,你需要解开缠结才能得到完美的球。 到达那里的方法是将它解开一个线,一次解开一个结。不过有时候,你可能会觉得自己…

【“笨办法”学Python】43.基本的面向对象分析和设计——自顶向下、自底向上

43.基本的面向对象分析和设计 文章目录 前言一、解决问题的方法——流程1、自顶向下(top down)2、自底向上 二、代码示例三、运行Python程序总结 前言 使用Python,尤其是通过面向对象编程(OOP)方式构建一些东西的流程。 一、解决问题的方法——流程 所谓按照流程就是…

5大代码规则,守护程序猿世界的爱与和平!

全文共2878字,预计学习时长9分钟 图源:Unsplash 编码规则是程序编码所要遵循的规则,要注意代码的正确性、稳定性、可读性。 而对于这些条条框框,一些不拘小节的程序猿们往往并不在意,这导致常常会发生一些意想不到的问题和状况,让大家苦恼不已。 现在,小芯整理了一份…

【AI产品】认猫、认花、认车、认吃,请认准识别全能王

欢迎来到《AI产品》专栏,本专栏面向所有热爱人工智能技术的朋友、同学。在本专栏中,会多多分享给大家不同种类的且新奇有趣的AI产品,对产品中的核心技术进行深度剖析。文章底部会推荐相关核心技术学习资料,全部原创! 请…

【杂谈】什么文章可以给有三AI投稿?你能得到什么

我们公众号的风格是做系统性的原创,除了一些资源类的东西,大多数是专栏,大部分是有三本人在写,还有一些是其他的专栏作者,那么现在有哪些专栏可以自由投稿,新手也可以来练练手呢,今天就来汇总一…

听声音做钥匙?!慢放开锁音轨,黑客就能破解常用门锁

作者|牛婉杨 出品|大数据文摘 你熟悉的黑客是不是这样的?比如上个月,黑客造成推特史上最严重的安全事故,马斯克奥巴马等多位大V账号被黑;或者像8月初英特尔的那起数据泄露事故,足足20GB数据被黑…

【AI产品】爱做短视频的你,真的很需要一款配音软件

欢迎来到《AI产品》专栏,本专栏面向所有热爱人工智能技术的朋友、同学。在本专栏中,会多多分享给大家不同种类的且新奇有趣的AI产品,对产品中的核心技术进行深度剖析。文章底部会推荐相关核心技术学习资料,全部原创! 请…

怎样设计宝藏游戏_宝藏! 免费的移动设计资源

怎样设计宝藏游戏 Being a designer usually requires staying in the know of resources that you could use to get better at your craft as well as resources you could use in your work. 成为设计师通常需要了解可以用来提高自己的Craft.io水平的资源以及可以在工作中使…

webaudio_WebAudio Deep Note,第5部分:增益节点

webaudio Previously on "Deep Note via WebAudio": 以前在“通过WebAudio进行深度注释”中: intro 介绍play a sound 播放声音 2.1. boots and cats2.1。 靴子和猫play a sound 播放声音 loop and change pitch循环并改变音高multiple sounds多种声音no…

web audio api_带有Web Audio API的动态声音

web audio api This article is part of a web dev series from Microsoft. Thank you for supporting the partners who make SitePoint possible. 本文是Microsoft的Web开发系列的一部分。 感谢您支持使SitePoint成为可能的合作伙伴。 Before the Web Audio API, HTML5 gave…

Apache Spark【从无到有从有到无】【编程指南】【AS5】结构化流编程指南

目录 1.概观 2.快速示例 3.编程模型 3.1.基本概念 3.2.处理事件时间和延迟数据 3.3.容错语义 4.使用数据集和数据框架的API 4.1.创建streaming DataFrames 和 streaming Datasets 4.1.1.输入源(Input Sources) 4.1.2.流式数据帧/数据集&#x…

王者荣耀scratch版

现在,防沉迷使我每周都玩不了王者了,不对,不是周5,6,7,八点到九点能玩吗,偶不,那时候我正在上课。。。。。。 现在我,正式想你介绍“Scrach版王者荣耀”!&…

编程斐波那契数列_通过斐波那契序列记忆和制表法进行动态编程的简介

编程斐波那契数列 Lately I have been studying algorithms and data structures while trying to prepare for technical interviews. Some of it comes easier than the rest, but I always enjoy a good challenge. I love the whiteboard problems that feel like a puzzle…