推荐系统研究-笔记
维基百科对推荐系统的解释:推荐系统是一种信息过滤系统,用于预测用户对物品的“评分”或“偏好”。推荐的对象包括:电影、音乐、新闻、书籍、学术论文、搜索查询、分众分类、以及其他产品。
推荐系统首先收集用户的历史行为数据,然后通过预处理的方法得到用户-评价矩阵,再利用机器学习领域中相关推荐技术形成对用户的个性化推荐。有的推荐系统还搜集用户对推荐结果的反馈,并根据实际的反馈信息实时调整推荐策略,产生更符合用户需求的推荐结果。
推荐系统的本质是解决信息过载的问题,代表性的解决方案是分类目录和搜索引擎。分析用户的历史行为给用户的兴趣建模。
推荐系统主要利用用户的行为数据,分析用户的行为日志,从而提供不同的推荐页面,提高用户的满意度以及网站的点击率和转化率。
常见的推荐系统的推荐形式主要有三种:个性化推荐、相关推荐、热门推荐。
个性化推荐:经常以“猜你喜欢”、“发现”等形式在页首出现;
相关推荐:经常以“相关推荐”、“看了又看”等形式放在内容详情页;
热门推荐:按照各类数据的统计结果进行推荐。
推荐系统的核心——推荐算法。推荐算法最早在1992年就提出来了,但是发展起来是互联网爆发之后。
基于用户信息的推荐:
这是最为简单的一种推荐算法,它只是简单的根据系统用户的基本信息发现用户的相关程度,然后将相似用户喜爱的其他物品推荐给当前用户。
如下图:
描述:系统首先根据用户的类型,比如按照年龄、性别、兴趣爱好等信息进行分类。根据用户的这些特点计算形成相似度和匹配度。如图,发现用户A和B的性别一样,年龄段相似,于是推荐A喜欢的商品给C。
优点:
不需要历史数据,没有冷启动问题;
不依赖与物品的属性,因此其他领域的问题都可无缝接入。
缺点:
算法比较粗糙,效果很难令人满意,只适合简单的推荐。
基于内容的推荐(我们的口译项目能很快使用这个算法实现推荐功能)
基于内容的推荐是建立在产品的信息上作出推荐的,而不需要依赖用户对项目的评价意见,更多地需要用机器学习的方法从关于内容的特征描述忠的事例中得到用户的兴趣资料。
如下图:
描述:系统首先对商品书籍的属性进行建模,途中用类型作为属性。在实际应用中,只根据类型显然过于粗糙,还需要考虑其他信息。通过相似度计算,发现书籍A和C相似度较高,应为他们都属于武侠小说类。系统还会发现用户A喜欢数据A,因此得出结论,用户A很可能对书籍C也感兴趣。于是将书籍C推荐给A。
优点:
对用户兴趣可以很好的建模,并通过对商品和用户添加标签,可以获得更好的精确度;
能为具有兴趣爱好的用户进行推荐。
缺点:
物品的属性有限,难以区分商品信息的品质;
物品相似度的衡量标准只考虑到了物品本省,有一定的片面性;
不能为用户发现新的感兴趣的产品。
协同过滤推荐
协同过滤的场景:要为某用户推荐他真正感兴趣的内容、商品,首先要找到于此用户有相似兴趣的其他用户,然后将他们感兴趣的内容推荐给该用户。核心思想就是基于其他用户对某一个内容的评价来向目标客户继续推荐。
基于协同过滤的推荐系统可以说是从用户的角度来进行相应的自动推荐,即用户获得的推荐是系统从购买模式或浏览记录行为等隐式获得的。
协同过滤又分为两种UserCF、ItemCF。
3.1 UserCF(基于User的协同过滤)简介:
前提:需要在创建用户账号的同时,添加个性化兴趣爱好→以便计算用户之间的相似度。
其后:用户需要对不同的题型打分(感兴趣程度、也可以更改为做题次数、浏览次数),这样方便→后续给用户推荐题型。
大致的流程:计算用户之间的相似度→根据相似用户对题A的评分,得到本用户对题A的最终评分→更具用户的评分对对用进行推荐。
存在的问题:
数据稀疏性:如果题型库非常大,用户又比较少,不同用户之间喜欢的题型重叠性较低,导致算法无法找到一个用户的邻居,即偏好相似度的用户,即使找到了,准确性也可能不会太高。不适用于酒店预订,大件商品购买等低频应用。
用户相似度维护难度大:基于用户协同过滤需要维护用户相似度矩阵,以便快速找出Topn相似用户,该矩阵的存储开销非常大,存储空间随着用户数量的增加而增加,不适合用户数量大的情况使用。
适合场景:用户少,物品多,时效性较强的场景。(如新闻推荐)
3.2 ItemCF(基于Item的协同过滤)简介:
前提:需要用户给其他题型评分,计算不同题之间的相似度(有多种计算公式)。
其后:根据上述的数据,就能计算了,得出喜欢评分,最终进行推荐。
优点:
Item-based算法的预测结果比User-based算法的质量要高一点。
由于Item-based算法可以预先计算好物品的相似度,所以在线的预测性能要比User-based算法高。
缺点:
数据稀疏性(因此适用于User远大于Item数量的场景,相似度算法导致的,否则适用于UserCF,行数越多,相似度大于0的数列就越多)
物品相似度维护难度大(符合上面应用场景时,相对来说好一点)
若m个User、n个Item、m>>n
User相似度矩阵:m*m
Item相似度矩阵:n*n
3.3 UserCF 和ItemCF的总结:
区别:
共同缺点:不能彻底解决数据稀疏性问题、泛化能力弱、无法利用更多的信息。
协同过滤与前两种算法的区别:
协同过滤vs基于用户统计信息推荐
基于用户的协同过滤推荐机制和基于用户统计信息推荐机制都是计算用户的相似度,并基于“邻居”用户群计算推荐,但不同的是如何计算用户的相似度。基于用户统计信息只考虑用户本身的特征,而基于用户的协同过滤机制是在用户的历史偏好的数据上计算用户的相似度,它的基本假设是,喜欢类似物品的用户可能有相同或相似的兴趣爱好。
协同过滤vs基于内容过滤
基于项目的协同过滤推荐和基于内容的推荐其实都是基于物品相似度预测推荐,只是相似度计算的方法不一样,前者是从用户的历史偏好推断,而后者的基于物品本省的属性特征信息。
项目一:(可能是实际参考的项目)
使用java编写的基于用户的协同过滤算法(UserCF)和基于物品(此应用中指电影)的协同过滤(ItemtemCF) 利用统计学的相关系数经常皮尔森(pearson)相关系数计算相关系数来实现千人千面的推荐系统。
如果使用协同过滤可以参考他的项目代码。(这个代码也是记录二原文所对应的源码)
项目地址: 推荐算法 recommend-system: java利用 皮尔森(pearson)相关系数实现千人千面的推荐算法系统 (gitee.com)
配合使用的文章:推荐系统(Recommendation system )介绍 - AnnieJ - 博客园 (cnblogs.com)
项目二:
PaddleRec 提供的大规模推荐算法库,一站式开箱即用工具。
由于PaddleRec此前未接触,可能需要花费一段时间学习后才能运用到口译项目中。
项目地址:https://link.zhihu.com/?target=https%3A//github.com/PaddlePaddle/PaddleRec
项目三:
这是一个推荐系统讲解的视频,很正式。(来自小红书推荐系统大佬)
真正学会搭建推荐系统一定要将它刷完。
项目介绍:wangshusen/RecommenderSystem (github.com)
项目四:
这是阿里巴巴开源的推荐算法框架,感觉只能用来学习,真正实现起来一个人在短时间内很难完成。(空闲时观看)
项目地址:https://link.zhihu.com/?target=https%3A//github.com/alibaba/EasyRec
项目五:
易用、强大的PyTorch推荐系统开源库。
文章地址:伯乐:一个易用、强大的PyTorch推荐系统开源库 - 知乎 (zhihu.com)
一:若选择搭建基于内容的推荐算法的推荐系统
情况说明:使用该方案不需要新添加新属性,可以直接根据现有的“语料类型”、“用户收藏”实现粗糙的推荐系统。
优点:简单、能够快速搭建好一个具有推荐功能的推荐系统。
缺点:推荐功能较简单、可能不是很准确。
二:搭建基于协同过滤算法的推荐系统
情况说明:实现起来较复杂,对现有功能改动较大,需要维护一张用户-评分矩阵。需要新添加喜欢程度的评分功能(用户对题型的喜欢程度,可以是评分形式),后续还需要完善用户个人信息(兴趣爱好、答题时间分布等个人信息),还需要对用户的一些隐式信息(浏览记录、点击记录、页面停留时间)进行收集和维护,以便为后续的推荐功能提供数据。
优点:能够得到一个企业级的推荐系统,推荐精度高。
缺点:实现起来较复杂,对现有项目修改较高,耗时周期长。
对推荐系统的讲解:10-实现推荐功能 - 起跑线小言 - 博客园 (cnblogs.com)
推荐系统视频讲解(来自小红书推荐系统的大佬):概要01:推荐系统的基本概念_哔哩哔哩_bilibili
推荐系统介绍,主要参考的文章: 推荐系统(Recommendation system )介绍 - AnnieJ - 博客园 (cnblogs.com)
协同过滤的讲解视频:5.【ItemCF】基于Item的协同过滤_哔哩哔哩_bilibili
《深度学习推荐系统》书籍:https://singlelogin.re/book/21391392/231899/深度学习推荐系统.html
开源推荐算法项目:13个精选开源推荐系统及算法,值得收藏 - 知乎 (zhihu.com)
标签:推荐,系统,用户,笔记,算法,过滤,相似 From: https://www.cnblogs.com/Hygge1024/p/18070334