Feed 流的排序算法:时间线、热度与个性化的融合排序
Feed 流的排序算法时间线、热度与个性化的融合排序一、如果只按时间排序用户看到的全是三天前的广告如果只按热度用户看不到朋友刚发的动态Feed 流排序是一个经典的三维决策问题。三个维度分别是时间新的排前面、热度点赞多评论多的排前面、个性化用户可能感兴趣的排前面。这三个维度天然存在矛盾。刚发出来的内容热度肯定低按热度排就沉底了。朋友发的生活动态热度一般但用户想看——个性化维度需要给这类内容加权。单一维度的排序都会让用户体验变差。纯时间排序导致优质内容被淹没纯热度排序让新内容没有曝光机会马太效应纯个性化排序需要准确的用户兴趣模型冷启动困难。所以 Feed 流排序的核心是把这三个维度融合成一个统一的排序公式每个维度设置合理的权重。二、排序公式的设计一个典型的 Feed 流排序公式如下Score w1 × TimeDecay(age) w2 × Popularity(interactions) w3 × Relevance(user, content)时间衰减TimeDecay(age) 1 / (1 α × age_hours)。随着内容发布时间的增长得分逐渐下降。α 控制衰减速度α 越大衰减越快。对于新闻类 Feedα 应该设大几小时内就沉底对于知识类 Feedα 应该设小好内容可以保持较长的曝光期。热度分Popularity log(1 likes 2×comments 3×shares)。评论和分享的权重高于点赞因为这些操作的互动深度更大。取对数是为了抑制马太效应——如果直接用原始值一篇 10000 赞的文章会把所有其他内容都压死。个性化相关性Relevance cosine_similarity(user_embedding, content_embedding)。通过用户的行为历史看过哪些内容、点了哪些赞学习用户的兴趣 embedding计算与内容 embedding 的余弦相似度。 Feed 流排序引擎 核心公式Score w1 * time_score w2 * hot_score w3 * relevance_score 权重设定原则 - 社交类 Feed朋友圈w1 更高时效性优先 - 资讯类 Feed新闻w1 很高 - 知识类 Feed知乎w2 更高优质内容优先 - 推荐类 Feed抖音w3 更高个性化优先 import math import numpy as np class FeedScorer: def __init__(self, w_time0.4, w_hot0.3, w_relevance0.3): 三个维度的权重根据业务场景调整 为什么总和是 1.0 - 让最终得分有明确的物理意义和范围 - 方便不同版本排序公式之间的效果对比 self.w_time w_time self.w_hot w_hot self.w_relevance w_relevance def score(self, content, current_time, user_embeddingNone): 对单条内容打分 Returns: float: 0~1 之间的得分 # 维度1时间衰减 age_hours (current_time - content.publish_time) / 3600.0 # α 设为 0.1意味着 10 小时后得分降为原来的一半 time_score 1.0 / (1.0 0.1 * age_hours) # 维度2热度分取对数抑制马太效应 # 对数底数影响热度分的增长速率 # 2 为基础互动避免 log(0) 的情况 hot_score math.log( 2 content.likes 2 * content.comments 3 * content.shares ) / math.log(100) # 归一化到 0~1 # 维度3个性化相关性 relevance_score 0.5 # 默认值未知用户兴趣时给中间分 if user_embedding is not None and content.embedding is not None: relevance_score self._cosine_similarity( user_embedding, content.embedding ) # 映射到 0~1cosine 范围是 [-1, 1] relevance_score (relevance_score 1) / 2 # 加权融合 final_score ( self.w_time * time_score self.w_hot * hot_score self.w_relevance * relevance_score ) return final_score def _cosine_similarity(self, a, b): 余弦相似度 return np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b))三、排序后的业务规则干预纯算法排序的结果有时候会出现不合理的现象同一个用户连发 5 条动态全部排在 Feed 流的前面。这会让其他内容完全没有曝光机会。业务规则干预的目的是修正算法排序中不合常理的结果。打散规则同一作者的内容之间至少间隔 3 条其他内容。实现方式是遍历排序结果如果当前内容的作者和上一条相同则把它下沉到后面的位置。去重规则多个关注对象转发了同一内容Feed 中只显示第一条后面的去重。置顶规则运营指定的内容活动公告、系统通知强制排在第一位。多样性规则确保相邻的内容在类目上不同。如果连续 3 条都是同一类目第 3 条下沉。这些规则在执行上需要谨慎过多的业务规则会让排序失去一致性用户刷新时可能出现结果剧烈波动。四、A/B 测试的评估框架Feed 流排序的效果评估用传统指标CTR、点赞率是不够的。需要加入用户体验相关的指标互动率看到 Feed 后有点赞/评论/分享的用户比例。内容多样性用户一次 Feed 刷新中看到的不同作者数量。停留时长用户在 Feed 流上的停留时间不是刷走的秒数。长尾曝光率粉丝少的用户发布的内容被看到的比例。五、总结Feed 流排序不是一个单一公式的问题而是一个加权融合 规则干预 A/B 验证的持续迭代过程。三维度的权重设定高度依赖内容平台的定位——社交型重时间、知识型重热度、推荐型重个性化。排序公式只是框架后续的业务规则打散、多样性保障、效果评估这些看似不属于算法的工作往往比调权重对最终用户体验的影响更大。

相关新闻

小程序毕设项目:基于 SpringBoot 的供应链采购供货数据统计平台 商品货源配送与供货运维小程序 (源码+文档,讲解、调试运行,定制等)

小程序毕设项目:基于 SpringBoot 的供应链采购供货数据统计平台 商品货源配送与供货运维小程序 (源码+文档,讲解、调试运行,定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/10/31 18:22:08 阅读更多 →
C++ vector模拟实现:从内存管理到现代C++特性的深度解析

C++ vector模拟实现:从内存管理到现代C++特性的深度解析

1. 项目概述:为什么我们要亲手模拟实现vector?在C的世界里,std::vector几乎是每个开发者最早接触、也最频繁使用的容器。它封装了动态数组,提供了自动内存管理、随机访问和高效的尾部增删操作。然而,对于许多开发者来说…

2026/10/31 23:26:13 阅读更多 →
前言《从Harness Engineering 到 Loop Engineering:长程任务Agent原理与实战》

前言《从Harness Engineering 到 Loop Engineering:长程任务Agent原理与实战》

前言:写给每一个未来的 Loop 工程师“你不该再给编程 Agent 写提示词了,你应该设计循环来提示你的 Agent。” —— Peter Steinberger, OpenClaw 创始人为什么写这本书 2026 年中,AI 工程领域正在发生一次安静的革命。 如果说 2022 年 ChatGP…

2026/10/30 23:49:51 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/1 0:24:43 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/1 10:36:53 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/1 10:36:51 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/1 1:06:58 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/1 10:35:11 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/1 9:35:41 阅读更多 →

日新闻

周新闻

月新闻