推荐算法

基于用户的协同过滤推荐算法原理和实现

依然范特西╮ 提交于 2020-03-03 00:13:29
在推荐系统众多方法中,基于用户的协同过滤推荐算法是最早诞生的,原理也较为简单。该算法1992年提出并用于邮件过滤系统,两年后1994年被 GroupLens 用于新闻过滤。一直到2000年,该算法都是推荐系统领域最著名的算法。 本文简单介绍基于用户的协同过滤算法思想以及原理,最后基于该算法实现园友的推荐,即根据你关注的人,为你推荐博客园中其他你有可能感兴趣的人。 基本思想 俗话说“物以类聚、人以群分”,拿看电影这个例子来说,如果你喜欢《蝙蝠侠》、《碟中谍》、《星际穿越》、《源代码》等电影,另外有个人也都喜欢这些电影,而且他还喜欢《钢铁侠》,则很有可能你也喜欢《钢铁侠》这部电影。 所以说,当一个用户 A 需要个性化推荐时,可以先找到和他兴趣相似的用户群体 G,然后把 G 喜欢的、并且 A 没有听说过的物品推荐给 A,这就是基于用户的系统过滤算法。 原理 根据上述基本原理,我们可以将基于用户的协同过滤推荐算法拆分为两个步骤: 1. 找到与目标用户兴趣相似的用户集合 2. 找到这个集合中用户喜欢的、并且目标用户没有听说过的物品推荐给目标用户 1. 发现兴趣相似的用户 通常用 Jaccard 公式或者余弦相似度计算两个用户之间的相似度。设 N(u) 为用户 u 喜欢的物品集合,N(v) 为用户 v 喜欢的物品集合,那么 u 和 v 的相似度是多少呢: Jaccard 公式: 余弦相似度:

人工智能教程 - 学科基础课程2.6 - 机器学习导论 16.推荐系统,基于内容推荐算法,协同过滤

冷暖自知 提交于 2020-02-28 22:10:53
推荐系统 是机器学习中的一个重要的应用。推荐系统的特征对于学习算法的性能有很大的影响。 预测电影评分例子: 有 5 部电影和 4 个用户,要求用户为电影打分。 基于内容的推荐算法 content based recommendations 每部电影都有两个特征 x 1 , x 2 x_1,x_2 x 1 ​ , x 2 ​ 可以根据特征和参数,生成空缺值的预测值 最优解目标对象 协同过滤 collaorative filtering 可以进行特征学习 feature learning 协同过滤优化算法 代价函数 学习电影的特征: 给定x的话,能估算出 θ \theta θ ;而给定 θ \theta θ 的话,能估算出x。这就有点儿像“先有鸡,还是先有蛋?” 来源: CSDN 作者: KuFun人工智能 链接: https://blog.csdn.net/fsdaewrq/article/details/104554365

多模型融合推荐算法

China☆狼群 提交于 2020-02-24 06:13:27
常见的多模型融合算法 多模型融合算法可以比单一模型算法有极为明显的效果提升。但是怎样进行有效的融合,充分发挥各个算法的长处?这里总结一些常见的融合方法: 1. 线性加权融合法 线性加权是最简单易用的融合算法,工程实现非常方便,只需要汇总单一模型的结果,然后按不同算法赋予不同的权重,将多个推荐算法的结果进行加权,即可得到结果: 是给用户(user)推荐商品(item)的得分, 是算法K的权重,是算法k得到的用户(user)对商品item的推荐得分。这种融合方式实现简单,但效果较差。因为线性加权的参数是固定的,实践中参数的选取通常依赖对全局结果升降的总结,一旦设定后,无法灵活的按照不同的推荐场景来自动变换。比如如果某个场景用算法A效果较好,另外一种场景用算法B效果较好,线性融合的方式在这种情况下不能取得好的效果。为了解决这个问题,达观数据进行了改进,通过引入动态参数的机制,通过训练用户对推荐结果的评价、与系统的预测是否相符生成加权模型,动态的调整权重使得效果大幅提升。 2. 交叉融合法 交叉融合常被称为Blending方法,其思路是在推荐结果中,穿插不同推荐模型的结果,以确保结果的多样性。 这种方式将不同算法的结果组合在一起推荐给用户。 交叉融合法的思路是“各花入各眼”,不同算法的结果着眼点不同,能满足不同用户的需求,直接穿插在一起进行展示

数据结构与算法推荐书单

試著忘記壹切 提交于 2020-02-22 00:21:03
  对于入门的同学不建议过度追求看上去很经典的书籍,例如:《算法导论》/《算法》这些书。可以看一些相对容易看的书来入门,例如《大话数据结构》、《算法图解》。   《大话数据结构》这本书最大的特点是它将理论讲的非常有趣,不枯燥。而且每个数据结构和算法作者都结合生活中的例子进行讲解,虽然这本书有400+页,但是花两天事件读完应该是没有问题的。如果之前完全不懂数据结构和算法,可以从这本书开始。   《算法图解》和《大话数据结构》走得是同样的路线。“像小说一样有趣的算法入门书籍”,通俗易懂。它只有不到200页,所以内容比较少。看看这本书,能够让你对数据结构和算法有 个大概的认识。   入门书籍共同的问题是缺少细节,不够系统,有不够严谨。如果想系统的学习学习数据结构和算法仅靠这两本书是不够的。   《数据结构和算法分析》国内外有很多大学拿这本书当作教材。这本书非常系统/全面/严谨,而且不是特别难,适合对数据结构有一定的了解,同时至少掌握了一门编程语言的人。这本书有三个版本:《数据结构与算法分析:C语言描述》/ 《数据结构与算法分析:C++描述》/ 《数据结构与算法分析:java语言描述》。   如果你熟悉的是其它编程语言可以看一下《数据结构与算法JavaScript描述》/ 《数据结构与算法:Python语言描述》。 面试刷题宝典:   《剑指offer》这本书的作者写作目的本明确

基于项目的协同过滤推荐算法原理、过程、代码实现 基于项目评分的协同过滤推荐算法程序 余弦、修正余弦、person皮尔森算法、欧几里得距离公式等相似度算法 movielens电影评分数据集

自古美人都是妖i 提交于 2020-02-16 23:33:13
本文主要介绍基于项目的协同过滤推荐算法的推荐原理、推荐过程、代码实现。 一、基于项目的协同过滤推荐算法推荐原理 基于项目的协同过滤推荐算法也是推荐算法中最基础、最简单、很重要的算法,主要是根据用户对项目的某一种操作行为,构成项目-用户操作行为矩阵,根据操作行为矩阵计算项目之间的相似度,最终为目标用户推荐目标用户有操作行为的预测评分高的项目,作为目标用户感兴趣的项目。 二、基于项目的协同过滤推荐算法推荐过程 基于项目的协同过滤推荐算法推荐过程可分为三个步骤:构建项目-用户操作行为矩阵、计算项目之间似度、获取推荐结果。 1、构建项目-用户操作行为矩阵 我们以用户对项目的评分数据为例,M个项目和N个用户最大有M*N条项目的评分数据,记为矩阵MN,在计算机语言中可以通过一个二维数组来表达array[M][N],项目用数组下标0-M表示,用户用数组下标0-N表示,矩阵MN图形如下所示(0表示用户对项目没有评分): 评分 0 1 2 3 4 5 … N 0 1 0 5 2 0 3 … 5 1 5 2 4 0 0 0 … 0 2 2 5 3 4 2 1 … 4 3 0 4 0 0 4 1 … 2 … … … … … … … … … M 3 0 4 2 3 2 … 1 项目-用户评分矩阵可适用于项目-用户浏览记录矩阵、项目-用户浏览时长矩阵、项目-用户播放次数矩阵、项目-用户播放时长矩阵、项目

基于内容的推荐算法

走远了吗. 提交于 2020-02-16 00:16:17
输入   输入 1 :包含 200 部电影的数据集,集合中包含两列,一列为电影的 id ,一列为电影的流派集合,如下图所示:   输入 2 :一个用户的电影兴趣记录, like 字段为 1 表示喜欢, 0 表示不喜欢,如下图所示:   输出   输出 1 :输入 1 的 One-Hot 编码形式 ,类似下图所示:   输出 2 :根据输入 2 和输出 1 ,从电影数据集中给用户推荐用户没有看过的与用户相似度最高的 k 个电影。 前言   基于内容的推荐算法是一种比较经典的推荐算法,应用较广,可解释性强,准确率高,尤其是当今社会信息丰富,比如文本、音频等,有比较多的内容可以利用。但是对于一个一无所知的新用户而言,无法针对用户内容进行推荐,只能根据其他算法进行推荐,用户产生内容后才能很好的利用基于内容的推荐算法,这也就是冷启动问题,也是该算法的缺点。 原理 一、 用户画像   做好一个推荐系统,分为以下 3 步: 认识用户 给用户推荐他感兴趣的东西 观察各项业务指标,一直迭代 1 , 2 , 3 循环下去   上面提到的认识用户就是用户画像,用户画像是一个比较抽象的概念,推荐系统的用户画像是给机器用的。推荐系统要在用户和物品之间建立连接,一般的连接方式是对用户和物品之间的匹配进行评分,也就是预测用户的偏好,我们首先要将用户和物品都表示成向量,这样才能让机器进行计算

墙裂推荐!2020Android阿里&腾讯&百度&字节&美团&网易&爱奇艺校招面试汇总

我的未来我决定 提交于 2020-02-15 23:49:21
作者: Hengtao24 链接: https://www.jianshu.com/p/7a8a10f541c8 1 基本情况 2020届硕士生,Android开发岗 此文主要是2019年年初春招实习的面试和正式校招面试经验汇总,最终校招拿到了腾讯,百度,美团,网易等offer 主要包括阿里4面,腾讯实习4面和校招4面,字节3面,百度3面,美团3面,网易3面,爱奇艺3面 2 阿里 阿里面试很喜欢问源码,优化,原理,涉及到的范围很广,还是具有一定挑战性的,以下包括阿里实习二面和校招二面,笔者都止步于二面,阿里可以去找找内推(笔者实习投递时笔试做的差,本来以为挂了,但可能因为找的内推所以还是给我面试了,后续又加了一轮笔试,校招时也是找的内推直接面试了没有笔试)。 阿里实习一面 源码: Handler消息机制(具体涉及到的类 & 细节);HashMap(数据结构 & put操作具体过程,扩容时间复杂度);ArrayMap原理 JVM: Java内存区域划分,堆栈的区别,哪些区域线程私有,哪些共享;栈帧,Java方法调用时的入栈出栈操作 并发访问: volatile原理及作用,是否具有原子性;synchronized:修饰代码块/方法/对象的区别?(单例模式DCL会不会失效?);Lock的原理 Android: Activity生命周期(具体执行过程,涉及到哪些类?);ANR(什么是ANR

推荐系统系列二:推荐系统的工程实现

大憨熊 提交于 2020-02-11 01:38:44
下面内容转自大数据与人工智能微信公众号,由于网络上推荐系统的相关学习资料太多太杂,东拼西凑学习很难摸出门道,同时我也在学习推荐系统,因此我将该系列内容摘录到我的博客,方便大家直接在博客中查看,大家一起学习进步,后面我也会阅读推荐系统相关的论文,并在本博客记录笔记,希望大家一起进步哈。 在我更新第一篇《推荐系统介绍》之后,过了一两天这篇介绍的阅读量就达到了三百多,可见当下存在一个矛盾:大家日益增长的对推荐系统好文章的渴求与真正有含金量的推荐系统学习资料间供应存在着巨大的矛盾,因此我将加快本系列文章的更新,很感谢大数据与人工智能微信公众号,大家如果有额外的需求,可以去该公众号详询原作者,由于博客中不能直接粘贴微信公众号中的图片,本文的图片都是我一张一张手动截图粘贴,整理不易,希望能帮到大家,毕竟好的文章值得我们推广,不应被埋没,好了,话不多说,马上开始。 ===================正文开始=================== 一:写在前面 在上篇文章《推荐系统介绍》中简单对推荐系统做了一个较全面的介绍,相信大家对推荐系统有了初步的了解。本篇文章作者会结合多年推荐系统开发的实践经验粗略介绍推荐系统的工程实现,简要说明要将推荐系统很好地落地到产品中需要考虑哪些问题及相应的思路、策略和建议,其中有大量关于设计哲学的思考,希望对从事推荐算法工作或准备入行推荐系统的读者有所帮助。

从原理到落地,七大维度读懂协同过滤推荐算法

感情迁移 提交于 2020-02-04 11:16:54
转载 AI科技大本营 最后发布于2019-08-09 19:52:18 阅读数 195 收藏 展开 作者丨gongyouliu 来源 | 大数据与人工智能 导语:本文会从协同过滤思想简介、协同过滤算法原理介绍、离线协同过滤算法的工程实现、近实时协同过滤算法的工程实现、协同过滤算法应用场景、协同过滤算法的优缺点、协同过滤算法落地需要关注的几个问题等7个方面来讲述。希望读者读完本文,可以很好地理解协同过滤的思路、算法原理、工程实现方案,并且具备基于本文的思路自己独立实现一个在真实业务场景中可用的协同过滤推荐系统的能力。 作者在《 推荐系统产品与算法概述 》这篇文章中简单介绍了协同过滤算法。协同过滤算法是在整个推荐系统发展史上比较出名的算法,具备举足轻重的地位,甚至在当今还在大量使用。本篇文章作者会详细讲解协同过滤推荐算法的方方面面,这里所讲的也是作者基于多年推荐系统研究及工程实践经验的基础上总结而成,希望对大家学习协同过滤推荐算法有所帮助,提供一些借鉴。在正式讲解之前,先做一个简单定义。本文用“ 操作过” 这个词来表示用户对标的物的各种操作行为,包括浏览、点击、播放、收藏、评论、点赞、转发、评分等等。 一、协同过滤思想简介 协同过滤,从字面上理解,包括协同和过滤两个操作。所谓协同就是利用群体的行为来做决策(推荐),生物上有协同进化的说法,通过协同的作用,让群体逐步进化到更佳的状态

归纳程序员必须掌握的核心算法(详细)

大城市里の小女人 提交于 2020-02-02 07:22:59
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我, 数据结构与算法应该要学习到哪个程度呢? ,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是 零散 的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过不错的文章给大家。大家也可以留言区补充。 一、算法最最基础 1、时间复杂度 2、空间复杂度 一般最先接触的就是时间复杂度和空间复杂度的学习了,这两个概念以及如何计算,是必须学的,也是必须最先学的,主要有最大复杂度、平均复杂度等,直接通过博客搜索学习即可。 文章推荐: 算法分析神器—时间复杂度 二、基础数据结构 1、线性表 列表(必学) 链表(必学) 跳跃表(知道原理,应用,最后自己实现一遍) 并查集(建议结合刷题学习) 不用说,链表、列表必须,不过重点是链表。 三分钟基础数据结构:如何轻松手写链表? 以后有面试官问你「跳跃表」,你就把这篇文章扔给他 2、栈与队列 栈(必学) 队列(必学) 优先队列、堆(必学) 多级反馈队列(原理与应用) 特别是优先队列,再刷题的时候,还是经常用到的,队列与栈,是最基本的数据结构,必学。可以通过博客来学习。相关文章: 三分钟基础知识:什么是栈?