3、用户冷启动进阶:基于内容的推荐方法、利用社交网络信息、跨域推荐迁移学习
好,咱们接着聊用户冷启动。上一章讲的是基础打法,说白了就是怎么用人口属性、设备信息这些「明牌」来凑合推荐。但说实话,那些方法只能解决「有没有」的问题,解决不了「好不好」的问题。
我当年在电商平台做冷启动时,遇到过一个头疼的场景:一个新用户注册进来,性别、年龄、地域全填了,但推荐给他的商品点击率就是上不去。为什么?因为人口属性太粗了。你知道他是25岁男性,但你不知道他喜欢篮球还是喜欢钓鱼,对吧?
所以这一章,咱们来点进阶的。三种思路:基于内容的推荐、社交网络信息、跨域迁移学习。每一种我都踩过坑,咱们一个一个说。
3.1 基于内容的推荐方法
基于内容的推荐,核心思想就一句话:用用户对已有物品的偏好,去推荐相似的新物品。冷启动场景下,用户没有行为,那怎么办?
嗯,这里有个技巧——用注册时的「种子兴趣」来替代历史行为。
比如用户注册时选了「科技」「数码」两个兴趣标签。那我们就用这两个标签去召回内容。怎么召回?
- 物品画像:每个商品或文章,提前打好标签向量。比如一篇关于iPhone的文章,标签可能是[科技:0.9, 数码:0.8, 摄影:0.3]。
- 用户画像:用户注册时选的标签,直接作为初始用户向量。比如[科技:1.0, 数码:1.0]。
- 相似度计算:用余弦相似度或点积,算用户向量和物品向量的匹配度。
核心公式:
score(user, item) = sum( user_tag_weight * item_tag_weight )
说白了就是加权求和。简单,但有效。
我在项目中遇到过一个问题:用户选的兴趣标签太宽泛了。比如选了「美食」,结果推荐了一堆「火锅底料」和「方便面」,用户根本不买账。后来我加了一个标签细化策略——把「美食」拆成「中餐」「西餐」「烘焙」「零食」等子标签,让用户选得更细。效果立竿见影。
避坑指南:我曾经犯过一个错——直接用用户选的标签做推荐,没做归一化。结果某个标签权重特别大,导致推荐结果被这个标签「绑架」了。后来我强制每个标签的权重不超过0.3,才稳住。
3.2 利用社交网络信息
你想想看,一个新用户来了,他可能没有行为,但他可能有朋友。朋友喜欢什么,他大概率也喜欢。这就是社交网络信息的价值。
具体怎么做?我总结了三步:
- 找朋友:通过手机通讯录、微信好友、微博关注等渠道,找到新用户的社交关系链。
- 聚合兴趣:把朋友们的兴趣标签或历史行为聚合起来,作为新用户的「代理兴趣」。
- 降噪处理:朋友太多怎么办?只取关系最近的5-10个朋友。关系越近,权重越高。
我记得有一次做社交电商的冷启动,用户注册后允许我们读取通讯录。我们把他通讯录里所有好友的购买记录拉出来,做了一个加权汇总。结果推荐点击率比纯人口属性方法高了40%。
注意隐私问题:社交数据很敏感。我曾经因为没处理好用户授权,被投诉过。一定要在用户明确授权的前提下使用,而且数据要脱敏。别踩红线。
还有一种更轻量的做法——利用「关注」关系。比如新用户关注了某个大V,那大V推荐过的内容,可以直接推给新用户。这招在内容平台特别管用。
3.3 跨域推荐迁移学习
这是最进阶的一招。说白了就是:你在A平台有行为,我把这些行为迁移到B平台来用。
举个例子:一个新用户在淘宝上买过很多书,但他第一次来我们的音乐App。我们能不能用他在淘宝的购书记录,推断他可能喜欢什么类型的音乐?
可以。这就是跨域推荐。
具体做法分两种:
| 方法 | 原理 | 适用场景 |
|---|---|---|
| 特征迁移 | 把用户在源域的特征(如购买品类)映射到目标域的特征(如音乐风格) | 两个域有明确的映射关系 |
| 模型迁移 | 在源域训练一个用户兴趣模型,用目标域少量数据微调 | 两个域用户群体相似 |
我个人习惯用特征迁移。为什么?因为简单。你想想看,用户买过「编程书」,那映射到音乐域,他可能喜欢「电子音乐」或「古典音乐」(程序员嘛)。买过「健身器材」,那可能喜欢「摇滚」或「嘻哈」(健身时听的)。
映射表怎么建?我建议用人工规则 + 数据验证。先让运营同学列一个粗略的映射,然后上线A/B测试,看哪个映射效果最好,再迭代优化。
代码示例:跨域特征映射
# 伪代码,展示映射逻辑
source_domain = {'编程书': 0.8, '健身器材': 0.6}
mapping_table = {
'编程书': ['电子音乐', '古典音乐'],
'健身器材': ['摇滚', '嘻哈']
}
target_interest = {}
for item, weight in source_domain.items():
for target_tag in mapping_table[item]:
target_interest[target_tag] = target_interest.get(target_tag, 0) + weight
# 输出:{'电子音乐': 0.8, '古典音乐': 0.8, '摇滚': 0.6, '嘻哈': 0.6}
这里要注意一个坑:映射不能太死板。我曾经把「母婴用品」直接映射到「儿歌」,结果推荐给一个刚生完孩子的妈妈,她确实需要儿歌,但她也需要「轻音乐」来放松。后来我把映射改成了多标签,效果才好。
3.4 三种方法的组合策略
实际项目中,我不会只用一种方法。我一般这样组合:
- 新用户注册前30分钟:用基于内容的方法(种子兴趣)快速出推荐结果。
- 注册后1小时内:如果用户授权了社交信息,加入社交网络推荐,提升多样性。
- 注册后24小时内:如果用户在其他平台有行为数据,用跨域迁移学习做二次校准。
说白了,就是先快后准,逐步迭代。别指望一步到位,冷启动本身就是个渐进的过程。
我的经验:三种方法叠加使用时,权重分配很关键。我一般用「衰减权重」——基于内容的方法初始权重0.6,社交方法0.3,跨域方法0.1。随着用户行为增多,基于内容的方法权重逐渐降低,行为推荐权重逐渐升高。这样过渡自然,用户不会觉得推荐结果「跳变」。
好了,这一章的内容就这些。三种进阶方法,每一种都能单独撑起一个冷启动方案。但真正的高手,是懂得怎么把它们组合起来用的。下一章咱们聊聊「物品冷启动」,也就是新商品上架时怎么推荐,那又是另一套玩法了。