推荐系统之---企业级平台推荐设计
前言
很多东西都是想通的,也许你可以从这里借鉴到你想要的东西。
亦或是其他各类平台的工作
- 用户特征识别系统
- 推荐结果收集系统
- 排序算法优化系统的构建
- 评估机制验证系统的开发
如果某些同学已经对这部分内容非常熟悉的话,可以选择性略过。这部分主要是介绍整个架构中各组件之间的关系和作用,并未提供具体的实现细节。
1.用户画像系统
构建用户画像系统是不可或缺的关键环节,在数据处理流程中占据核心地位。如果我们在数据分析初期未能准确把握住方向,在后续的数据优化与模型调优中再做出微调改进,则可能偏离正确的分析路径,在最终的产品效果上难以实现预期目标。因此,在数据质量这一基础要素上必须给予足够重视,并切实保障其专业性和准确性。

上面的这张图,已经很清晰的告诉我们,用户画像在做什么,能做什么。
下面我们看一下用户画像的结构,最底层是原始数据,比如说物品的信息,还有各种日志,观看日志,评论日志,礼物日志等等,有了这些以后对他们进行规划。可以做一些统计行为信息,用户什么时间段喜欢看视屏,每天看多少个,用户的付费能力怎么样,每天付费多少等等。可以根据这些行为日志,算出用户的兴趣,比如一个用户经常看跟没事相关的视频。有了用户画像以后,可以提供给运营系统,还有推荐系统。

用户画像可以分为以下几类:
- 基础属性:年龄、性别、设备型号、安装路径、居住地等等。
- 行为属性:浏览持续时间、访问时段、消费水平、活跃度等等。
- 兴趣属性:用户感兴趣的领域或主题(通常由平台定义),例如动漫类、社科类或历史类等。

2.推荐召回系统
2.1 推荐召回的必要性
首先探讨推荐系统的起源背景时发现随着互联网技术的发展信息过载问题日益突出

2.2 推荐系统功能
推荐系统的功能,简单介绍就是:推荐商品。下面具体介绍
推荐系统的核心功能是构建用户与信息之间的互动关系(其中信息可涵盖任何形式的内容),既要帮助用户筛选出可能感兴趣的资源内容,并及时将这些优质资源展示给对它们感兴趣甚至潜在感兴趣的用户群体;同时也要实现双方资源与用户的互利共赢发展效果。
在应用层面的场景中(例如一个App平台或者一个网站),推荐系统会根据预设的模型算法体系自动完成资源推荐的任务;具体而言,在App端的应用场景下是一个相对固定的系统组件;而在单个内容场景下,则是指基于模型算法推荐你感兴趣的内容,并结合相关性匹配推荐策略(如"同类热榜"等)提供个性化服务;此外,在社交网站运营中还会采取基于相似用户的 friend 或 follow 等行为特征进行精准化推荐策略(如 friend 的兴趣圈层化推荐)。这种动态化的精准化推荐机制旨在预测并满足用户的兴趣需求。
了解了整体流程后,在实际运行过程中会对海量的内容进行初步筛选和去伪去杂处理:首先会对大量冗杂的内容进行分类归档,并剔除低质量、低俗或敏感度较高的内容条目;然后基于用户的兴趣偏好和行为特征数据进行深度挖掘分析;最后再结合预设的算法模型体系生成个性化的内容推送结果。
在实际应用场景中发现:当遇到大量潜在相似性较高的用户提供时(即当一个新用户加入系统后),系统会根据其个人特征属性与现有数据库中的相似度计算结果来生成相应的匹配建议列表;此时如果直接向该新用户提供全部匹配到的相关资源建议会面临数量巨大但无法全部处理的问题;因此我们采用了分阶段推送机制:首先会将最关注的重点内容优先推送给他;其次会对用户的兴趣点及其关联度情况进行综合评估分析;最后按照评估得出的概率排序结果逐步递进式地推送剩余的相关性较低但仍有吸引力的内容给他。这样既保证了用户体验的流畅性又能在有限的时间内尽可能多地覆盖到高价值的内容供给效果。

2.3 推荐系统架构
让我们了解推荐系统的架构。在推荐系统中存在两种不同的交互场景:一种是用户与平台之间的互动;另一种则是平台内部的各种功能模块之间的协作关系。通过消息队列我们可以获取到用户的各项行为日志中的具体表现形式包括观看记录和购买记录等。这些行为信息会被收集并上传至我们的接收服务器中存储在消息推送数据库中以便后续采用两种不同的处理方法:一种是基于这些数据训练机器学习模型用于精准推送内容;另一种则是利用这些数据优化现有的个性化推送算法。

2.4 推荐系统–推荐算法
常用的推荐算法有如下几种
-
流行度推荐算法
- 热门排行榜
-
基于内容的推荐算法
- 标签推荐
-
协同过滤方法
-
基于用户行为的数据模型UserCF实现了协同过滤技术
-
基于物品特征信息的ItemCF实现了高效的协同过滤算法
-
基于深度学习模型构建的ModelCF实现了智能化的推荐系统
- 基于图模型/基于社交关系
2.4.1 流行度推荐
即为基于流行度的排序推荐算法,在现代推荐系统中占据重要地位的一种基础方法。该算法具有以下显著特点:首先从实现难度来看,则属于较为简单的技术方案,并且易于理解和部署;其次在技术细节层面而言,则需要处理大量数据存储的需求,并通过高效的索引机制降低查询开销。该方法特别适合解决新用户首次登录时的用户体验问题(即"冷启动"现象),同时也为资深用户提供个性化兴趣发现的能力,并可与其他协同过滤算法相结合使用,在实际应用中还具有降级替代的作用(例如当核心模型出现故障时)。然而该方法也存在一些局限性:其一在于计算开销相对较小(即计算复杂度较低),这可能导致对实时性较高的场景支持不足;其二则是在索引开销方面表现不佳(即索引存储需求较小),这可能限制其在大规模数据环境下的适用性。此外该方法对原始数据质量高度依赖,在实际应用中可能会因为数据噪声或缺失而导致预测效果大打折扣
- 所有用户看到的界面呈现相同的推荐结果,并无个性化的定制。
- 行列更新的速度较为缓慢,在短期内不会有太大的变动。
- 系统容易遭受攻击行为(即通过刷榜等方式恶意获取优势)。

下面介绍两种推荐排行榜的方式:
时间衰减
时间衰减

想象一下,在这一模型中 Score 与 P 成正比关系,在这种情况下如果 P 升高 Score 同样会随之上升;而 Score 与 G 和 T 则呈反比关系,在时间 T 增长的过程中 Score 也会相应地降低;尤其是在涉及幂函数的情形下 提高重力因子 G 的值 将会使分母整体上有所扩大 进而导致 Score 的下降情况更加明显。
在实际应用中 如果能够合理掌握并调节好参数 G 的取值范围 就可以直接运用"时间衰减"这一特性来满足需求。
贝叶斯平均
贝叶斯平均

2.4.2 基于内容的推荐
下面将介绍基于内容推荐的方法:通过用户的兴趣偏好与商品特性进行匹配来为用户提供感兴趣的商品推荐。例如,在表格中列出用户的A的兴趣权重:旅游权值为0.8%,美食为0.3%,舞蹈为0.7%;根据这些权重进行商品推荐给用户A。同样地,在这种情况下,用户的B也会采用相同的策略

在内容推荐机制中,在具体应用场景下表现出的具体表现为实现相对简便,并且能够使得推荐结果易于理解。其核心优势在于无需复杂的计算过程即可处理未有用户评分的新物品,并通过当前用户的评分数据建立兴趣模型完成相关推荐任务。这种方法的优势在于避免了传统协同过滤算法中需要进行近邻搜索所带来的额外计算开销。然而该方法也存在一定的局限性:主要体现在新用户的 cold start 问题上(即首次登录或注册的新用户),通常需要生成相应的标签信息(如图片、视频等),这些信息往往难以提取有效的标签来描述其属性特征(因为视频和图片难以提取有效的标签信息)。因此这种方法仅能输出与当前用户兴趣相似的物品,并不能够发现那些可能带来惊喜的内容(例如如果你的兴趣维度偏向于美食而非旅游,则系统会优先输出与美食相关的商品而完全无法给出旅游相关内容的任何建议)。

2.4.3 协同过滤
我们认识到推荐系统的架构要素之一是协同过滤技术。这一项核心要素就是基于目标用户的活动模式识别出具有相似兴趣的一群人。这些人群基于共同积累的经验基础形成了一个互动网络。这种互动网络通过影响他们的行为轨迹从而形成一套完整的推荐机制。

我们看一下它的优缺点
优点
- 提供高度个性化推荐功能,并具备较高的自动化水平,在收集其他用户的行为数据的基础上优化推荐结果,并持续更新和优化相关内容以提升学习效率。
- 支持用户间的观点交流,并减少基于单一数据源导致的内容分析偏差的可能性。
- 帮助识别用户可能感兴趣的领域或内容类型。
缺点
- 用户和项目的数量都很大,在这种情况下评分矩阵会变得严重稀疏这会显著降低算法的效率。
- 新用户新项目存在冷启动问题
- 用户间的协同过滤(CF)模型的可解释性不足
2.4.3.1 相似度计算
【Jaccard相似度】
- 由于涉及用户间的相似度计算,采用Jaccard相似度作为评估指标。Jaccard相似度即为两个集合中共同元素数量与总元素数量之比。特别适合用于布尔向量的计算场景,如基于用户的收藏行为进行分析。它的算法也是非常简单的。

【欧氏距离】
欧几里得方法用于计算M维空间内任意两点之间的真实距离。通过欧几里得公式得出的结果总是非负数,并且其最大值可达无穷大。在实际应用中,相似性度量常被缩放到[-1,1]范围内来衡量各维度上数值差别的绝对程度。衡量的是各维度上数值差别的绝对程度,在实际应用中常用以反映数据间的相似性与异同程度,在实际应用中常用以反映数据间的相似性与异同程度,在实际应用中常用以反映数据间的相似性与异同程度,在实际应用中常用以反映数据间的相似性与异同程度,在实际应用中常用以反映数据间的相似性与异同程度,在实际应用中常用以反映数据间的相似性与异同程度

【余弦相似度】
通过计算两个向量之间的夹角余弦值来衡量它们之间的相似程度;余弦相似度涵盖文本、用户以及物品等多种场景;其取值范围限定在-1到1之间。
接近1则表明两向量的方向极为相近。
接近-1则意味着两向量的方向呈现完全相反的状态。
接近0则表明两向量大致垂直。

2.4.3.2 UserCF和ItemCF对比
对比一下两种协同过滤算法
- 在应用领域方面,
- UserCF适用于在物品数量远超用户数量的情况。
- ItemCF则适用于在物品数量远少于用户数量的情形。
- 例如,在直播领域中持续开播的主播数量通常较为稀少。
就实时性而言
当UserCF用户的出现引发新的交互行为时 推荐系统不会立即进行调整 而是会在模型完成重新训练后才能生成新结果
同样地 对于ItemCF情况而言 系统也会经历类似的延迟响应过程 以确保最新的信息能够被正确呈现
-
在 cold-start 问题上
-
当 UserCF 新用户或新物品产生交互行为后, 也需要等待模型更新才能获得推荐结果或被推荐出去。
-
其一, 在 ItemCF 中, 对于新用户的推荐而言, 只要其与已有项目产生互动即可给予相似项目的推送; 其二, 则是对于新增的项目而言, 必须经历模型更新阶段才能完成初始推送给潜在用户的任务。
-
关于推荐依据
-
基于用户行为的协同过滤算法(UserCF)在提供推荐依据方面存在不足
-
基于物品的协同过滤算法(ItemCF)则能够有效捕捉用户的兴趣偏好,在具体实施上可参考‘看了又看’、‘买了又买’等用户互动行为进行建模

2.4.4 基于模型的推荐–ALS
如图所示为基于模型实现协同过滤算法(ALS)的过程示意图。评分矩阵左侧标注为"U-V矩阵"(User-Item Matrix),其中每一行为一位用户的行为记录;每列为不同种类的商品或服务项(Items)。行与列交叉处的数据表示用户的评分记录;未打分的位置则表示该用户对该物品缺乏互动记录。虽然数据稀疏度较高意味着大部分位置为空值;但 ALS 算法通过学习用户的偏好与物品特征之间的潜在关系;能够在保证计算效率的同时较好地填充这些缺失数据点(Missing Data Points)。具体而言,在实际应用中通常会将原始的大规模数据矩阵分解为多个低维的小矩阵维度组合(Low-Rank Matrix Factorization)。这种降维处理不仅能有效减少存储空间需求;还能提升后续推荐系统的预测准确性(Prediction Accuracy)。通过这种方法;系统可以在给定用户的评分基础上;预测其对未有打分项目的潜在兴趣程度;从而实现精准化的个性化推荐服务

通过具体实例进行说明, 左边是一个大矩阵, 它被分解为两个小矩阵. 计算出这些小矩阵的值后, 就可以用于填充缺失的数据部分. 第一位用户的评分评估结果能够反映出其偏好.

我们可以了解Spark ALS的具体应用场景,在算法中输入端需要接收用户ID、物品ID以及对应的评分值。当模型完成训练后会对整个用户群体进行个性化推荐工作,在完成所有推荐任务后系统会生成新的推荐列表,并按评分从高到低进行排序处理将排序后的结果反馈给用户体验以供参考使用 如果有进一步的研究需求建议访问参考微博获取更为详细的技术说明

2.4.5 领域和矩阵分解的区别
我们看一下领域和矩阵分解的异同
【从方式来看】
- 领域本质依赖于统计学方法而非需要学习过程。
- 矩阵分解方法属于机器学习范畴,并通过优化预设目标函数来构建最优模型。
【从复杂度来看】
- 领域包含M名用户与N件物品。
- 矩阵分解采用基于MF的方法,在F维隐向量空间中处理数据集。
计算复杂度为O(F \times (M + N))。
比基于用户的协同过滤方法计算复杂度更低一些。
- 矩阵分解采用基于MF的方法,在F维隐向量空间中处理数据集。
【从冷启动来看】
- 在领域ItemCF系统中,默认情况下只要新用户对任何物品产生过互动行为(如点击、收藏等),系统会自动识别并为他们推荐与之相关的其他物品。
需要注意的是,在这种情况下,默认情况下生成的推荐结果可能会存在一定的延迟性。 - 通过矩阵分解算法处理后的数据,在新的用户或新的物品出现时,在双方都有过交互记录之后(如购买记录、评分等),系统会在完成模型参数更新训练之后才开始输出新的推荐结果。
【从推荐理由来看】
- 领域可以提供推荐解释
- 矩阵分解没有推荐解释

2.5 推荐结果的融合
在召回阶段结束后,在整合多个来源的推荐数据时,请将多个来源的推荐数据整理成一个汇总清单,并列出三种混合方法。
- 交叉式混合:将不同推荐算法的结果整合后向用户呈现其综合信息。
- 切换式混合:根据应用环境选择合适的推荐算法,在不同的场景下灵活切换。
- 分级混合:先比较不同算法的优势与劣势,在满足需求时优先采用表现优异的方案。
3. 推荐排序系统
在召回阶段中涉及多个通道的数据,并由于数据量庞大而缺乏可比性,在排序阶段需要对这些结果进行精确的偏好和质量评估以完成统一排序
他采取的方法是结合用户的某些行为数据进行评估,并将这些信息输入到排序模型中以计算其发生的概率有多大。随后按照计算出的可能性从高到低进行排序并反馈给用户

在企业环境中,在当前情况下被广泛应用的机器学习排序模型同样采用融合类算法模型。今天仅作为初步介绍将简要提及GBDT+LR方法,在后续的文章中将单独详细阐述这一部分内容。
- Facebook 2014年的一篇论文中探讨了 GBDT+LR 的解决方案。
- 采用 GBDT 对一些稠密特征求取重要性指标后生成叶子节点,并将这些叶子节点与离散化的其他特征输入进 LR 模型进行训练。
- 采用 GBDT 替代人工处理连续值特征求取离散化的步骤,并同时结合其他方法优化分割点位置的同时,在一定程度上提升了模型性能,并减少了人工处理的工作量。

4. 推荐系统评估系统
算法评价指标
算法评价指标
算法评价指标
- 精确度:在排序列表中被标记为"相关"的项目所占的比例为 TP/(TP+FN)。
- 召回效果:被标记为"相关"的项目在结果列表中出现的概率为 TP/(TP+FP)。
- 覆盖性:描述一个推荐系统对长尾项目的捕获能力,在整个商品集合中被推荐出来的商品数量占比为 PoppedItemsCount/TotalItemsCount。
【产品层面】
- 用户留存
- 用户付费消费
- 用户浏览时长
规划一个关键绩效指标(KPI),以指导推荐系统的核心算法发展。与传统方法不同的是,在量化效果方面存在明显差异。具体实施过程中需要持续进行大量实验验证以筛选出能够在性能上显著提升的算法方案。首先需进行离线实验验证:确定核心参数后运行模型并收集相关数据;随后分析数据结果并优化模型参数;最终对优化后的模型进行全面评估以验证其效果。若未能达到预期效果,则需对该方案进行调整并继续测试新的优化路径。

完成这一流程需要做大量的支撑工作。一方面需要进行模拟功能开发,在线运行后可实时查看结果,并能通过模拟功能对多个实验进行验证。另一方面,在分析问题时这个系统发挥着关键作用:根据环境数据和用户特征进行分类,并通过召回排序算法计算出推荐列表;同时计算出每个用户的推荐ID,并基于这些信息统计评估指标;最后根据评估结果调整算法参数以优化性能。

这是AB测试中添加实验页面的设计。该页面基于环境数据与用户特征设计实验方案,并根据不同的目标设定具体的研究方向。例如可设置北京地区的城市选择以及性别为男的用户群体的研究方向;例如可研究晚高峰时段的商品浏览习惯研究等

添加完成后, 就可以进入到系统中查看其推荐效果. 如果发现推荐效果不尽如人意, 则需要进行一些数据分析, 并进入模拟系统推荐页面查看具体情况. 调整完毕后再次检查一遍以确保优化到位.

参考:
1.冯丙见老师上海演讲
2.《推荐系统实战》
3.《集成群体智慧》
