互联网公司开发项目中,推荐系统算法都是怎么开发的?
现在很多互联网公司,每个人进去首页看到的内容都是不一样的,这是怎么做到的?推荐系统的架构是怎么样的?下面软盟网介绍下。
没有真正的做过推荐系统,大部分的知识都是学习过、了解过,所以一些内容认识的比较浅显,很多算法在我看来,都比较高深。下面我就把自己有限的知识分享一下:
在N多年前,用户进入一个购物网站的时候,看到的商品都是一样的,而现在每个用户进入首页的时候,看见的商品列表可能是不相同的;
在N多年前,用户进入一个新闻网站的首页,看到的新闻都是一样的,而现在,每个用户进入今日头条的时候,看到的新闻(文章)是不相同的;这些都要归功于推荐系统。
推荐系的分类:
热门推荐:相当于一个排行榜功能,销售排行、好评排行、阅读排行等等;
相关推荐:用户买了一个商品,系统会告诉你类似的商品;用户阅读了一条新闻,这时候系统提示与此相关的内容。
个性化推荐:根据用户的历史行为,推荐给用户想要的内容;和相关推荐不同,相关推荐的前提是,要现有一个内容。前两种推荐都比较容易实现,这里主要说一说个性化推荐(直说整体的架构,至于一些细节,比如推荐算法,我也凉凉)。
个性化推荐系统的组成:
日志系统:不要想象成应用日志、Log,这里的日志系统可以看做对用户信息和用户行为的搜集,这是个性化推荐系统的基础数据。
推荐算法:个性化推荐算法的核心,根据数据,分析得到推荐的结果。
推送服务:得到推荐的结果之后,作用于用户;如在什么场景、时机下推荐。
![](https://img.haomeiwen.com/i8123595/29ec3c18aa17aadc.png)
推荐算法的基本流程
A:从数据库中拿到用户行为和属性等数据,通过分析不同行为,生成当前用户的特征向量;比如用户特征属性(如性别)、用户关系属性(如好友关系)、用户偏好属性(如喜欢看足球);每个行业关注的用户特征是不相同的;
B:不同的物品,也有不同的特征属性,比如对于视频来说,包含地区、导演、演员、类型等;这个模块要做的事情就是连接用户和内容;比如用户喜欢某些特征的内容;利用用户喜欢的内容,寻找与这些内容相似的内容;根据用户特征寻找相似的用户,然后看这些用户喜欢的内容等等;
C:对初始的推荐列表进行过滤,排名等处理,生成最终的推荐结果。
![](https://img.haomeiwen.com/i8123595/5d24d6f356c5afee.png)
举个比较好理解的例子,你平时使用今日头条,看了那些文章、每篇的停留时间、阅读进度、是否回复和点赞,然后推断出你的阅读偏好,进而给你推荐你感兴趣的新闻(当然头条的算法应该更复杂)。推荐系统算法
再举个比较出名的例子,就是【啤酒与尿布】的案例,大概意思是年轻的父亲去超市买尿布,父亲在购买尿布的同时,往往会顺便为自己购买啤酒,所以超市尝试将啤酒与尿布摆放在相同区域,结果提升商品销售收入;推荐算法也会挖掘出来事物之间隐藏的关系。
![](https://img.haomeiwen.com/i8123595/79b0ab19c259e042.png)