Обучение системы рекомендаций тому, где люди хотят жить: гео-вкладки
Сервис рекомендаций жилья заменил сырые координаты широты и долготы на обученные гео-вкладки H3 в модели с двумя башнями. Описание способа её создания и результаты тестов типа A/B, которые были получены.
Источники: **Location Matters: Leveraging Multi-Resolution Geo-Embeddings for Housing Search**
На рынке недвижимости с миллионами объявлений существует проблема с поиском подходящих вариантов. При таком большом количестве предложений ключевой задачей является показ каждому человеку именно того дома, который ему нужен, причем для большинства людей решающим фактором остается местоположение. В этой статье рассказывается, как команда по рекомендациям крупнейшей в Латинской Америке платформы недвижимости, помогающей арендаторам, покупателям и арендодателям совершать сделки без обычных бумажных процедур, переработала способ, с помощью которого её модель понимает местоположение. Результаты работы были представлены на конференции RecSys 2025 в Праге, а все приведённые ниже цифры — это данные, предоставленные самой командой.
Почему местоположение требует особого внимания
Опрос почти 800 пользователей платформы показал, что более половины из них считают местоположение самым важным фактором при принятии решения об аренде, превосходя его по значимости цену, размер и дополнительные удобства. Это кажется очевидным, однако местоположение относится к числу самых сложных показателей для правильной обработки в системах рекомендаций.
Остальная часть статьи посвящена геоориентированным эмбеддингам: извлечённым векторам, которые кодируют местоположение недвижимости и степень сходства между различными местами в такой форме, что рекомендательная система может использовать их напрямую.
На каком этапе находилась первая версия
Рекомендательная система представляет собой модель с двумя «башнями» — архитектуру, популяризированную Google и YouTube для поиска в очень больших каталогах. Одна «башня» обрабатывает информацию о пользователе, а другая — информацию о доме. Каждая из них проецируется в общее пространство эмбеддингов, где скалярное произведение показывает степень соответствия. Внутренняя серия таких моделей в платформе называется HUE — сокращение от House User Embeddings.
Первая версия была намеренно простой и полностью табличной. Каждый атрибут, связанный с домом, имел аналог среди атрибутов пользователя, который рассчитывался как суммарная статистика за последние пятнадцать взаимодействий человека.
Это упорядоченный дизайн: дома описываются с помощью их характеристик, пользователи — кратким перечнем того, что они просматривали, а система определяет, как эти два аспекта связаны между собой. Арендная плата, площадь и количество спален хорошо себя проявили в рамках этой схемы, поскольку медианная арендная плата за последние пятнадцать просмотренных объявлений довольно точно отражает бюджет пользователя. С местоположением так не получилось, и именно по этой причине существует этот проект.
Почему сырые координаты являются плохими признаками
Координата не имеет практического значения. Широта и долгота образуют глобальную сетку, не связанную с тем, как люди воспринимают места; значение вроде -22.97 ничего не говорит модели о Копакабане. Чтобы использовать его, слои модели должны выделить каждый район каждого города из непрерывной плоскости, определяя его границы исключительно на основе данных о взаимодействии. Это требует значительных ресурсов модели для того, чтобы узнать то, что уже известно любому местному жителю.
Числовая близость — это не функциональное сходство. Река, автомагистраль или хребет могут разделить два места, расположенных всего в 500 метрах друг от друга, придавая им разные условия транспортного сообщения, цены и особенности. Два района, находящихся в десяти километрах друг от друга, могут быть практически идеальными заменителями для определенного арендатора. Евклидово расстояние между координатами — это слабая замена на самый важный вопрос: будет ли этот человек так же доволен в обоих местах?
Среднее значение координат уничтожает сигнал. Это фатальная проблема, которая влияет на антенну пользователя. Представьте арендатора в Рио-де-Жанейро, сравнивающего Копакабану и Барру-да-Тижуку — распространённую пару мест. Медианная координата по его истории просмотра оказывается в горном массиве Тижука, где практически нет объектов для аренды. Любой, кто рассматривает два-три разных района, что характерно для большинства людей, оказывается сведённым к одной точке, которую он бы никогда не выбрал.
Прежде чем заменить способ представления, команда попыталась исправить ситуацию, добавив к координатам квадраты широты и долготы, чтобы более плотные слои могли легче описывать изогнутые территории. Улучшение было незначительным, и именно это незначительность стало ключом к диагнозу. Функция, требующая полиномиального расширения перед тем, как модель сможет её использовать, указывает на некорректное представление, а не на ошибку в самой модели. Поэтому команда перестала подавать модели координаты и начала обучать её географии.
Две структурные сложности
Любой подход должен справляться с двумя проблемами.
Первая — это редкость. Количество домов в микрорайоне невелико и распределено неравномерно. Рекомендуется работать строго в узких границах, при этом запас данных быстро исчерпывается, а модель видит слишком мало взаимодействий в каждом месте, чтобы выучить что-то надежное.
Вторая проблема заключается в том, что функциональное сходство нигде не описано. В описании объекта нет ничего, что указывало бы на возможность замены одного района другим или причины этого: доступ к пляжу, транспорт, безопасность, уровень цен. Такие знания существуют только в способах поиска людей, поэтому модели приходится извлекать их из поведения или обходиться без них.
Подход: двух-башенная модель на основе многоразрешающих ячеек H3
Вместо ручной разработки функций команда обучила сеть с двумя башнями с использованием контрастивной цели, чтобы представления местоположений формировались на основе наблюдаемого поведения. Башня пользователей кодирует людей, а башня местоположений — места; в процессе обучения объединяются векторы пользователей и мест, которые встречаются вместе в реальных взаимодействиях с высокой интенсивностью.
Самое важное — это способ описания места. Чистые координаты не используются. Вместо этого каждое свойство индексируется в сетке H3 от Uber, которая преобразует пару широты и долготы в идентификатор гексагональной ячейки. Поскольку сетка H3 иерархична, любая точка находится в одной ячейке для каждого уровня разрешения — от крупного (примерно 36 км² на ячейку при разрешении 6) до мелкого (около 0,105 км² при разрешении 9). Каждый идентификатор ячейки является дискретным токеном, поэтому для него можно выучить эмбеддинг так же, как выучиваются эмбеддинги слов в текстовых моделях.
Ячейки с разрешениями H3 6, 7, 8 и 9 проходят через свой собственный слой вжимания, а также добавляется вжимание на уровне города для отражения общей структуры городских районов. Башня локаций объединяет все эти вжимания и пропускает их через пару полностью связанных слоев ReLU, в результате чего для каждой локации формируется 32-мерный вектор.
Структура на стороне пользователя преднамеренно упрощена: сначала идет вжимание идентификатора пользователя, за которым следуют плотные слои, так что почти весь процесс обучения происходит в башне локаций. Ее задача — направить каждый вжиматель локации к тем местам, с которыми пользователь действительно взаимодействовал. После обучения она удаляется, и остается набор векторов локаций, которые затем используются другими моделями.
Почему несколько разрешений сразу? Одна тонкая ячейка обеспечивает точность, но страдает от нехватки данных. Одна крупная ячейка имеет большое количество данных, но не может выявить значимые различия. Использование нескольких уровней разрешения позволяет модели опираться на окружающую область, когда конкретная ячейка содержит мало данных о взаимодействиях, сохраняя при этом локальные детали там, где их достаточно. Можно представить это как пирамиду признаков для пространства — прямое решение проблемы редкости данных.
Сигнал обучения. Функция потерь — это цель InfoNCE из контрастного прогностического кодирования. Строки представляют собой пары (пользователь, местоположение), взятые из реальных взаимодействий с высокой интенсивностью, то есть забронированных визитов или отправленных предложений. Отрицательные примеры не выбираются вручную. Внутри каждой группы данных местоположения других пользователей выступают в роли отрицательных примеров, что не требует дополнительных затрат и отражает реальный спрос.
Есть одна проблема. Местоположение не похоже на произвольный идентификатор элемента, поскольку многие пользователи могут одновременно иметь положительные отзывы о одном и том же месте. Когда отрицательный отзыв из группы оказывается относящимся к тому же местоположению, с которым уже взаимодействовал тот же пользователь, алгоритм рассматривает это как ложно отрицательный результат и маскирует его, чтобы пара не была ошибочно разделена. Показатели сходства имеют параметр «температуры», и функция кросс-ентропия применяется в обоих направлениях — от пользователя к местоположению и обратно.
Модель была создана с использованием PyTorch Lightning с методом равномерной инициализации Xavier, 32-мерными эмбеддингами, оптимизатором Adam и размером группы в 512 элементов. Объем обучающих данных составил примерно 4 миллиона событий с высокой интенцией, сгенерированных примерно миллионом различных пользователей. Были сохранены только сильные сигналы, такие как бронирование посещения или предложение, а шумные события с низкой интенцией, такие как клики, были удалены.
Как происходила оценка
Сравнение включало три модели: базовую модель с факторизацией матрицы (ALS с косвенной обратной связью, использующая только самые крупные ячейки H3), модель с двумя башнями, работающую исключительно с разрешением H3 9, и полную модель с двумя башнями и множественным разрешением. Два способа оценки выполнялись одновременно.
Внутренняя оценка напрямую анализирует качество вкладок, независимо от каких-либо последующих задач, с использованием двух критериев для выявления коллапса. Первым является обилие информации, определяемое в недавних исследованиях коллапса вкладок как сумма сингулярных значений матрицы вкладок, деленная на крупнейшее из них. При 32 измерениях этот показатель варьируется от 1 (полный коллапс) до 32 (когда каждое измерение вносит одинаковый вклад), поэтому чем выше значение, тем лучше. Вторым критерием является спектр сингулярных значений нормализованной матрицы ковариации вкладок, который показывает, как распределяется дисперсия между измерениями. Плавное, равномерное снижение означает, что модель полностью использует свою производительность, тогда как резкий спад свидетельствует о коллапсе измерений, при котором вкладки деградируют до низкорангового подпространства.
Отображаемый спектр четкий. Модель с одной разрешающей способностью резко снижается при более высоких индексах ранга, что является признаком коллапса. Модель с множественной разрешающей способностью демонстрирует наименее резкое снижение среди трех, что означает, что ее дисперсия равномерно распределена, и она полностью использует пространство вкладок.
Внешняя оценка направлена на определение того, помогают ли лучшие вкладки пользователям. Для этой цели были использованы месячные записи из системы производства (март 2025 года) из модуля «похожие дома» — системы рекомендаций от товара к товару, предлагающей дома, похожие на дом, указанный в качестве эталона. Для каждого эталонного дома первоначальные рекомендации были переранжированы с учетом косинусного сходства между гео-вкладкой эталона и вкладками каждого кандидата, после чего рекомендации, соответствующие рекомендуемому порогу сходства, постепенно удалялись.
Основным ключевым показателем в бизнесе является коэффициент потока аренд — доля отображаемых рекомендаций, которые привели к действию с явной целью: личному визиту или предложению об аренде. Клики могут вводить в заблуждение, поэтому вместо них используется коэффициент потока аренд, поскольку он отражает истинный интерес. Для каждой модели и порогового значения рассчитывалось улучшение по сравнению с нефильтрованными рекомендациями этой модели, имевшими действительные значения сходства; в таблице приведен средний показатель по всем пороговым значениям. Обучение завершилось в декабре 2024 года, а для оценки использовались данные за март 2025 года, поэтому ничего из периода оценки не попало в процесс обучения.
По мере сокращения списка рекомендаций модель с множественной разрешающей способностью демонстрирует лучшие результаты при самых строгих критериях отбора, в то время как методы, основанные на обучении, сгруппировываются в средней части диаграммы. Наиболее показательным сравнением является сравнение с простым фильтром радиального расстояния: наибольшая польза была достигнута благодаря методам оценки сходства, а не за счёт учитывания домов, расположенных рядом.
Результаты
Платформа работает в двух основных направлениях: Аренда и Продажа. Оффлайн-оценка сосредоточена на операциях аренды, где объём запросов с высокой интенсивностью наибольший, в то время как онлайн-эффективность оценивалась для обоих направлений.
В обоих оффлайн-сценариях качество улучшалось с каждым уровнем сложности модели. Прежде чем привести цифры, стоит отметить, что улучшение показателей аренды основано на симуляции, выполненной на основе переранжирования исторических данных, а не на реальном эксперименте. Результаты реальных A/B-тестов приведены ниже.
Переход от факторизации матрицы к модели с двумя башнями одной разрешающей способности позволил увеличить показатель информационного изобилия на 158%, а симулированное увеличение доходов от аренды — на 84%. Многоразрешающие вкладки H3 добавили ещё 40% к показателю информационного изобилия, доведя его до 21,7, а симулированное увеличение — до 10,9%, что почти вдвое превышает показатели предыдущего этапа. Короче говоря, предоставление модели пространственного контекста на нескольких масштабах улучшило сами вкладки и их симулируемое воздействие на пользователей.
Чтобы сделать вкладки более понятными, команда создала внутренний инструмент, отображающий на карте ближайших соседей. Если выбрать тёмный шестиугольник в Копакабане, загорается группа близлежащих ячеек — те, которые модель считает функционально похожими. Это удобная проверка того, что выученная география соответствует тому, как люди представляют себе город.
Онлайн-тест A/B с использованием похожих домов. На момент написания статьи эксперимент с каруселью «похожих домов» все еще продолжался. С тех пор он был завершен, и полученные результаты для этой карусели были следующими:
- Аренда: рост коэффициента переходов на 4,18%, а рост количества кликов, приведших к бронированию посещения, — на 3,38%.
- Продажа: коэффициент переходов вырос на 5,53%.
Важны только реальные результаты. Как оффлайн-метрики, так и тест A/B указывают на одно и то же: гео-инкорпорации оправдывают себя.
Внедрение GeoEmbeddings в HUE
Исследование по переранжированию служило доказательством концепции. Настоящей целью была замена координат широты и долготы непосредственно в алгоритме рекомендаций, что привело к созданию второй версии этого алгоритма для практического использования. Заранее обученные GeoEmbeddings хранятся в общей структуре и остаются неизменными, поэтому алгоритм рекомендаций получает стабильный географический сигнал и не должен заново изучать географию. Обе структуры используют эти данные по-разному.
Изменение в структуре домов заключается в простой замене: вместо координат объекта теперь передаются GeoEmbeddings ячейки H3, содержащей этот объект.
Пользовательская башня требует более глубокого переосмысления, поскольку медианы нельзя просто заменить чем-то эквивалентным. Нет ничего значимого для вычисления среднего значения. Вместо этого в башню поступает последовательность, в которой в определенном порядке представлены ячейки из последних десяти событий пользователя. Каждая запись содержит тип события, поэтому простой просмотр и оффер считаются по-разному, а также используется кодировка свежести, позволяющая модели понять, с какой скоростью сигнал должен затухать.
Арендатор, сравнивающий Копакабану и Барру, больше не ограничен одним местом в горах между ними. Теперь модель может видеть оба места. Она может определить, какое из них только просматривалось, какое привело к бронированию посещения и какое появилось раньше.
В совокупности эти два изменения принесли наибольший эффект среди всех, когда-либо наблюдавшихся командой при модификации одной функции. По показателю важности пермутаций GeoEmbeddings стал самой важной функцией в рекомендательной системе второй итерации, а результаты реального теста A/B показали +1% бронирований в разделе «Аренда» и +3,3% отправленных предложений в разделе «Продажа». Такие улучшения в конверсии на уровне платформы демонстрируют, насколько сильно качество представления данных влияет на итоговые результаты.
Что будет дальше
У географических данных есть ещё много возможностей. В планах — использование более точных показателей близости, таких как расстояние до станций метро, школ и парков, а также более детализированные представления, которые будут более тонкими и динамичными.
Более значимое открытие произошло почти случайно. Переработка структуры данных пользователя стала первым случаем, когда HUE рассматривал историю действий человека как упорядоченную последовательность событий, а не просто набор статистических данных, и этот подход оказался эффективным. Это породило естественный вопрос: если последовательность — это правильный способ описания того, где человек вел поиски, разве она не подойдёт и для описания всего остального, что он делал?
В поисках ответа на этот вопрос была создана SENNA — последовательная мультимодальная система рекомендаций, в которой вся структура данных пользователя представляет собой последовательность объектов, с которыми он взаимодействовал, причём каждый объект описывается полностью, включая фотографии. GeoEmbeddings используются в качестве фиксированных географических данных.
Местоположение всегда было главным фактором, волновавшим пользователей. Обучение модели рассуждать о местоположении на разных масштабах, вместо того чтобы рассматривать координаты просто как ещё одно число, позволило команде учесть эту предпочтение пользователей.
Дополнительная литература
Эти идеи основаны на нескольких общедоступных источниках: статье Covington, Adams и Sargin (2016) о методе поиска с использованием двух башен на YouTube, работе Yi и его коллег (2019) с коррекцией смещения выборки для двух башен, статье van den Oord, Li и Vinyals (2018) об обратной прогнозной кодировке с использованием контраста, исследовании Guo и его коллег (2024) о коллапсе эмбеддингов, а также документации геопространственного индекса H3 на сайте h3geo.org.