一场决赛留下的共购数据

以一个模拟场景为例:某商城在一场杯赛决赛后的七天里,卖出了大量冠军纪念T恤、冠军围巾和获胜队的主场球衣。协同过滤模型用这周的订单重新训练后,得出一条很“强”的规律:买了主场球衣的人,有很高比例也买了冠军围巾。于是接下来一个月,几乎所有球衣买家都在详情页下方看到了冠军围巾——包括对手球队的球迷。

这就是物品到物品协同过滤(Item-to-Item Collaborative Filtering)在体育电商里的典型问题。它学到的关联是真实的,但这种关联属于某一场比赛、某一个时间段、某一群人,而模型把它当成了商品之间的固有关系。

共购关系背后藏着比赛和球员

“买了A的人还买了B”回答的是商品之间的共现,而体育消费里大量共现是由商品之外的事件驱动的:

  • 比赛效应:一场关键胜利会让同一球队的多件商品同时热卖,它们之间的共购关系只是同一个事件投下的影子。
  • 球员效应:某前锋连续进球,他的背号球衣和代言球鞋同时上涨。模型会认为球衣和球鞋强相关,但驱动两者的是同一位球员,一旦他的状态回落,这条关联也随之消失。
  • 队列效应:赛季初的新会员集中购买入门商品,他们的共购组合会在数据里占很大比重,却不代表老球迷的需求。

如果不把这些背景变量拆出来,共购矩阵就会把短期事件误当成长期偏好。

对手球迷看到冠军围巾

体育消费和一般零售最大的不同之一,是用户之间存在明确的对立关系。在普通服装电商里,买了白T恤的人看到黑T恤不会反感;但在体育电商里,一位长期购买甲队商品的用户,却被推荐了乙队的夺冠纪念品,这就不只是推荐不准,而是一种冒犯。

协同过滤天然看不到这种关系,因为它只统计哪些商品被一起买过。解决办法是在推荐前加入一层球队身份约束:用户有明确的主队标签时,对手球队的纪念商品和球迷商品应该被过滤或强降权,而中性商品——例如训练装备、比赛用球——不受影响。这一层约束不需要复杂模型,但它必须存在,而且优先级要高于共购分数。

昨天的关联不等于今天的关联

体育商品的共购关系寿命很短。决赛周形成的“球衣加冠军围巾”组合,三周以后基本只剩少量补单。如果训练窗口是过去九十天且不做时间加权,这场决赛的订单就会长期主导模型。

比较实用的做法是给共购对加上时间衰减:越近的共购权重越高,同时对事件驱动的峰值做单独标记。示例数据中,可以把决赛周订单的权重按七天半衰期递减,而日常订单的半衰期设为四十五天。这样,事件带来的关联能在热度期内被充分利用,又不会在热度过去后继续占据推荐位。

共购来源 典型寿命(示例)建议处理
决赛、夺冠等单场事件 1-3周短半衰期,事件结束后快速降权
球员连续高光 数天到数周 绑定球员热度指标,热度回落时同步降权
新赛季换装 1-2个月 中等半衰期,按赛季重置
装备搭配(鞋与袜、护具) 长期稳定长半衰期,作为基础关联保留

新球衣上架那天没有任何共购数据

协同过滤的另一个硬伤是冷启动。新赛季球衣上架第一天没有任何历史订单,自然不会出现在“买了这个的人还买了”的推荐位里。可在体育电商里,新球衣恰恰是上架初期最需要曝光的商品。

冷启动要靠内容属性和上下文信号来补位:这件球衣属于哪支球队、是主场还是客场版本、和上赛季同款的价格带是否一致、有哪些球员背号可选。系统可以把上赛季同位置商品的共购关系迁移过来作为先验,再用上架后的真实点击和加购快速修正。在欧宝体育的 Recommendation Engine 中,这种迁移会在新品积累了足够的真实行为后自动退场,避免旧球衣的关系长期挤占新球衣本身的数据。

共购数据里还混着“替代”和“互补”

还有一个更隐蔽的问题:协同过滤分不清两件商品是互补关系还是替代关系。示例数据中,同一支球队的主场球衣和客场球衣经常出现在同一批用户的订单里,模型会把它们当作“买了主场就推客场”。可对大多数普通球迷来说,这两件是替代品——买了其中一件,短期内再买另一件的概率很低;只有少数收藏型球迷会两件都买,而正是他们贡献了共购数据里的大部分关联。

相比之下,球鞋和球袜、球衣和印号服务才是真正的互补关系,买了前者之后推荐后者,用户通常乐于接受。区分这两种关系,可以看共购发生的时间间隔和用户类型:互补品往往在同一订单或几天内一起购买,替代品的共购则集中在少数高频用户身上,而且间隔较长。把这层区分加进去之后,“买了主场球衣再推客场球衣”这类推荐就只会出现在收藏型用户面前。

推荐需要知道“现在发生了什么”

这并不意味着协同过滤没有用。在装备搭配、配件补充这类稳定关系上,它依然高效。问题在于它只能回答“什么东西常被一起买”,而体育电商更需要回答“这个用户此刻为什么想买”。后者要把球队身份、球员热度、赛事日程和库存状态一起纳入,也就是先理解用户的购买动机,再决定推荐哪一类商品——这与判断球迷下一次买球衣还是球鞋是同一件事的两面。

验证改造是否有效,可以做一个简单的对照:同一批用户,一组只用共购推荐,另一组加入球队约束、时间衰减和冷启动补位。要看的不只是转化率,还有对手商品的误推次数、新品首周的曝光占比,以及决赛结束三周后推荐位里仍残留多少事件商品。当这几项数字一起改善,推荐系统才算从统计过去的订单,走向理解体育电商推荐里真正的场景。