Авторы: Дэвид Лундгрен и Синлу Хуанг

Первоначально опубликовано на Opendoor.com:



Глория Гейнор: Сначала я боялась, я окаменела…

В Opendoor мы покупаем и продаем тысячи домов в месяц. Чем дольше дом остается в нашем инвентаре, тем больше мы подвержены макроэкономическим изменениям. Более того, налоги на недвижимость, жилищное финансирование и плата за обслуживание со временем увеличиваются. Эти затраты, которые иногда называют риском ликвидности, напрямую влияют на экономику нашей единицы. Очень важно, чтобы мы могли понять и предсказать, сколько времени займет продажа дома.

В этом посте мы обсудим моделирование времени ожидания в наших домах с помощью метода, называемого анализ выживаемости. Это значительно улучшает нашу способность реагировать на меняющиеся рыночные условия и более точно прогнозировать экономику нашей единицы.

Описание данных

Opendoor анализирует большое количество исторических рыночных сделок. У нас есть подробная информация об отдельных домах, которые продаются - например, количество спален и ванных комнат, которые у них есть, или их квадратные метры, - а также информация о каждом конкретном объявлении, например, дата продажи, цена продажи, когда дом указан и по какой цена.

Мы также смотрим на аналогичные данные для домов, которые в настоящее время активны на рынке или сняты с рынка без совершения сделки (мы называем это «делистингом»). Для этих списков мы наблюдаем нижнюю границу их времени нахождения на рынке, но не обязательно их истинную ценность.

Изображение выше является примером набора данных Opendoor. Каждая строка - это листинг на рынке. У нас есть различные данные на уровне дома (например, квадратные футы) и данные на уровне листинга (прейскурантная цена) для каждой транзакции. Наша целевая переменная - количество дней на рынке, которые мы не можем наблюдать для всех списков (некоторые из них все еще активны, ожидают покупателей, а другие делистинг без продажи).

Фрейминг как регресс

Учитывая нашу цель предсказать, сколько времени потребуется, чтобы продать каждый дом, первый подход, который вы можете попробовать, - это напрямую предсказать переменную количество дней на рынке в зависимости от дома и характеристик листинга. Для этого мы удалим транзакции, которые еще не закрыты или в конечном итоге уйдут с рынка без продажи - поскольку мы не знаем их фактический ярлык - и обучим модель, используя оставшиеся точки данных.

Один из способов понять эффективность нашей модели - это сделать прогнозы для всех домов в списке в определенном месяце, а затем измерить точность этих прогнозов по прошествии подходящего времени (например, через год). Ниже мы наносим на график среднюю ошибку по прогнозируемым дням на рынке на синтетическом наборе данных.

График выше показывает средние ошибки (смоделированной) группы домов, перечисленных примерно в одно и то же время прогнозов, упорядоченных по их ожидаемому времени выхода на рынок. Отклонение между сплошной линией «линейной регрессии» и пунктирной линией «несмещенной модели» в этом моделировании демонстрирует систематическое смещение в модели, которое возникает в результате отбрасывания цензурированных наблюдений. Самые рискованные транзакции оказываются наиболее плохо объясненными!

Как видно из графика средней ошибки дат продажи, наша модель отрицательно смещена в отношении домов, на продажу которых требуется много времени, что приводит к недооценке списков, закрытие которых занимает много времени. Это самые опасные дома, и мы плохо прогнозируем их - наша модель слишком оптимистична!

Серые списки выше - это цензурированные наблюдения, указывающие на частичную информацию для нашей цели.

Удаляя непроданные дома из наших обучающих данных, мы в конечном итоге вносим значительный перекос в нашу модель. Операции Opendoor систематически отличаются от стандартных рыночных продаж - мы должны продавать свои дома. Активные или исключенные из списков дома, от которых мы отказались, похожи на самолеты Вальда, которые не вернулись; это цензурированные наблюдения. Это опасно, поскольку указывает на несоответствие между нашими автономными показателями, прошедшими бэктестинг, и нашими онлайн-показателями. Наша целевая функция машинного обучения не соответствует целевой функции нашего бизнеса.

Рефрейминг как классификация

Другой способ взглянуть на проблему - это проблема бинарной классификации: дом либо «рискованный», либо «неопасный». Дома, которые быстро продаются, считаются менее рискованными. Объявления, которые двигаются медленно или никогда не закрываются вообще, очень рискованны. Единственное, что требуется, - это выбрать порог «рискованного», например, домов, которые не закрываются в течение 100 дней на рынке. Таким образом решаются многие задачи прогнозирования времени до события, такие как прогнозирование оттока (мы часто спрашиваем, «произошло ли отток пользователей или нет», а не «когда, если вообще, произошло отток»).

Это простой трюк - просто преобразование переменной и переход от регрессии к классификации. Взглянув на проблему таким образом, мы обойдем многие проблемы цензуры, которые были ранее. Мы можем использовать данные об исключениях из списков (которые сохранились не менее 100 дней), домах, которые мы определили как изначально опасные, а также активных объявлениях, которые превысили наш порог риска.

Изменив нашу цель и переосмыслив проблему как классификация, мы можем использовать больше данных, особенно о домах, которые все еще активны (52 Downtown Ave) или которые были сняты с рынка без продажи (90 Outskirts Lane). Однако этот подход по-прежнему отбрасывает информацию. Количественно оценивая нашу цель, мы рассматриваем все дома в одной категории как эквивалентные, что маловероятно (действительно ли листинг, закрытый за 7 дней, эквивалентен листингу, закрытому за 99 дней?).

Кроме того, мы выбрасываем дома, не превышающие порогового уровня риска; это по определению недавние транзакции. Это заставляет нас вяло реагировать на меняющиеся рыночные условия. Если рынок быстро изменится, наша модель будет значительно отставать от изменений, непреднамеренно увеличивая риск, который принимает на себя компания.

Наконец, неясно, как интерпретировать это как заинтересованное лицо нетехнического характера: «Хорошо, этот дом более рискованный, но насколько рискованный?». Сложно ответить на такие вопросы, как «Когда мне следует завершить уборку этой группы домов?».

Общий рецепт анализа выживаемости

К счастью, есть подобласть статистики, которая сосредоточена на моделировании таких задач, как анализ выживаемости. Слегка изменив формулировку нашей проблемы классификации, мы можем избежать проблем, упомянутых выше, и использовать ряд методов, связанных как с моделями дискретного времени, так и с проблемами классификации.

Для этого мы используем тот факт, что наша целевая переменная является дискретной, и расширяем наш набор данных, включив в него примеры пар листинг-день. Каждый день, когда дом находится на рынке без закрытия, считается отрицательным примером, а всякий раз, когда мы наблюдаем распродажу, мы отмечаем это как положительный пример. В этой формулировке полностью представлены подвергнутые цензуре активные транзакции и исключения из списков. У них просто нет соответствующих положительных примеров.

Хотя это резко увеличивает размер нашего набора данных, экосистема для решения крупномасштабных задач классификации является зрелой и хорошо изученной.

Чтобы вернуться к нашей исходной задаче прогнозирования количества дней на рынке для дома, мы прогнозируем вероятность продажи на фиксированное количество дней листинга для конкретной собственности. Это соответствует условной вероятности закрытия листинга в конкретный день, учитывая, что он выживал на рынке до этого момента (на языке анализа выживаемости это опасность ставка""). С этими вероятностями мы можем сшить вместе функцию массы вероятности (pmf) для продажи, происходящей в определенный день, и, следовательно, ожидаемых дней до продажи, со следующими соотношениями.

sale_probability (день, дом): = (опасность (день, дом) * продукт (1 - опасность (предыдущий_день, дом) для предыдущего_дня в 0… день)) ожидаемые_дни_до_продажи (дом): = сумма (вероятность_продажи (день, дом) * день за день в 0… MAX_NUMBER_OF_DAYS)

Просмотр сырых days-on-market.py, размещенных на

от GitHub

Наш классификатор предсказывает условную вероятность продажи дома в определенный период при условии, что дом не был продан до этого. Чтобы преобразовать риск в более стандартный PMF, мы вычисляем вероятность того, что дом не удалось продать в любой из предыдущих дней, когда он был на рынке, а затем умножаем его на вероятность того, что он был продан в конкретный рассматриваемый день (т. Е. Риск ).

Одним из основных преимуществ этого подхода является то, что он предоставляет интуитивно понятный механизм для добавления изменяющихся во времени функций. Чтобы закодировать такие функции, как количество активных конкурентов, текущая прейскурантная цена дома или то, является ли дом активным в течение сезонно медленного периода (например, в День благодарения), мы просто добавляем новые функции для этого поведения с соответствующим мгновенным значением атрибута. .

Второе преимущество этой структуры заключается в том, что она интуитивно понятна для заинтересованных сторон и партнеров по отрасли. В сфере недвижимости ключевым показателем рыночного уровня является скорость оборачиваемости запасов. Это измеряет отношение продаж за определенный период к количеству активных объявлений за тот же период. Определяя нашу проблему классификации в пространстве «листинг-день», мы моделируем эту всеобъемлющую и широко понятную взаимосвязь. Чтобы преобразовать наше представление на уровне единиц в это совокупное представление, мы можем взять среднее значение проданных на следующий день, сгруппированных по времени.

Работа в пространстве дня листинга обеспечивает естественную основу для добавления изменяющихся во времени функций. В приведенном выше примере цена на 410 Main Street с течением времени претерпевает серию падений с начальной прейскурантной цены в 200 000 долларов до 170 000 долларов. Чтобы кодировать это поведение, мы просто добавляем функцию для «текущей прейскурантной цены» и назначаем значение, которое будет прейскурантной ценой в определенный день.

На приведенной выше диаграмме показана скорость оборачиваемости запасов (также называемая «степенью очистки») в Phoenix за три года подряд. Ставка определяется как отношение продаж за определенный период к общему количеству активных объявлений за тот же период. Как мы видим, большую часть 2018 года дома очищались быстрее, чем в предыдущие годы, но сезонный спад в этом году кажется более драматичным, чем в прошлом.

В Opendoor наша миссия - предоставить каждому свободу передвижения. Ключевым фактором, обеспечивающим это, является наша способность точно понимать, моделировать и оценивать риск ликвидности. Эта методология улучшила нашу способность точно прогнозировать структуру затрат и динамически реагировать на меняющиеся рыночные условия. Благодаря этому мы можем взимать более справедливые и прозрачные сборы.

Специальная благодарность

Спасибо Крису Саиду, Джексону Горхэму, Фрэнку Ся, Тодду Смоллу, Шервину Ву, Майку Чену, Жюлю Ландри-Симарду, Джозефу Гомесу и многим другим за их полезные комментарии и вклад!

Присоединяйтесь к нашей команде и создавайте крутые вещи с данными о недвижимости. Или узнайте больше об Opendoor и других задачах, над которыми работает наша команда по анализу данных.