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/7/23 0:56:59 阅读更多 →
C++ vector模拟实现:从内存管理到现代C++特性的深度解析

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

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

2026/7/23 15:55:09 阅读更多 →
前言《从Harness Engineering 到 Loop Engineering:长程任务Agent原理与实战》

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

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

2026/7/23 2:30:26 阅读更多 →

最新新闻

TLV320DAC3120音频编解码器配置实战:从数字接口到DAC优化的避坑指南

TLV320DAC3120音频编解码器配置实战:从数字接口到DAC优化的避坑指南

1. 项目概述与核心价值在嵌入式音频系统开发中,选对一颗音频编解码器(Codec)只是第一步,真正让声音“活”起来的,往往是对其数字音频接口和内部DAC的精细配置。很多工程师拿到像TLV320DAC3120这样的高性能器件&#xf…

2026/7/24 8:54:56 阅读更多 →
TSC2117 SAR ADC驱动电阻触摸屏:原理、配置与工程实践

TSC2117 SAR ADC驱动电阻触摸屏:原理、配置与工程实践

1. 项目概述与核心价值 在嵌入式系统开发,尤其是人机交互界面设计中,电阻式触摸屏曾经是,并且在某些特定应用场景下,至今仍是一种可靠且成本效益高的选择。其核心挑战在于如何准确、快速地将触摸屏上模拟的电压变化,转…

2026/7/24 8:54:56 阅读更多 →
双引擎AI开发:OpenClaw与VibeCoding的协同实践

双引擎AI开发:OpenClaw与VibeCoding的协同实践

1. 项目概述:双引擎驱动的AI开发范式演进 2025年将成为AI辅助开发的分水岭之年,OpenClaw与VibeCoding两大技术体系的深度融合正在重塑代码生产流程。这种"需求描述→自动实现"的双引擎模式,本质上构建了人类意图与机器执行间的无损…

2026/7/24 8:54:56 阅读更多 →
CC1101寄存器深度解析与RF1A接口实战:从原理到稳定通信

CC1101寄存器深度解析与RF1A接口实战:从原理到稳定通信

1. 项目概述与核心价值 在物联网和低功耗无线传感网络里摸爬滚打了十几年,我处理过各种射频芯片,但像TI CC1101这样经典且“耐折腾”的Sub-1GHz收发器,始终是许多项目里的中坚力量。很多工程师拿到模块,调通了SPI,能发…

2026/7/24 8:54:55 阅读更多 →
C++与Qt实战:构建电器维修管理系统的核心架构与实现

C++与Qt实战:构建电器维修管理系统的核心架构与实现

1. 项目概述:从零到一构建一个实用的电器维修管理系统最近在整理过往的项目资料,翻到了一个几年前用C独立开发完成的电器维修管理系统。这个项目虽然技术栈不算前沿,但麻雀虽小五脏俱全,从需求分析、数据库设计、前后端逻辑到最终…

2026/7/24 8:54:55 阅读更多 →
男主多角度人设三视图关键词

男主多角度人设三视图关键词

今天分享实测适配 Image2 漫剧模型的古风男主多角度人设提示词,一套指令同时生成特写、正面、侧颜、背面三视图,完美锁定五官、发型、服饰,保证漫剧全程人物不变脸。白底三视图设定图,直接拿来当漫剧角色卡、分镜参考。👇4 位男主完整正向提示词 + 通用负面词 三视图角色…

2026/7/24 8:53:55 阅读更多 →

日新闻

用Highcharts 创建可拖拽三维散点立方体3D图表

用Highcharts 创建可拖拽三维散点立方体3D图表

该案例基于Highcharts scatter3d 三维散点图实现空间立方体散点可视化,核心特色:三维 X/Y/Z 三轴空间,所有散点分布在 0~10 立方体空间内;散点使用径向渐变实现立体 3D 圆球质感;支持鼠标 / 触屏拖拽画布,…

2026/7/24 0:00:29 阅读更多 →
AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口 AppCertDlls 位于 HKLM\System\CurrentControlSet\Control\Session Manager\AppCertDlls。本文的程序功能是只读列出这个键在 64 位和 32 位注册表视图中的全部值,并显示每条值的来源、名称、类型和可安全显示的数…

2026/7/24 0:00:29 阅读更多 →
我的编程之路:第一篇博客

我的编程之路:第一篇博客

大家好,我是一名编程初学者,同时这也是我编程学习之路上的第一篇博客。在这里,我想要向大家介绍我的一些想法和规划。a.自我介绍我是一个刚刚接触编程的新手,目前在学习c语言,我对编程世界充满了强烈的好奇。当然&…

2026/7/24 0:00:29 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/24 3:59:20 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/24 1:23:39 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 17:49:47 阅读更多 →

月新闻