推荐算法的理解
推荐系统的作用是建立更加有效率的连接,更有效率的连接用户与内容和服务,节约了大量的时间和成本。
如果把推荐系统拆开来看,推荐系统主要是由数据、算法和结构三个方面组成:
- 数据提供了信息:数据储存了信息,包括用户与内容的属性,用户的行为偏好。例如对新闻的点击、玩过的英雄、购买的物品等。这些数据特征非常关键,决定了算法的上限
- 算法提供了逻辑:数据通过不断的积累,存储了巨量的信息。在巨大的数据量与数据维度下,人已经无法通过人工策略进行分析干预,因此需要基于一套复杂的信息处理逻辑,基于逻辑返回推荐的内容或服务。
- 架构解放了双手:保证整个推荐自动化、实时性的运行。架构包含了接收用户请求,收集、处理、存储用户数据,推荐算法计算,返回推荐结果等。有了架构后可以实时化、自动化的运行。例如在淘宝推荐里,对于数据实时性的处理,就保证了用户在点击一个物品后,后续返回的推荐结果可以立刻根据该点击而改变。一个推荐系统的实时性要求越高、访问量越大,那么这个推荐系统的架构就会越复杂。
推荐系统的整体框架
协议调度:请求的发送和结果的回传。在请求中,用户会发送自己的ID、地理位置等信息,结果回传中会返回推荐结果
推荐算法:算法按照一定的逻辑为用户产生最终的推荐结果。不同的推荐算法是基于不同的逻辑和数据运算过程。
消息队列:数据的上报与处理。根据用户的ID,拉取用户信息,例如性别、之前的点击、收藏等。用户在APP里产生的新行为,例如新的点击会储存在存储单元里。
存储单元:不同的数据类型和用途会储存在不同的存储单元里,例如内容标签与内容的索引存在mysql里,实时性数据存在redis里,需要进行数据统计的数据存储在TDW里。
用户画像
标签是对多维事物的降维理解,抽象出事物更具有代表性的特点。所有的标签最终都会构建为一个立体的画像。
原始数据,包含四个方面:
- 用户数据:例如用户的性别、年龄、渠道、注册时间、手机型号等
- 内容数据:例如游戏的品类,对游戏描述、评论的爬虫之后得到的关键词、标签等。
- 用户与内容的交互:基于用户的行为,了解了什么样的用户喜欢什么样的游戏品类、关键词、标签等。
- 外部数据:单一的产品只能描述用户的某一类喜好,例如游戏的喜好、视频的喜好,外部的数据标签可以让用户更加立体
事实标签,分为静态画像和动态画像
- 静态画像:用户独立于产品场景之外的属性,比较稳定
- 动态画像:在场景中所产生的显式行为或隐式行为
- 显式行为:用户明确地表达了自己的喜好,例如点赞、分享、关注、评分等。评论则需要用NLP的方式来判断用户的感情是正向、负向还是中性。
- 隐式行为:会用实际行动表达自己的喜好,比如点击、停留时长
隐式行为的权值往往不会有显示行为大,但是显示行为比较稀疏,所以要依赖大量的隐式行为
模型标签:由事实标签通过加权计算或是聚类分析所得,通过一层加工处理后,标签所包含的信息量得到提升,在推荐过程中效果更好
- 聚类分析:例如按照用户的活跃度进行聚类,分为高、中、低三类
- 加权计算:根据用户的行为将用户的标签加权计算,得到每一个标签的分数,用于之后推荐算法的计算
内容画像
大概分为以下几类:
- 文章推荐:例如新闻内容推荐,需要利用NLP的技术对文章的标签、正文等提取关键词、标签、分类等。
- 视频推荐:除了对于分类、标题关键词的抓取外,还依赖于图片与视频处理技术,例如识别内容标签、内容相似性等。
环境画像也很重要,比如在短视频的推荐场景中,用户在看一条视频所处的时间、地点以及当时所浏览的前后内容、当天已浏览时间等也是非常重要的信息,但是由于变量数据量较大,类型较多,对推荐架构以及工程实现能力的要求也较高。