推荐算法入门alexanderkun

为推荐系统选择正确的推荐算法非常重要,而可用的算法很多,想要找到最适合所处理问题的算法还是很有难度的。这些算法每种都各有优劣,也各有局限,因此在作出决策前我们应当对其做以衡量。在实践中,我们很可能需要测试多种算法,以便找出最适合用户的那种;了解这些算法的概念以及工作原理,对它们有个直观印象将会很有帮助。

主要的推荐算法系列有四个(表格1-4):

此外,还有很多高级或非传统的方式,可参见表格5。

表格一:协同过滤推荐算法概览

表格二:基于内容过滤的推荐算法概览

表格三:混合方式的推荐算法概览

表格四:流行度推荐算法概览

表格五:高级或“非传统”推荐算法概览

本文是系列文中的第二篇,将会列出推荐算法的备忘列表,介绍推荐算法的主要分类。在本文中,我们会更详细地介绍协同过滤推荐算法,并讨论其优劣,以便大家更深刻地理解其工作原理。

基于邻域的协同过滤则着眼于物品之间的关系(即基于物品的协同过滤)或者用户之间的关系(基于用户的协同过滤)。

首先,在执行基于物品的协同过滤前,我们先看一个基于用户的协同过滤案例。假设我们有一些用户已经表达了他们对某些书籍的偏好,他们越喜欢某本书,对这本书的评分也越高(评分范围是1分到5分)。我们可以在一个矩阵中重现他们的这种偏好,用行代表用户,用列代表书籍。

在基于用户的协同过滤算法中,我们要做的第一件事就是根据用户对书籍的偏好,计算出他们彼此间的相似度。我们从某个单独用户的角度来看一下这个问题,以图一中第一行的用户为例。通常我们会将每个用户都作为向量(或者数组),其中包含了用户对物品的偏好。通过多种类似的指标对用户进行对比是相当直接的。在本例中,我们会使用余弦相似点。我们将第一位用户与其他五位相对比,可以发现第一位与其他用户的相似度有多少(图二)。就像大多相似度指标一样,向量之间的相似度越高,彼此也就越相似。在本例中,第一位用户与其中两位有两本相同的书籍,相似度较高;与另两位只有一本相同书籍,相似度较低;与最后一位没有相同书籍,相似度为零。

更常见的情况下,我们可以计算出每名用户与所有用户的相似程度,并在相似性矩阵中表现出来(图三)。这是一个对称矩阵,也就是说其中一些有用的属性是可以执行数学函数运算的。单元格的背景色表明了用户彼此间的相似程度,红色越深则相似度越高。

现在,我们准备使用基于用户的协同过滤来生成给用户的推荐。对于特定的用户来说,这代表着找出与其相似性最高的用户,并根据这些类似用户喜爱的物品进行推荐,具体要参照用户相似程度来加权。我们先以第一个用户为例,为其生成一些推荐。首先我们找到与这名用户相似程度最高的n名用户,删除这名用户已经喜欢过的书籍,再对最相似用户阅读过的书籍进行加权,之后将所有结果加在一起。在本例中,我们假设n=2,也就是说取两名与第一位用户最相似的用户,以生成推荐结果,这两名用户分别是用户2及用户3(图四)。由于第一名用户已经对书籍1和书籍5做出了评分,推荐结果生成书籍3(分数4.5)及书籍4(分数3)。

现在我们对基于用户的协同过滤有了更深刻的理解,之后来看一个基于物品的协同过滤的案例。我们还是用同一组用户(图一)为例。

在基于物品的协同过滤中,与基于用户的协同过滤类似,我们要做的第一件事就是计算相似度矩阵。但这一回,我们想要针对物品而非用户来看看它们之间的相似性。与之前类似,我们以书籍作为喜爱者的向量(或数组),将其与余弦相似度函数相对比,从而揭示出某本书籍与其他书籍之间的相似程度。由于同一组用户给出的评分大致类似,位于列1的第一本书与位于列5的第五本书相似度是最高的(图五)。其次是相似度排名第三的书籍,有两位相同的用户喜爱;排名第四和第二的书籍只有一位共同读者;而排名最后的书籍由于没有共同读者,相似度为零。

我们还可以在相似矩阵中展示出所有书籍彼此间的相似程度(图六)。同样以背景颜色区分了两本书彼此间的相似程度,红色越深相似程度也越高。

根据上述描述,基于用户与基于物品的协同过滤似乎非常类似,因此能得出不同的结果这一点确实很有意思。即便在上例中,这两种方式都能为同一名用户得出不同的推荐结果,尽管两者的输入内容是相同的。在构建推荐时,这两种形式的协同过滤方式都是值得考虑的。尽管在向外行描述时,这两种方法看起来非常类似,但实际上它们能得出非常不同的推荐结果,从而为用户带来完全不同的体验。

基于模型的协同过滤方式可以克服基于邻域方法的限制。与使用用户-物品评分直接预测新物品评分的邻域方式不同,基于模型的方法则使用评分来研究预测性模型,并根据模型来预测新物品。大致理念就是通过机器学习算法,在数据中找出模式,并将用户与物品间的互动方式模式化。总体来讲,基于模型的协同过滤方式是构建协同过滤更高级的算法。很多不同的算法都能用来构建模型,以进行预测;例如贝叶斯网络、集群、分类、回归、矩阵因式分解、受限波尔兹曼机等,这些技术其中有些在获得NetflixPrize奖项时起到了关键性作用。Netflix在2006年到2009年间举办竞赛,当时还为能够生成准确度超过其系统10%的推荐系统制作团队提供100万美元的大奖。胜出的解决方案是一套综合了逾100种不同算法模型,并在生产环境中采用了矩阵因式分解与受限玻尔兹曼机的方法。

矩阵因式分解(比如奇异值分解、SVD++)将物品与用户都转化为同一个隐空间,表现了用户与物品间的底层互动(图八)。矩阵因式分解背后的原理在于:其潜在特性代表了用户如何对物品进行评分。根据用户与物品的潜在表现,我们就可以预测用户对未评分的物品的喜爱程度。

基于内容的过滤算法会推荐与用户最喜欢的物品类似的那些。但是,与协同过滤算法不同,这种算法是根据内容(比如标题、年份、描述),而不是人们使用物品的方式来总结其类似程度的。例如,如果某个用户喜欢电影《魔戒》的第一部和第二部,那么推荐系统会通过标题关键字向用户推荐《魔戒》的第三部。在基于内容的过滤算法中,会假设每个物品都有足够的描述信息可作为特征向量(y)(比如标题、年代、描述),而这些特征向量会被用来创建用户偏好模型。各种信息检索(比如tf-idf)以及机器学习技术(比如朴素贝叶斯算法、支持向量机、决策树等)都可用于生成用户模型,之后再根据模型来进行推荐。

假设我们有一些用户已经表达了他们对某些书籍的偏好,他们越喜欢某本书,对这本书的评分也越高(评分范围是1分到5分)。我们可以在一个矩阵中重现他们的这种偏好,用行代表用户,用列代表书籍。

在基于内容的协同过滤算法中,我们要做的第一件事就是根据内容,计算出书籍之间的相似度。在本例中,我们使用了书籍标题中的关键字(图二),这只是为了简化而已。在实际中我们还可以使用更多的属性。

有了这个表格,我们就可以使用各种相似指标直接对比各本书籍。在本例中,我们会使用余弦相似点。当我们使用第一本书籍,将其与其他五本书籍对比时,就能看到第一本书籍与其他书籍的相似程度(图四)。就像大多相似度指标一样,向量之间的相似度越高,彼此也就越相似。在本例中,第一本书与其他三本书都很类似,都有两个共同的词汇(推荐和系统)。而标题越短,两本书的相似程度越高,这也在情理之中,因为这样一来,不相同的词汇也就越少。鉴于完全没有共同词汇,第一本书与其他书籍中的两本完全没有类似的地方。

我们还可以在相似矩阵中展示出所有书籍彼此间的相似程度(图五)。单元格的背景色表明了用户彼此间的相似程度,红色越深相似度越高。

基于内容的算法解决了协同过滤算法的某些限制,尤其能协助我们克服流行度偏见,以及新物品的冷启动问题,而这些我们已经在协同过滤的部分中讨论过了。然而,值得注意的是:纯粹基于内容的推荐系统通常在执行时效果不如那些基于使用数据的系统(比如协同过滤算法)。基于内容过滤的算法也会有过度专业化的问题,系统可能会向用户推荐过多相同类型的物品(比如获得所有《魔戒》电影的推荐),而不会推荐那些虽然类型不同,但是用户也感兴趣的物品。最后,基于内容的算法在实现时只会使用物品元数据中所含的词汇(比如标题、描述年份),更容易推荐更多相同的内容,限制了用户探索发现这些词汇之外的内容。关于基于内容过滤的优劣总结见表二。

混合算法结合了用户及物品的内容特性以及使用数据,以利用这两类数据的优点。结合了A算法与B算法的某个混合型推荐系统会尝试利用A算法的优点以解决B算法的缺点。例如,协同过滤算法存在新物品的问题,也就是说这种算法无法推荐用户未评价或使用过的物品。因为是基于内容(特性)预测的,这一点并不会对基于内容的算法产生限制。而结合了协同过滤与基于内容过滤算法的混合型推荐系统能够解决单个算法中的一些限制,比如冷启动的问题与流行度偏好的问题。表一列出了一些不同的方法,包括如何结合两种甚至更多基础推荐系统技术,以创建新的混合型系统。

假设我们有一些用户已经表达了他们对某些书籍的偏好,他们越喜欢某本书,对这本书的评分也越高(评分级别分别为1-5)。我们可以在一个矩阵中重现他们的这种偏好,用行代表用户,用列代表书籍。

在本文所属系列的第二篇中,我们给出了两个案例,包括如何使用基于物品及基于用户的协同过滤算法来计算推荐结果;在本文所属系列的第三篇中,我们演示了如何使用基于内容的过滤算法来生成推荐结果。现在我们将这三种不同的算法结合起来,生成一种全新的混合型推荐结果。我们会使用加权法(表一)结合多种技术得出的结果,之后这三种算法便可按照不同的权值(根据重要性不同)结合得出一组新的推荐结果。

我们先以第一个用户为例,为其生成一些推荐。首先我们会根据第二篇中的基于用户的协同过滤算法,基于物品的协同过滤算法,以及第三篇中基于内容过滤的算法,各自生成推荐结果。值得注意的是,在这个小案例中,这三种方法为同一名用户生成的推荐结果有着轻微的差异,尽管输入的内容是完全相同的。

下一步,我们使用加权混合推荐算法为指定用户生成推荐结果,加权值分别为:基于用户的协同过滤算法40%,基于物品的协同过滤算法30%,基于内容过滤的算法30%(图三)。在这个案例中,系统会向用户推荐他们从未看过的所有三本书,而使用单个算法只会推荐其中两本。

尽管混合型算法解决了CF与CB算法的一些重大挑战与限制(见图三),但在系统中平衡不同的算法也需要很多工作量。另一种结合单个推荐算法的方式是使用集成方法,关于如何结合不同算法得出的结果,我们研究得出了一个函数。值得注意的是:通常集成算法不仅结合了不同的算法,还结合了根据同一种算法得出的不同变体与模型。例如:获得NetflixPrize奖项的解决方案包含了从10多种算法(流行度、邻域算法、矩阵分解算法、受限波尔兹曼机、回归等等)得出的100多种不同的模型,并通过迭代决策树(GBDT)将这些算法与模型结合在一起。

另外,基于流行度的算法对于新用户的冷启动问题来说也是一个优秀的解决方案。这些算法通过某些流行度的测量标准,比如下载最多的或者购买最多的,来对物品进行排名,并将这些流行度最高的物品推荐给新用户。当拥有合适的流行度衡量指标时,这个办法虽然基础却很有效,通常可以为其他算法提供很好的基线标准。流行度算法也可以单独作为算法使用,以引导推荐系统在换到其他更切合用户兴趣点的算法(比如协同过滤算法以及基于内容过滤的算法)前获得足够的活跃度与使用量。流行度模型也可以引入混合算法中,从而解决新用户的冷启动问题。

THE END
1.day1推荐算法概念及入门推荐算法入门day1-推荐算法概念及入门 一、推荐系统简介 个性化推荐(推荐系统)经历了多年的发展,已经成为互联网产品的标配,也是AI成功落地的分支之一,在电商、资讯、音乐、短视频等热门应用中,推荐系统都是核心组件之一。 1、产生背景:信息过载及用户需求不明确 2、产生历史:1)分类目录(1990s):覆盖少量的热门网站,如hao123,https://blog.csdn.net/cpy52349119/article/details/121743682
2.推荐系统常用算法总结(适合刚入门的同学)腾讯云开发者社区从推荐算法的理论来讲,主要可以从召回层和排序层两个方面来说,虽然召回层和排序层都是使用算法和模型来做,但是针对于不用的阶段,所用的模型也有一定的差别。 召回层 在召回层中,我们又可以分为3类方法,即传统算法、机器学习和深度学习模型。 传统算法就是利用传统推荐系统理论中所采用的算法,例如计算用户之间的https://cloud.tencent.com/developer/article/1642878
3.机器学习推荐算法原理入门及算法介绍消费金融风控联盟不管你是在国内,还是国外,用淘宝还是Amazon,你应该都有这种体验吧;有时候,哪怕你没有买,只有浏览了几样商品,这些网站也会给你一些相关推荐。 推荐算法具有很多应用场景和商业价值,推荐算法种类很多。在机器学习还没有兴起的时候推荐算法就有需求和应用了。概括起来可分为以下5种: https://www.shangyexinzhi.com/article/7331518.html
4.推荐算法中有哪些常用排序算法?推荐算法中有哪些常用排序算法?最近学习美团机器学习inAction系列,在推荐系统TopN问题,涉及到相关学习排序算法,如筛选排序、搜索排序,请问有哪些适合该场景的排序算法?具体如…显示全部 ? 关注者167 被浏览73,313 关注问题?写回答 ?邀请回答 ?好问题 8 ?添加评论 ?分享 ?登录https://www.zhihu.com/question/35248019/answer/2277896713
5.浪潮卓数申请基于隐向量空间的课程智能推荐方法专利,为用户生成个性步骤2:构建用户与课程隐向量,步骤3:计算相似度并生成推荐信息:建立推荐模型,利用推荐模型基于隐向量计算用户与课程之间的相似度或相关性,根据相似度排序,为用户生成个性化的课程推荐列表,步骤4:优化与反馈循环:通过机器学习算法不断优化推荐模型,同时,建立用户反馈机制,收集用户对推荐结果的满意度评价,用于改进推荐模型https://www.163.com/dy/article/JJUP27E80519QIKK.html
6.个性化推荐算法实战入门必修课简介:当今互联网行业,无论在信息流,电商,o2o等产品中,个性化推荐算法都在其中扮演着极其重要的角色。本课程结合我多年工业界实战经验,给大家讲述工业界推荐算法的大体架构,以及个性化召回算法的几种工业界落地架构。并选取一种相对快速接受的算法协同过滤来从理论公式与代码落地的角度,完成实战个性化推荐算法。学完本https://www.imooc.com/learn/1029
7.初学机器学习?推荐从这十大算法入手这篇博文中的十大机器学习算法是专门写给初学者的。这些算法大多数都是我在孟买大学攻读计算机工程学士学位的时候,在“数据存储和挖掘“课程中学到的。“数据存储和挖掘“课程是一个非常棒的机器学习算法领域的入门课程。由于最后两个算法(集成方法)广泛运用于 Kaggle 比赛中,我专门把它们也写到了文章中。希望你喜欢这https://36kr.com/p/1721961660417
8.推荐系统入门之使用ALS算法实现打分预测推荐系统入门之使用ALS算法实现打分预测 1. 开通机器学习PAI服务 说明:本场景使用的机器学习PAI服务依赖于MaxCompute大数据计算服务,在运行实验时将会消耗大约2.5元的计算费用,请确保您的账户余额充足。 1. 使用您的阿里云账号登录阿里云官网。 2. 在顶部的导航栏,依次将鼠标悬停到产品>人工智能处,然后单击机器学习平台https://developer.aliyun.com/article/1329264
9.GitHubkrahets/hello源代码可一键运行,帮助读者在练习中提升编程技能,了解算法工作原理和数据结构底层实现。 提倡读者互助学习,欢迎大家在评论区提出问题与分享见解,在交流讨论中共同进步。 若本书对您有所帮助,请在页面右上角点个 Star ? 支持一下,谢谢! 推荐语 “一本通俗易懂的数据结构与算法入门书,引导读者手脑并用地学习,强https://github.com/krahets/hello-algo
10.协同过滤算法python代码实战协同过滤算法例子协同过滤(collaborative filtering)算法是一种入门级推荐算法,实现简单、可解释性强、效果尚可,有大量可调整的点。 问题定义 你的数据库里有一些打分记录了,你想算出更多的打分(红色的问号) 算法步骤 step1:确定基于user还是基于item。 一般基于数量少的那个。 https://blog.51cto.com/u_16213574/8863651
11.K.O.《算法导论》——寻找算法真正入门路径很多人,和专家都推荐《算法导论》这本书,有点捧为经书的意味。我读了一下以后,我觉得,名不符实。叫导论实有误导的嫌疑,更不能算入门书。我个人认为此书有以下一特点(不足): 第一,数学内容过多; 第二,行文不友好,中文翻译生硬; 第三,深入方向不对,也不浅出; https://www.douban.com/note/795313909
12.算法竞赛入门经典:训练指南(刘汝佳著)高清pdf扫描版[161MB]电子书《算法竞赛入门经典:训练指南》是《算法竞赛入门经典》的重要补充,旨在补充原书中没有涉及或者讲解得不够详细的内容,从而构建一个较完整的知识体系,并且用大量有针对性的题目,让抽象复杂的算法和数学具体化、实用化。本书共6章,分别为算法设计基础、数学基础、实用数据结构、几何问题、图论算法与模型和更多算法专题,https://www.jb51.net/books/668348.html
13.c语言经典书排行榜囤书瘾一直没有办法停下来,家里都是在京东买的书,已经堆成一个综合性图书馆了。每次看见推荐的书单,都忍不住上京东搜索,加入了购物车,赶上促销马上买下。书的质量都是很不错,没有任何问题 TOP 10 CCF中学生计算机程序设计入门篇基础篇提高篇中学生计算机程序设计基础算法入门例题精析与训练C++语言基础知识教材Athttps://www.jd.com/phb/key_1713f5c76f9b7f7bc9bf.html
14.推荐系统入门篇流式训练:、流式训练模块的主要作用是使用实时训练样本来更新模型。推荐算法中增量更新部分的计算,通过流式计算的方式来进行更新。在线训练的优势之一,是可以支持模型的稀疏存储。训练方面,在线模型不一定都是从零开始训练,而是可以将离线训练得到的模型参数作为基础,在这个基础上进行增量训练。 https://www.jianshu.com/p/27021ab18d52
15.九章算法九章算法班专业版 Z同学 2024-11-18 ML $221 人工智能集训营 Evelyn 2024-11-17 MLE $232k AI 入门项目课:3节课玩转KNN & CNN Sudie 2024-10-20 AI Architect $223k 九章算法班 2025版 Kris 2024-09-18 Staff Software Engineer $230k 人工智能集训营 https://www.jiuzhang.com/