「购物意图预测」算法模型该如何适配产品类目?

聊透购物意图预测:怎么让你的模型在不同类目里“活”起来?

说真的,每次跟朋友聊起推荐算法,我总喜欢打个比方。这玩意儿就像你去楼下小卖部买东西,老板娘记性特好,你一进门她就知道你要买酱油还是买烟。但要把这种“读心术”搬到线上,面对成千上万的商品和用户,还得靠算法。今天咱们就来唠唠这个核心——购物意图预测,特别是那个让人头大的问题:怎么让同一个模型,或者说同一套逻辑,在卖口红和卖电钻的时候都能表现得像个“老江湖”?

很多人觉得,不就是把数据喂给模型吗?用户看了A商品,模型就推B商品。这想法太笼统了。实际上,不同类目的用户行为逻辑,简直是天差地别。你要是用卖快消品的法子去卖大家电,那结果估计惨不忍睹。这就是我们今天要拆解的“类目适配”难题。

第一步:别急着建模,先看懂“人”和“货”的脾气

在动手写代码之前,我们得先像侦探一样,去观察不同类目下的用户行为。这是最基础,也是最容易被忽略的一步。我见过太多团队,拿到数据就直接开始特征工程,结果模型上线后效果平平,就是因为他们没搞懂数据背后的“人话”。

咱们把商品类目大致分成两类来对比,你会发现规律特别明显:

  • 高频、低价、冲动型消费(比如零食、日用品、配饰):这类商品的决策路径非常短。用户可能就是刷着手机,突然看到一包辣条,觉得“诶,有点馋”,下一秒就下单了。他们的浏览行为往往是碎片化的,收藏、加购、比价这些行为相对较少。意图非常直接,就是“我想买个东西解解馋”。
  • 低频、高价、理智型消费(比如家电、数码、家具):这就完全是另一回事了。没人会看到一台冰箱就立刻下单。用户会花几天甚至几周的时间做功课:看评测、比参数、逛论坛、问朋友。在这个过程中,他们会频繁地收藏、加购、反复浏览同一个商品。这里的意图是复杂的,是“我想换个冰箱,但我得确保它性价比最高”。

所以,意图预测的第一步,就是识别用户当前处于哪个“决策阶段”。对于快消品,模型可能更关注用户“此刻”的点击流;而对于耐用品,模型则需要理解用户“长期”的探索过程。如果不区分这一点,模型就会把一个正在货比三家的冰箱买家,误判为一个冲动消费的零食买家,然后给他推一堆无关的优惠券,这不就闹笑话了吗?

数据特征的“翻译”艺术

搞懂了行为差异,接下来就是怎么把这些差异量化,让机器能“听懂”。这就是特征工程的活儿了,我管它叫“翻译艺术”——把人类的复杂行为,翻译成机器能处理的数字。

这里有个常见的误区,就是“一招鲜吃遍天”。比如,不管什么类目,都用“最近30天点击次数”作为核心特征。这在某些类目里可能有效,但在另一些类目里就是噪音。

我们得为不同类目定制“翻译词典”:

1. 时间窗口的魔法

对于美妆护肤类目,用户的复购周期相对固定。比如一瓶精华液大概能用两个月,那么用户在购买后45天左右再次开始浏览同类商品,这个意图就非常强烈了。模型需要捕捉这种周期性意图。但对于手机壳这种东西,用户可能一年才买一次,也可能因为摔了手机当天就买。所以,模型的时间窗口要更灵活,可能更看重“最近7天”的行为。

2. 行为权重的分配

同样是点击,点击一个商品的详情页和点击一个商品的评论区,权重是不一样的。同样是加购,加购一个9.9元的手机支架和加购一个9999元的笔记本电脑,背后的心理活动也完全不同。

我们可以构建一个行为权重矩阵,这个矩阵需要根据类目特性来调整。比如在高客单价的类目里,“查看问答”、“对比相似商品”这类行为的权重就应该调得非常高,因为这代表了用户正在深度研究。而在快消品类目里,“加入购物车”可能就是最高权重的意图信号。

行为类型 快消品类目权重 耐用品类目权重 说明
浏览详情页 耐用品需要深度了解
查看评论/问答 极高 耐用品决策依赖口碑
加入购物车 快消品加购即接近购买
对比同类商品 极高 耐用品比价行为普遍

这个表格只是个示意,实际操作中,这些权重需要通过模型训练自动学习,但初始值的设定必须基于对业务的理解。否则,模型可能会学到一些奇怪的规律,比如它发现“点击次数多”和“购买”负相关,但它不明白这是因为用户在反复对比,迟迟下不了决心。

模型结构的“变形金刚”

聊到模型本身,现在主流的CTR/CVR预估模型,比如DeepFM、DIN、BST这些,本质上都是在学习特征之间的交叉关系。但问题又来了,一个在“服装”类目上训练得很好的模型,直接拿去预测“手机”的销量,效果肯定打折扣。为什么?因为特征交叉的模式不一样。

举个例子,在服装类目,“用户身高/体重”和“商品尺码”的交叉是核心;但在手机类目,“用户现有手机品牌”和“新手机品牌”的交叉(比如换机)才是关键。这两个场景下的特征空间和交互逻辑完全不同。

所以,我们不能指望一个模型参数通吃所有类目。业界现在有几种主流的适配思路,我一个个给你拆解:

思路一:领域特定的模型(Domain-Specific Models)

最简单粗暴,也最有效。就是给每个重要的类目(或者几个相似的类目组)单独训练一个模型。比如,我们有“女装模型”、“美妆模型”、“手机模型”。

优点:极致的定制化,模型能完全学到该类目的独特规律,效果通常最好。

缺点:维护成本高到爆炸。每次特征更新,你得重新训练和上线几十个模型。对于长尾类目,数据量不足,模型很容易过拟合。

思路二:多任务学习(Multi-Task Learning, MTL)

这个思路现在非常流行。它的核心思想是,我们设计一个模型,让它同时学习多个任务。比如,一个主干网络学习所有类目的通用规律(这叫“共享参数”),然后在主干网络之上,为每个类目(或几个类目组)分出一个“小脑袋”(这叫“任务特定参数”)。

这样,模型既能学到“用户喜欢点击大图”这种通用知识,也能学到“买口红的用户特别在意色号试色”这种特定知识。

MTL的关键在于如何划分任务。直接按一级类目分可能太粗,按叶子类目分又可能导致某些任务数据稀疏。通常的做法是,根据类目的相似性和用户行为模式,把它们聚合成几个大的“意图域”(Intent Domain)。比如,把所有“厨房用品”归为一个域,把所有“大家电”归为一个域。这样既能保证每个任务的数据量,又能实现一定程度的定制化。

思路三:引入元学习(Meta-Learning)

这个就比较前沿了,有点像“教会模型如何学习”。我们不直接训练模型在某个类目上的参数,而是训练模型获得一种“快速适应新类目”的能力。

想象一下,我们先在数据丰富的类目(比如服装、3C)上训练,让模型见识过各种各样的意图模式。然后,当一个新的、数据很少的类目(比如“园艺工具”)出现时,模型只需要看这个新类目的少量数据,就能迅速调整自己的内部参数,快速“上岗”。

这对于解决长尾类目的冷启动问题特别有帮助。虽然实现起来很复杂,但它代表了未来的一个方向:让算法更智能,而不是更笨重。

评估与迭代:别信指标,信“体感”

模型上线了,怎么知道它好不好用?看A/B测试的指标?对,但不全对。

离线评估指标,比如AUC、LogLoss,只能告诉你模型在数学上拟合得怎么样。但一个在离线数据上AUC高达0.9的模型,上线后可能把推荐流搞得一团糟。为什么?因为它可能学会了“抖机灵”,比如它发现某个用户每次点进“厨具”类目都会买一把“菜刀”,于是就疯狂给他推菜刀,但实际上他只是在做菜谱研究。

所以,除了看指标,我们更要看“业务体感”。这里有几个我常用的“土方法”:

  • Bad Case分析:每天抽出100个用户推荐失败的案例,人工去复盘。看看模型到底错在哪了?是没理解用户意图,还是商品本身有问题?这个过程虽然慢,但能最直观地告诉你模型的短板。
  • 意图覆盖率:我们希望模型能覆盖用户的各种潜在意图,而不是只盯着用户已经表现出来的意图。比如,一个用户最近在看“跑步鞋”,模型除了推其他跑步鞋,能不能也推一些“运动袜”、“运动耳机”?这考验的是模型泛化和联想的能力。
  • 类目间的“和谐”:推荐流不能只推某个爆款类目。一个健康的推荐流,应该能引导用户探索更多可能性。如果模型发现某个用户对A类目感兴趣,就疯狂推荐A类目,这其实是一种“信息茧房”,长期来看会伤害用户体验。我们需要在模型中加入一些“多样性”惩罚机制。

迭代的过程,就是不断重复“观察行为 -> 调整特征 -> 训练模型 -> 上线测试 -> 分析Bad Case”这个循环。没有一劳永逸的模型,只有不断学习和进化的系统。

最后的碎碎念

聊了这么多,其实核心就一句话:永远不要脱离业务场景去谈算法模型

购物意图预测,本质上不是在预测一个数字,而是在理解一个活生生的人,在特定场景下的特定需求。他可能是在为周末的聚会挑选零食,也可能是在为新家添置家电。这两种意图,天差地别。

所以,下次当你面对一个新类目时,别急着去调参。先放下键盘,像个真正的用户一样,去逛逛这个类目,看看大家都在关心什么,聊聊他们为什么买,又为什么放弃。当你真正理解了这些,你的模型才能真正“活”起来,才能在冰冷的数据背后,找到那一点点人性的温度。

这活儿,急不得,也骗不了人。