一个简单的协同过滤推荐算法

1、推荐系统简介

  个性化推荐是根据用户的兴趣特点和购买行为,向用户推荐用户感兴趣的信息和商品。

2、推荐系统分类

2.1基于内容的推荐(Content-based Recommendation)

  基于内容的推荐系统的核心思想是挖掘被推荐对象的信息。基于内容的推荐算法的前提假设是:如果用户喜欢物品a,那么用户也应该会喜欢与a类似的物品。由于笔者的目的是侧重于介绍协同过滤推荐算法,所以对基于内容的推荐算法举个简单的例子一带而过:

  假设一首歌有:名称、歌手、风格、作曲人这4个属性。如果用户Alice对Michael 的歌曲Beat It评分很高,那么系统会分析Beat It这首歌的属性,随后系统就可能会向Alice推荐Michael的歌曲Dangerous,因为Dangerous与Beat It有很多共同之处:歌手都是Michael,风格都是摇滚。

  总的来讲,基于内容的推荐,利用的是被推荐对象自身的属性信息,利用这些信息来聚类,例如将众多的歌曲按风格聚类,得到蓝调风格的歌曲集合、摇滚风格的集合、田园风格的集合等等,当用户表示喜欢某一首歌曲时,系统会分析这个歌曲属于哪个风格,如果这个歌曲属于摇滚风格,那么系统就会从摇滚风格的集合中挑选出一些歌曲,将其推荐给用户。当然,这只是一种思路,实际的基于内容的推荐比我描述的要更复杂更详细,有兴趣的朋友可以深入研究一下,我以后有空也会把基于内容的推荐算法做一个详细介绍。

2.2协同过滤推荐 (Collaborative Filtering Recommendation)

  协同过滤算法是推荐系统中应用最为广泛和成功的算法。协同过滤推荐算法的前提假设是:如果用户a与用户b均对一系列相同的物品表示喜欢,那么a极有可能也喜欢b用户喜欢的其他物品。在协同过滤推荐的过程中:用户首先为每个项目进行评价打分,通过计算不同用户评分之间的相似程度,可以找到最近邻居,根据最近邻居的评价,产生推荐——这是协同过滤算法的主要思想。 举例来讲,假设在音乐推荐系统中,一共有4个用户,7个音乐,每个用户对每个音乐的评价矩阵如下:

  All About That Bass Shake It Off Black Widow Habits Bang Bang Don‘t Tell ‘Em Animals
Alice 4     5 1    
Bob 5 5 4 4 2    
John 2     1 5 4  
David   3         3

注:总分为5分,空项表示该用户没有听过该音乐因此尚且没有做出过评价。

此时要为用户Alice推荐一些她可能喜欢的音乐步骤如下:

1.寻找与Alice“品味”最接近的用户

  自然描述

  这里的“品味”相近反应到数字上就是打分接近。比如表中,Alice对All About That Bass和Habits这两首歌有着极高的评价(分别为4分和5分),但是不喜欢Bang Bang;通过观察不难发现Bob对All About That Bass和Habits也表示相当的喜欢(分别为5分和4分),但对Bang Bang评价较低(仅为2分)。因此不难发现,实际上Alice和Bob的品味是较为接近的,Bob就是Alice的最近邻用户

  数学模型

  当然,当用户多起来的时候,我们不可能用肉眼找到Alice的邻居用户,所以要建立数学模型让算法自动寻找Alice的邻居用户。实际上有很多的方法来衡量两个用户的“品味”是否相近。如果把上面表格中的每一行看作是一个向量,这个向量就用来表示用户喜好,那么就可以用多种方法来衡量两个用户喜好的相似度,如余弦相似度、皮尔逊相似度等,在这里只简单介绍一种:

  余弦相似度:

  

  其中Cos(u1,u2)就表示用户u1与用户u2的相似度;

  R就是评价矩阵,Ru1,y表示用户u1对音乐y的评分,Ru2,y表示用户u2对音乐y的评分;

  分子中的y表示用户u1与用户u2评价过的音乐的交集;

  分母中的y则表示用户u1与u2各自的评分集合;

2.利用Alice的最近邻用户预测Alice的打分值

  我们可以遍历所有用户,Alice与每个人都计算出一个相似度,随后对相似度进行排序,选择前10个相似度最高的用户作为Alice的最近邻用户。用这10个最近邻用户的评分数据来给Alice进行推荐,在介绍推荐算法之前,首先要提一下这个公式:

  其中,Predict(u,i)就表示用户u对音乐i的打分预测值;

  U就是用户u的最近邻用户集合;

  R就是评价矩阵;

3.向Alice推荐音乐!

  将第二步得到的一些Alice从未听过的音乐的预测分值进行排序,选择前10个分值最高的音乐推荐给Alice,大功告成!

由于是初次结束推荐算法,所以文中难免有错误,欢迎大家指正~我也会再抽时间更新一些关于推荐算法的文章~

时间: 2024-10-17 04:31:29

一个简单的协同过滤推荐算法的相关文章

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

在推荐系统众多方法中,基于用户的协同过滤推荐算法是最早诞生的,原理也较为简单.该算法1992年提出并用于邮件过滤系统,两年后1994年被 GroupLens 用于新闻过滤.一直到2000年,该算法都是推荐系统领域最著名的算法. 本文简单介绍基于用户的协同过滤算法思想以及原理,最后基于该算法实现园友的推荐,即根据你关注的人,为你推荐博客园中其他你有可能感兴趣的人. 基本思想 俗话说"物以类聚.人以群分",拿看电影这个例子来说,如果你喜欢<蝙蝠侠>.<碟中谍>.&l

Slope One 协同过滤 推荐算法

Slope one  是一个简单,效率较高的协同过滤推荐算法. Slope One 算法是由 Daniel Lemire 教授在 2005 年提出.距今已经10年.   基于如下五点被设计出来: 1. 算法容易实现和维护 2. 对新的评分应该立即给予响应 3. 查询速度要快(虽然可能以牺牲存储量为代价) 4. 对新的用户也要能给出有效的推荐 5. 精度上要有竞争力 slope one用于推荐,其特点是算法逻辑简单,实现容易,算法复杂度低. 像是刚接触推荐系统的朋友可以先采用这种算法来快速实现推荐

矩阵分解在协同过滤推荐算法中的应用

在协同过滤推荐算法总结中,我们讲到了用矩阵分解做协同过滤是广泛使用的方法,这里就对矩阵分解在协同过滤推荐算法中的应用做一个总结.(过年前最后一篇!祝大家新年快乐!明年的目标是写120篇机器学习,深度学习和NLP相关的文章) 1. 矩阵分解用于推荐算法要解决的问题 在推荐系统中,我们常常遇到的问题是这样的,我们有很多用户和物品,也有少部分用户对少部分物品的评分,我们希望预测目标用户对其他未评分物品的评分,进而将评分高的物品推荐给目标用户.比如下面的用户物品评分表: 用户\物品 物品1 物品2 物品

协同过滤推荐算法总结

推荐算法具有非常多的应用场景和商业价值,因此对推荐算法值得好好研究.推荐算法种类很多,但是目前应用最广泛的应该是协同过滤类别的推荐算法,本文就对协同过滤类别的推荐算法做一个概括总结,后续也会对一些典型的协同过滤推荐算法做原理总结. 一.推荐算法概述 推荐算法是非常古老的,在机器学习还没有兴起的时候就有需求和应用了.概括来说,可以分为以下5种: 1)基于内容的推荐:这一类一般依赖于自然语言处理NLP的一些知识,通过挖掘文本的TF-IDF特征向量,来得到用户的偏好,进而做推荐.这类推荐算法可以找到用

协同过滤推荐算法的原理及实现

一.协同过滤算法的原理及实现 协同过滤推荐算法是诞生最早,并且较为著名的推荐算法.主要的功能是预测和推荐.算法通过对用户历史行为数据的挖掘发现用户的偏好,基于不同的偏好对用户进行群组划分并推荐品味相似的商品.协同过滤推荐算法分为两类,分别是基于用户的协同过滤算法(user-based collaboratIve filtering),和基于物品的协同过滤算法(item-based collaborative filtering).简单的说就是:人以类聚,物以群分.下面我们将分别说明这两类推荐算法

什么是协同过滤推荐算法?

剖析千人千面的大脑——推荐引擎部分,其中这篇是定位:对推荐引擎中的核心算法:协同过滤进行深挖. 首先,千人千面融合各种场景,如搜索,如feed流,如广告,如风控,如策略增长,如购物全流程等等:其次千人千面的大脑肯定是内部的推荐引擎,这里有诸多规则和算法在实现对上述各个场景进行“细分推荐排序”:最后是推荐引擎的算法又以“协同过滤”为最核心.最主流热门,也是当下众多内容型.电商型.社交工具.分发型的基础. 由于协同过滤的算法介绍,网上也蛮多但片段化.要么侧重讲“原理流程”,这个占了4成:要么讲算法公

SimRank协同过滤推荐算法

在协同过滤推荐算法总结中,我们讲到了用图模型做协同过滤的方法,包括SimRank系列算法和马尔科夫链系列算法.现在我们就对SimRank算法在推荐系统的应用做一个总结. 1. SimRank推荐算法的图论基础 SimRank是基于图论的,如果用于推荐算法,则它假设用户和物品在空间中形成了一张图.而这张图是一个二部图.所谓二部图就是图中的节点可以分成两个子集,而图中任意一条边的两个端点分别来源于这两个子集.一个二部图的例子如下图.从图中也可以看出,二部图的子集内部没有边连接.对于我们的推荐算法中的

协同过滤推荐算法简述

协同过滤推荐算法是一种主流的.目前广泛应用在工业界的推荐算法. 一般,协同过滤推荐分为三种类型. 1.基于用户(user-based)的协同过滤 基于用户的协同过滤算法,主要考虑的是用户和用户之间的相似度,只要找出与目标用户相似度高的其他用户,根据相似用户喜欢的物品,预测目标用户对对应物品的评分,就可以找到评分最高的若干个物品推荐给用户. 2.基于项目(item-based)的协同过滤 基于项目的协同过滤算法,类似于基于用户的协同过滤,只是这往往是根据用户的行为判断物品的相似度(并不是根据物品的

推荐算法-协同过滤推荐算法

layout: post title: "推荐算法-协同过滤推荐算法" date: 2020-4-13 9:00:00 categories: [Algorithm] excerpt: "协同过滤推荐算法简介,参考https://zhuanlan.zhihu.com/p/40463528" 协同过滤推荐算法步骤 1.收集用户偏好 推测用户的喜好就要收集用户的信息,用户收藏的类别,评论,下载,转发这些信息可以数字化,作为用户信息二维矩阵的变量. 2.用户数据的减噪和归