指导推荐系统了解人们希望居住的位置:地理嵌入技术
某住房推荐系统在双塔模型中用学习得到的H3地理嵌入替代了原始的经纬度数据。该系统的构建方式以及所呈现的A/B测试结果。
来源: **Location Matters: Leveraging Multi-Resolution Geo-Embeddings for Housing Search**
一个拥有数百万房源的房产交易平台面临着发现难题。面对如此庞大的房源库,为每位用户找到合适的房源是关键,而对大多数人而言,决定性的因素就是房源的位置。本文介绍了拉丁美洲最大的房产平台——该平台帮助租户、买家和房东无需繁琐手续即可完成租赁和购房——的推荐系统团队如何重新设计其模型以理解地理位置。相关研究成果在2025年于布拉格召开的RecSys会议上发表,以下所有数据均为该团队提供的数值。
为何位置需要特别关注
对该平台近800名用户的调查显示,超过半数人将位置视为决定租赁决策的最重要因素,甚至超过了价格、面积和配套设施。这看似显而易见,但在推荐系统中,位置却是最难准确处理的信号之一。
接下来的内容将介绍地理感知嵌入:这类学习得到的向量能够编码房产的位置以及不同地点之间的相似度,推荐系统可以直接使用这些信息。
第一个版本的情况
该推荐系统采用双塔模型,这种架构由谷歌和YouTube推广,用于在庞大的商品目录中进行检索。一个塔负责处理用户信息,另一个塔负责处理房屋信息。两者都会被投影到一个共享的嵌入空间中,通过点积来衡量匹配程度的高低。该平台内部这类模型的统称是HUE,即House User Embeddings的缩写。
第一个版本被刻意设计得非常简单,完全基于表格结构。房屋方面的每个属性在用户方面都有对应的属性,这些值是通过计算该用户最近十五次交互的滚动统计结果得出的。
这是一种简洁的设计:房屋通过其属性来描述,用户则通过他们查看过的房源概要来呈现,而系统会自动分析两者之间的关联。在这种方案下,租金、建筑面积和卧室数量等数据表现良好,因为某人最近查看的15处房源的租金中位数能够较好地反映其预算水平。不过位置信息则无法做到这一点,而这正是这个项目诞生的原因。
为何原始坐标不适合作为特征
坐标本身并无实际意义。纬度和经度构成的全球网格与人们对于地点的认知方式并无关联,像-22.97这样的数值也无法让模型了解科帕卡巴纳的任何信息。若要利用这些坐标,模型就必须通过密集的层级将每个城市的每个社区从连续的平面中划分出来,仅凭交互数据来学习这些边界。这会耗费大量模型算力去处理本地居民早已知晓的信息。
数值上的接近并不等同于功能上的相似。一条河流、一条高速公路或一道山脊都可能将相距仅500米的两处地方分隔开来,导致它们在交通、价格和特色等方面存在差异。而相距十公里的两个社区却可能成为特定租客的近乎完美的替代选择。坐标之间的欧几里得距离并不能很好地回答关键问题:这个人在两个地方会同样开心吗?
平均坐标会消除信号特征。这就是致命的问题,它会影响到用户所在的位置。试想一下,里约热内卢的租客在比较科帕卡巴纳和巴哈达蒂茹卡这两个常见选择时,他们观看历史数据的中位坐标会落在蒂茹卡山区,而那里几乎没有任何可出租的房源。对于大多数人来说,他们需要考虑两三个不同的区域,但这样的处理方式会让他们被压缩到某个他们根本不会考虑的单一点上。
在更换表示方式之前,团队试图通过加入经纬度的平方值来修复这个问题,这样密集的层就能更轻松地描述弯曲的区域。不过改进效果微乎其微,而这微小的改进程度本身就揭示了问题所在——如果某个特征在模型使用之前需要先进行多项式展开,那就说明是表示方式有缺陷,而非模型本身有问题。因此,团队停止直接向模型提供坐标,转而开始教它地理知识。
两个结构上的难题
任何方法都必须应对两个问题。
第一个问题是数据稀疏性。某个小区域内的住宅数量很少且分布不均。如果在过小的范围内进行分析,可用数据很快就会耗尽;而模型在每个地点观察到的交互数据太少,无法得出可靠结论。
第二个问题是功能相似性并未明确说明。房源列表中没有任何内容表明某个社区可以替代另一个社区,也没有解释原因——比如是否靠近海滩、交通便利程度、安全性、价格水平等。这些信息只存在于人们的搜索行为中,因此模型必须从行为数据中学习这些信息,否则就无法完成分析。
解决方案:基于多分辨率H3单元格的双塔模型
该团队没有手动设计功能,而是训练了一个具有对比学习目标的双塔网络,从而使位置表示源自实际观察到的行为。用户塔用于编码人,位置塔用于编码地点,训练过程会将那些在真实且意图明确的互动中同时出现的人和地点的向量结合在一起。
最重要的是地点的描述方式。原始坐标已被弃用,取而代之的是将每个属性映射到 Uber 的 H3 网格上,该网格会将经纬度坐标转换为六边形单元格 ID。由于 H3 是分层结构,任意点在每个分辨率下都位于一个单元格内,分辨率从粗略的(6 级分辨率下每个单元格约 36 平方公里)到精细的(9 级分辨率下每个单元格约 0.105 平方公里)不等。每个单元格 ID 都是一个离散的标记,因此可以像在文本模型中学习词嵌入那样为其学习嵌入向量。
分辨率为6、7、8和9的H3级单元各自拥有独立的嵌入层,同时还会加入一个城市级嵌入层以捕捉城市区域的整体形态。位置塔会将所有这些嵌入层拼接起来,再通过一对全连接ReLU层进行处理,最终为每个位置生成一个32维向量。
用户端的设计被刻意简化:仅有用户ID嵌入层以及后续的密集层,因此几乎所有的学习过程都在位置塔中完成。其作用是引导每个位置嵌入向量更贴近用户实际互动过的地点。训练完成后该层会被丢弃,剩下的就是一组位置向量,供下游模型重复使用。
为何要同时使用多种分辨率? 单一的精细单元虽然精度高,但获取数据的能力有限。而单一的粗糙单元虽然数据丰富,却会模糊掉重要的差异。通过分层设置不同分辨率,当某个特定单元的交互数据较少时,模型可以借助周边区域的信息,同时在有充足证据的地方保留局部细节。这就好比空间领域的特征金字塔,也是解决数据稀疏问题的有效方法。
训练信号。 损失函数采用对比预测编码中的InfoNCE目标函数。每行代表来自真实高意图交互的(用户,位置)对,这类交互指的是已预约的访问或已提交的报价。负面样本并非手动选取,而是在每个批次中,其他用户的位置自动充当负面样本,这种方式无需额外成本,且能反映真实需求。
有一个问题需要考虑。地点并非像任意的物品编号那样,因为许多用户可能同时对同一地点表现出兴趣。当批次中的负样本恰好是同一用户曾经接触过的地点时,损失函数会将其视为假负例并予以忽略,从而避免错误地使这对数据分开。相似度具有温度参数,交叉熵会在用户与地点之间双向应用。
该模型是用 PyTorch Lightning 构建的,采用 Xavier 均匀初始化、32 维嵌入向量、Adam 优化器,批量大小为 512。训练数据包含约 400 万条高意图事件,由大约 100 万不同用户生成。只有诸如预订访问或提出报价之类的强信号会被保留,而点击之类的低意图噪声事件则会被剔除。
评估方式
该比较涵盖了三种模型:基于矩阵分解的基线模型(仅使用最精细的H3单元的隐式反馈ALS)、仅使用H3分辨率9级的双塔模型,以及完整的多分辨率双塔设计。两项评估任务同时进行。
内在评估直接考察嵌入质量,不依赖任何下游任务,通过两项指标来判断是否发生维度坍缩。第一项是信息丰度,在近期关于嵌入坍缩的研究中,它被定义为嵌入矩阵奇异值之和除以最大的那个奇异值。在32维情况下,其数值范围从1(完全坍缩)到32(各维度贡献相等),数值越高越好。第二项是标准化后的嵌入协方差矩阵的奇异值谱,该指标反映了方差在各个维度上的分布情况。如果奇异值呈平缓的下降趋势,说明模型正在充分利用其容量;而如果出现急剧下降,则表明发生了维度坍缩,嵌入向量会退化为低秩子空间。
所展示的谱图非常清晰。单分辨率模型在较高阶数时下降得十分陡峭,这是模型崩溃的迹象。而多分辨率模型在这三种模型中的衰减最为平缓,这意味着它的方差分布均匀,且能够充分利用嵌入空间。
外部评估旨在判断更好的嵌入是否真的能帮助用户。该评估使用了“相似房源”模块一个月的生产日志(2025年3月),该模块属于物品间推荐系统,用于展示与某个参考房源相似的房源。对于每个参考房源,系统会先根据该参考房源的地理嵌入与各个候选房源嵌入之间的余弦相似度来重新排序推荐结果,随后逐步剔除相似度低于设定阈值的推荐项。
最核心的业务指标是租赁转化率,即最终导致明确行动(到店参观或提交租赁申请)的推荐内容所占比例。点击数据存在较多干扰,因此选用租赁转化率作为衡量标准,因为它能反映真实的兴趣程度。针对每种模型和阈值,都会根据该模型中具有有效相似度分数的未过滤推荐内容来计算提升效果,表格则显示了各阈值的平均值。训练工作于2024年12月完成,评估则使用了2025年3月的日志数据,因此评估期间的任何信息都不会泄露到训练过程中。
在曲线中,随着推荐列表的缩小,在最严格的筛选条件下多分辨率模型表现最佳,而基于学习的方法则在中等筛选条件下趋于集中。最具参考价值的对比是与普通的径向距离过滤器相比:最大的提升来自基于学习的相似度计算,而非对邻近房源的优先考虑。
结果
该平台主要运营两大业务线:租赁和销售。离线评估侧重于租赁业务,因为该领域的需求量最大;而在线效果则针对这两类业务进行评估。
随着模型复杂度的提升,两种离线评估方式的性能均有所改善。在展示数据之前需说明一点:租赁流量的提升是基于对历史数据重新排序的模拟结果,并非实际实验数据。实际的A/B测试结果将在后文介绍。
从矩阵分解方法转向单分辨率双塔模型后,信息丰富度提升了158%,模拟的租金上涨幅度则达到了84%。多分辨率H3嵌入进一步使信息丰富度提升了40%,达到21.7,同时模拟的上涨幅度升至10.9%,几乎是前一步的两倍。简而言之,为模型提供多尺度空间背景不仅提升了嵌入质量,也增强了其对用户的实际影响。
为便于理解这些嵌入向量,团队开发了一个内部工具,可在地图上显示最近邻节点。在科帕卡巴纳选择一个深色的锚点六边形,周边的一组单元格就会亮起,这些单元格被模型视为功能上相似的。这一工具有助于验证模型学到的地理信息是否符合人们对城市的认知。
对相似房源进行在线A/B测试。在撰写本文时,“相似房源”轮播图的实验仍在进行中。该实验现已结束,所得成果如下:
- 租赁业务:点击通过率上升4.18%,最终促成看房的点击量上升3.38%。
- 销售业务:点击通过率上升5.53%。
实际效果才是关键。无论是离线指标还是A/B测试结果都表明:地理嵌入技术确实有效。
将地理嵌入技术引入HUE
这项重新排序研究起到了概念验证的作用。真正的目标是将经纬度信息从推荐系统本身中分离出来,这成为了正式推荐系统的第二代版本。预训练好的GeoEmbeddings存储在共享的塔中且保持不变,这样推荐系统就能持续接收到地理信号,无需重新学习地理信息。这两个塔以不同的方式使用这些数据。
房屋信息塔的改动只是简单的替换:它原先接收的是房源的坐标,现在则接收包含该房源的H3单元格的GeoEmbedding。
用户行为塔需要更深入的重新设计,因为不能简单用其他等价事物替代中间值——平均这些数值没有任何意义。实际上,该系统会按顺序输入涵盖此人最近十次事件的序列,每条记录都会标注事件类型,这样普通浏览和实际预订在统计上就有区别;同时还会加入最新程度编码,帮助模型判断信号应多快衰减。
在科帕卡巴纳和巴拉之间做选择的租户不再被局限在两者之间的山区某处,模型现在可以同时看到这两个地点。它能够分辨出哪些是刚刚被浏览过的,哪些导致了实际预订,以及哪些发生得更早。
总体而言,这两项改动为该团队带来的提升是迄今为止单次功能调整中所见过的最大幅度。通过排列重要性指标衡量,GeoEmbeddings成为第二代推荐系统中的最重要特征,实际进行的A/B测试显示,租赁业务中的预订量增长了1%,销售业务中的报价提交量增长了3.3%。这类平台层面的转化率提升充分体现了特征表示质量对下游结果的重要影响。
下一步计划
地理信息本身还有更多潜力可挖。未来的计划包括引入更明确的邻近度指标,如到地铁站、学校和公园的距离,同时提升特征表示的精细度,使其更加细致且动态化。
一个更为重要的发现几乎是偶然得来的。用户行为塔的重新设计是HUE首次将某人的使用历史视为一系列有序的事件,而非一堆汇总统计数据,而这种做法确实取得了成效。它引发了一个自然的问题:如果用序列来描述一个人的搜索历程是合适的方式,那么它是否也适用于描述该人的其他所有行为?
为了解答这个问题,他们开发出了SENNA——一种基于序列的多模态推荐系统,其整个用户行为塔就是该人互动过的各个页面的序列,每个页面都会被完整描述,还包括照片。地理嵌入数据则作为固定的地理信息输入。
位置一直是用户最关心的因素。让模型能够在不同尺度上分析位置,而非将坐标仅仅视为一个数字,为团队提供了满足这一需求的方法。
背景资料
这些想法源自少数几份公开资料:Covington、Adams和Sargin在2016年发表的关于YouTube双塔检索的论文,Yi及其同事在2019年提出的经过采样偏差校正的双塔模型,van den Oord、Li和Vinyals在2018年发表的对比式预测编码论文,Guo及其同事在2024年进行的嵌入崩溃研究,以及h3geo.org上的H3地理空间索引文档。