用户没点过某个球员,AI为什么仍然可能把他推荐出来? 示意图
原创示意图,用于说明分析思路,非实拍画面

先设想一个用户。他过去一个月的行为很简单:看了几场某支控球型球队的赛后集锦,收藏过两篇讲“中场如何组织出球”的战术文章,搜索过一次“左脚中场”。他从没点开过任何一名年轻中场,但今天首页上,这名年轻中场的一条成长轨迹分析出现在第二屏。

如果推荐系统只会数点击,这条内容永远不会出现,因为他没点过。它出现,说明系统在用另一种方式理解这个用户:不是“点过哪些名字”,而是“关心哪一类问题”。这篇文章沿着这条推荐路径,讲江南体育智能推荐是怎样一步步走到这名球员的。

先把“点击记录”翻译成“兴趣方向”

用户的每次行为,在系统里首先被拆成一组属性,而不是一个孤立的名字。看一场集锦,对应的是球队风格(控球型)、比赛类型、涉及的球员位置和角色;读一篇战术文章,对应的是内容类型(战术分析)、话题(中场出球);搜索“左脚中场”,对应的是位置、惯用脚和角色。这些属性合在一起,才构成用户的兴趣画像。

这份画像里有两类信息:稳定的长期兴趣,比如他长期关注中场和战术分析;以及短期的即时兴趣,比如这周恰好在看某场比赛。两者的权重不同,混在一起会让推荐忽冷忽热。喜欢一支球队,为什么推荐系统不应该只给你看这支球队里已经谈过这个区别,这里不再展开,只强调一点:兴趣画像的单位是“方向”,不是“名字”。

知识图谱里,球员不是孤零零的一行数据

知识图谱把体育世界里的对象和关系存成一张网:球员与位置、球员与角色、球员与球队、球队与战术风格、球员与赛事、球员与年龄段、内容与被提及的球员。每条边都带着类型,比如“主要位置是”“在……体系中踢”“被……内容提及”。

回到那位用户。系统沿着他的兴趣方向在图谱里走:

  1. 用户偏好“控球型球队”,图谱里挂着一批这类球队。
  2. 这些球队里,有一类球员的角色被标注为“组织型中场”,惯用脚是左脚的是其中一部分。
  3. 在这批球员的周围,有一名年轻的中场,他在一支次级联赛球队踢球,角色特征与这类球员相近,但曝光很低。
  4. 关于这名球员,站内有一篇成长轨迹分析,内容标签与用户读过的战术文章重合。

这条路径就是“为什么推荐他”的理由:不是因为用户点过,而是因为他在图谱里与用户的兴趣方向只隔了两三步。这里的球员、路径和标签都是为说明而设的模拟示例,并不指向任何真实球员或球队,也不代表某个真实用户的行为记录。

图谱给出路径,Embedding 给出“像不像”

只有图谱的问题是:边是人工或规则建立的,没有建立的关系就等于不存在。一名新球员刚进入数据库,几乎还没有被内容提及,他在图谱里只有位置、年龄、球队几条边,很难被走到。这就是冷启动。

补救办法是再加一层球员Embedding:用事件数据和追踪数据把每名球员压成一个向量,向量相近的球员在风格上相近。当图谱路径太少时,向量相似度可以让系统发现“虽然还没有多少内容,但踢法和用户喜欢的那类球员很接近”的对象。两种信号合起来用,一个负责可解释的路径,一个负责补足图谱的空白。类似的相似球员推荐,也出现在江南体育App为什么会推荐一个你没搜索过的年轻球员这篇里,站在用户界面的角度解释了同一件事。

为什么要故意留出一部分“不确定”的推荐

如果所有推荐都严格贴着用户历史,首页很快会变成一个回声室:看过什么就给什么,用户的兴趣也就被锁死在已知范围里。为了避免这一点,推荐系统会专门留出一部分位置给“探索”。

探索的做法不是随机乱推,而是在图谱上向外多走一步:用户喜欢“控球型球队的组织型中场”,探索位可以给他“防守反击球队里同样承担出球职责的中场”,或者“年龄更小、还没有进入一线队的同类球员”。这些内容和他的兴趣有关,但他很可能还没有接触过。这部分内容的占比不宜过高,也不宜为零,具体取值需要根据用户反馈持续调整,没有一个通用的固定比例。这类问题也是体育推荐最容易陷入什么“信息茧房”这篇要专门讨论的重点。

每条推荐都应该附带一句人能看懂的理由

推荐可解释,是知识图谱相对于纯黑盒模型的一个实际优势。图谱路径可以直接转成一句话:“因为你常看控球型球队的中场分析,这名年轻中场的角色与其相近”。用户看到理由,就有机会判断系统有没有理解错:如果他其实只是恰好看了几场比赛,并不关心中场,那么点一下“不感兴趣”,系统就能修正。

可解释还有一个用处,是帮编辑和工程师排查。推荐结果出现奇怪的对象时,沿路径回溯,很快就能看出是哪条边出了问题,是某个标签打错了,还是某个相似度阈值定得太松。

图谱推荐会错在哪里

  • 关系过期:球员转会、位置改变、教练更换后,图谱里的边如果没有及时更新,路径就会指向已经不成立的关系。
  • 过度泛化:“同一联赛”“同一年龄”并不等于风格相似,把这类弱关系当成强关系,会让推荐变得牵强。
  • 热门偏置:被内容提及越多的球员,图谱里的边越多,越容易被走到。这会让曝光本来就少的球员长期被冷落,需要用相似度和探索位去对冲。
  • 标签质量:角色和风格标签来自模型识别,本身有误差;一个被错标为“组织型”的球员,会顺着错误的路径进入不相关用户的推荐。
  • 用户兴趣漂移:短期热点会让画像临时偏移,需要设置遗忘和衰减,否则用户一周前的兴趣会被当成长期偏好。

这些问题目前都没有一次性解决的办法,只能靠持续的数据校验、抽样人工检查和用户反馈来收敛。江南体育智能推荐的当前思路,是让图谱、Embedding 和反馈三部分互相牵制,任何一部分单独出错时,其他两部分能把结果拉回来一些。

点击只是反馈的一部分,还有别的信号要读

把“点击”当作唯一反馈,会让系统偏向标题吸引眼球的内容。更完整的信号包括:内容是否读完、是否收藏、是否在同一话题下继续浏览、是否主动点了“不感兴趣”,以及推荐位被跳过时的行为。这些信号合起来,才能区分“好奇点开”和“真的有帮助”。

对于探索位上的内容,反馈更需要耐心。用户第一次看到一名陌生的年轻球员,可能不会立刻点击,但几天后在别的场景里主动搜索了他。这类延迟反馈很难被即时指标捕捉到,需要把观察窗口拉长。

用户数据如何使用也值得说明:兴趣画像应当只服务于内容推荐,并且用户应当有办法看到并调整自己被归入了哪些兴趣方向。至于当前产品里这类入口具体如何呈现,以江南体育App页面上的实际设置为准。

回到开头的那个用户。他从没点过那名年轻中场,却在推荐里看到了他。这不是巧合,而是图谱把他的兴趣方向、Embedding 把球员的踢法、探索位把“还没发现”的空间,合在一起的结果。如果想继续看推荐系统如何避免把用户困在已知内容里,可以到江南体育智能推荐栏目翻阅同系列文章。