Related Info
推荐系统介绍
常用的推荐系统包括四种推荐方式:
热门推荐:就是热门排行榜的概念。这种推荐方式不仅仅在IT系统,在平常的生活中也是处处存在的。这应该是效果最好的一种推荐方式,毕竟热门推荐的物品都是位于曝光量比较高的位置的。
人工推荐:人工干预的推荐内容。相比于依赖热门和算法来进行推荐。一些热点时事如世界杯、nba总决赛等就需要人工加入推荐列表。另一方面,热点新闻带来的推荐效果也是很高的。
相关推荐:相关推荐有点类似于关联规则的个性化推荐,就是在你阅读一个内容的时候,会提示你阅读与此相关的内容。
个性化推荐:基于各种算法和用户的历史行为做出的内容推荐,例如今日头条的千人千面新闻推荐。
其中,前两者简单常用,缺点是需要人工,费时费力。后两种需要人工智能和机器学习提供规则、算法和模型,高效新颖。比如今日头条和抖音,你看到的内容都是系统做个性化推荐出来的,这两者并不提供一个新闻或视频列表页面将所有的新闻和视频都列出来(其他的比如新浪或搜狐新闻、腾讯或爱奇艺视频会有这样的页面),你只能在今日头条和抖音给你的推荐列表里看内容,由于是个性化推荐,所以能做到千人千面,新颖且易于被用户接受,更重要的是更加易于做适合与用户的广告推送(显示或隐形广告)。用户对于不喜欢的内容(包括广告)会认为是骚扰,但对于适合的内容(包括广告)会更加有兴趣看。现在今日头条的广告收入已经快赶上百度。Google和百度的搜索广告也早都已采用基于机器学习和深度学习的个性化推荐算法,来推送用户更感兴趣的广告。
常用的推荐原理有两个,分别是基于物品的推荐和基于用户的推荐。
基于用户的推荐原理是:跟你喜好相似的人喜欢的东西你也很有可能喜欢(userBaseCF)。
基于物品的推荐原理是:跟你喜欢的东西类似的东西你也可能喜欢(itemBaseCF)。
抽象出来的三种推荐方式
图1
根据上面的抽象,可以设计一种基于特征的推荐系统架构。当用户到来之后,推荐系统需要为用户生成特征,然后对每个特征找到和特征相关的物品,从而最终生成用户的推荐列表。因而,推荐系统的核心任务就被拆解成两部分,一个是如何为给定用户生成特征,另一个是如何根据特征找到物品。
图2
如果我们为每一类的特征都准备一种推荐引擎,那么推荐系统需要由多个推荐引擎组成,每个推荐引擎负责一类特征和一种任务,而推荐系统的任务只是将推荐引擎的结果按照一定权重或者优先级合并、排序然后返回。
图3
图3中,推荐引擎的构建来源于不同的数据源(也就是用户的特征有很多种类,例如统计的、行为的、主题的)+不同的推荐模型算法,推荐引擎的架构可以试多样化的(实时推荐的+离线推荐的),然后融合推荐结果(模型结果+人工规则)。
图4
图4中,A模块负责用户各类型特征的收集,B模块的相关表是根据图3中的推荐引擎来生成的,B模块的输出推荐结果用来C模块的输入,中间经过过滤模块(用户已经产生行为的物品,非候选物品,业务方提供的物品黑名单等),排名模块也根据预设定的推荐目标来制定,最后推荐解释的生成(如微信的好友推荐等等,这一解释有时胜过后台的算法作用)。
推荐系统是如何和网站的其他系统联系起来的呢?一般来说,每个网站都会有一个UI系统,UI系统负责给用户展示网页并和用户交互。网站会通过日志系统将用户在UI上的各种各样的行为记录到用户行为日志中。日志可能存储在内存缓存里,也可能存储在数据库中,也可能存储在文件系统中。而推荐系统通过分析用户的行为日志,给用户生成推荐列表,最终展示到网站的界面上。
图5
在一个推荐系统中,需要对用户的行为数据进行存储分析,得到用户画像,进而为用户推荐符合个人口味的结果。毫无疑问,用户的行为数据量是巨大的。我们需要根据实际的情况采用不用的存储方式来进行存储。才能产生的,而有些行为是所有用户都可以产生的。从规模上看,浏览网页、搜索记录的规模都很大,因为这种行为所有用户都能产生,而且平均每个用户都会产生很多这些行为。购买、收藏行为规模中等,因为只有注册用户才能产生这种行为,但购买行为又是电商网站的主要行为,所以它们相对于评论来说规模更大,但相对于网页浏览行为来说规模要小得多,最后剩下的行为是注册用户里的一小部分人才有的,所以规模不会很大。从实时存取的角度上看,购买、收藏、评论、评分、分享等行为都是需要实时存取的,因为只要用户有了这些行为,界面上就需要体现出来,比如用户购买了商品后,用户的个人购买列表中就应立即显示用户购买的商品。而有些行为,比如浏览网页的行为和搜索行为并不需要实时存取。
图6
下图是推荐系统的整体架构,通过数据分析得到用户画像,然后通过推荐系统给用户推荐数据。从此图中,我们也可以窥知一个完整的推荐系统至少应该有如下的子系统:用户画像子系统,内容子系统,存储子系统,推荐引擎子系统等。
图7
图8
但凡人工智能类的落地,都需要具备这几个基本元素才行:数据、算法、场景、计算力。推荐系统也不例外。模型前数据准备(理解数据源,用户,物品)如下:
模型策略
其他考虑的场景