本文复盘了在民宿预订这一低频、高决策成本场景下,推荐系统面临的核心挑战与解题思路。重点讨论了极度稀疏数据下的协同过滤失效、非标房源的结构化特征工程、以及基于动态任务权重的多目标优化方案。希望能为做搜广推的同学提供一些真实场景的参考
1. 业务背景与算法挑战
我们平台是国内民宿行业的头部,日均搜索推荐请求量过亿。但民宿场景和传统电商、内容信息流有本质区别:
用户行为极度稀疏:用户年均出行仅2-3次,下单前却有1-2周的反复搜索比对期。历史行为间隔太久,偏好漂移严重,常规协同过滤几乎失效。
房源极度非标:房东上传的图片、描述质量参差不齐,面积、装修风格、周边环境等信息结构化程度低,很难像标品那样做标准化特征工程。
决策链条极长:用户从搜索到下单,中间经历大量比对、收藏、分享、咨询,转化信号极其稀疏,正负样本比例严重失衡。
这些特点决定了,直接把电商或信息流的成熟方案搬过来,效果会很差。以下是我们针对几个关键模块的实践思路。
2. 召回层的探索:从“精准匹配”到“启发式探索”
早期我们以向量召回和关键词匹配为主。但分析用户行为后发现,用户输入“胡同里的院子”时,其实并不清楚自己想要什么。单纯匹配“胡同+院子”的关键词,会把用户困在信息茧房里。
我们尝试了探索式召回:在实时捕捉用户意图的基础上,引入一定比例的“非直接相关但高互动率”的房源。做法是构建一个基于用户实时会话序列的意图扩散模型,在当前意图节点的二阶邻居中采样候选。这个策略让长尾房源曝光量提升了约15%,客单价也有正向变化。
3. 精排层:多目标优化的跷跷板问题
点击率、转化率、客单价、GMV——这些目标互相拉扯。我们试过硬参数共享和MMOE,但发现由于业务的强周期性(周末、节假日、季节),不同塔之间容易出现“跷跷板”效应。
后来我们引入了动态任务权重:根据距离出行日期的远近,动态调整转化率与客单价的权重。对于近期出行的用户,加大转化率权重;对于提前规划的用户,则偏向客单价和体验感。这本质上是一个基于业务先验的帕累托最优近似,训练时把时间距离作为条件输入,让模型学习不同阶段的偏好分布。线上验证时,整体转化率有个位数上涨,旺季客单价没有明显下跌。
4. 冷启动的另一种思路:基于房东信誉度的图模型
新房源冷启动是民宿行业的通病。除了常规的内容理解(图文多模态特征提取、设施标签体系),我们还尝试了一种基于房东信誉度的图传播。如果一个新房源由高信誉度房东发布,且描述、设施和该城市热门房源有相似的特征分布,我们会在重排阶段给予一个短暂流量暴增窗口,然后根据后验数据决定后续流量分配。这个方案的核心是建立房东-房源-城市的异构关系图,用图卷积做半监督传播。
5. 一些踩过的坑
特征实时性比模型复杂度更关键:用户在出行前的搜索意图变化很快,离线特征窗口过长会导致推荐与当前意图脱节。我们花了很大精力优化特征流水线的时效性,而不是死磕模型结构。
在线打分的一致性校验:线上线下特征拼接不一致导致的打分偏移,排查起来非常耗时。建议建立完善的特征监控和打分diff体系,这对保障用户体验很重要。
6. 写在最后
低频高决策场景下的推荐系统,还有很多值得深挖的命题:如何更好地建模用户的决策心理、如何在保护隐私的前提下做跨端行为融合、如何让推荐结果具有更好的可解释性等等。
如果你读完这篇文章有想法,或者有更好的解法,欢迎通过站内私信交流。大家一起把这块的技术往前推一步。