专业书籍精读 · ML System Design Interview · 第 9 章

相似房源:你以为在找长得像的,其实在找可替代的

Machine Learning System Design Interview · Ch 9 · Ali Aminian & Alex Xu · 2023

EN →

这一章讲什么?

你在订房网站上点开一套房子,页面往下拉,总有一排「你可能也喜欢」。这一章讲的就是:那一排是怎么挑出来的。

先说个怪事

你大概以为它在找「跟这套像的」——同一个区、同样两居、同样一晚六百。可真按这个筛,挑出来的东西常常没人点。

反过来,有两套房子参数差得不小:一套六百、一套七百五,一套整租、一套带房东,但同一批人来来回回在这两套之间比价、犹豫、最后选了一套。这两套才是真正的「相似」——因为它们在同一群人心里是可以互相替换的。

所以这一章最关键的转向是:谁跟谁像,不由房子的参数说了算,由看房子的人说了算。

旧世界为什么难

难点在于,没人给过答案。全站几百万套房,没有任何一张表写着「A 和 B 相似」。想靠人标?两两配对的数量是天文数字,标一辈子也标不完。

靠参数算又回到了刚才那个坑:同样是「两居、六百、市中心」,一套推窗是地铁口,一套要爬二十分钟山路;照片拍得好不好、住进去舒不舒服,这些没法写进参数的东西,恰恰是人做决定时最看重的。

核心机制:让浏览轨迹替你定义相似

平台手里其实有一个现成的答案——每个人的浏览轨迹。一个人某天晚上连着点开的那七八套房,就是他心里放在一起比较的一组。这种轨迹,平台一天能收上亿条。

做法是给每套房发一张「名片」——一小串数字,机器自己学出来的。规则只有一句:经常出现在同一次逛街里的房子,名片要互相靠近;随便抽来的两套,名片要互相推远。几亿条轨迹过完,名片挨得近的,就是人们真会拿来比较的。

这有点像从大量合影里推断谁跟谁熟:你不用问任何人,只要看谁总是跟谁出现在同一张照片里。

还有一个加料的动作:如果这次逛街最后真订下来了,那被订的那一套对整段轨迹都有发言权——让路上看过的每一套都往它靠一点。因为「最后选了它」比「点开看过」要重得多。

新房子怎么办

刚上架的房子没人看过,自然也没有名片。办法很土但很有效:找附近几套户型和价位都差不多的房子,把它们的名片平均一下,先顶上,等这套房攒够了浏览记录再换成自己的。

这套做法的代价

它只会复述人们已经在看的东西——一套没人点过的好房子,很难被它翻出来,于是冷的越冷、热的越热。

一句话记住

相似房源不是「找长得像的」,是「找会被拿来当替代品的」。而后者不用定义、也定义不出来——它就藏在千万人的浏览轨迹里,把轨迹倒进机器,相似自己会浮出来。

想进到具体机制、记号和示意图? → 切到精读版