Применение ансамблевого обучения и множественной линейной регрессии в Python для прогнозирования цен на аренду кондоминиумов

Это вторая часть серии из двух частей, посвященных анализу рынка аренды кондоминиумов в Сингапуре. Также ознакомьтесь с Часть 1 (Сбор данных и EDA в Python).

Введение и мотивация

Как описано в Части 1, мне очень хотелось изучить рынок аренды кондоминиумов в Сингапуре, который относительно недостаточно изучен.

Завершив сбор данных и исследовательский анализ данных, пора сделать некоторые прогнозы для набора данных. В этой статье исследуется использование моделей ансамблевого обучения (случайный лес, XGBoost и LightGBM) и многолинейной регрессии для прогнозирования цен на аренду кондоминиумов.

Предварительная обработка данных перед прогнозированием

Напомним, что наш набор данных включает 7 317 списков кондоминиумов, извлеченных в декабре 2020 года.

Ежемесячная арендная плата в сингапурских долларах (аренда) - это то, что мы хотим спрогнозировать. Поскольку распределение цен на аренду смещено вправо, было применено преобразование журнала, чтобы оно примерно соответствовало нормальному (тем самым была создана новая зависимая переменная Rental_log).

Чтобы подготовиться к прогнозному моделированию, мы опираемся на очистку данных, выполненную ранее (в части 1), с двумя дополнительными этапами предварительной обработки:

1) Отбросьте столбцы

  • Отброшенные объекты с отсутствующими значениями ≥40%, например облицовка, наличие, год постройки, этаж, ближайший_мрт_дист.
  • Ценности в электоральном_диве несбалансированы (~ 44% в одном только дивизионе Танджонг Пагар), а в районе имел ~ 21% отсутствующих данных. Поэтому в качестве индикатора местоположения был выбран район.
  • Решены проблемы коллинеарности, например Отброшены кровати и оставлены sqft, поскольку обе функции сильно коррелированы. Точно так же я отказался от psf (соотносится с арендой) и travel_time_raffles (соотносится с travel_time_orchard).
  • Удаленные функции вряд ли будут влиять на прогноз цен, например кондо название, разработчик название , название из листинг, срок полномочий, общее_объединение, типы_объектов.

2) Создавайте интересные удобства

Что-то новое - это исследование типов удобств. Моя гипотеза заключается в том, что только определенные удобства влияют на стоимость аренды, и я сосредоточил внимание на этих 7 удобствах: балкон, верхний этаж, отремонтированный, вид на город, вид на зелень, парная, сауна.

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

Базовая модель - многолинейная регрессия (MLR)

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

MLR имеет множество предположений, которые необходимо проверить. После 4 проверок допущений нормальности, гомоскедастичности, независимости и линейности независимых переменных на графиках остатков была выявлена ​​проблема. График разброса невязки и аппроксимации при проверке гомоскедастичности (также известной как равная дисперсия) выявил нелинейный (криволинейный) паттерн:

  • При дальнейшем исследовании также наблюдалась аналогичная нелинейная закономерность между sqft и остатками:

Чтобы преодолеть это, в модель был введен квадратичный член (sqrt²). С этим все стало намного лучше, поскольку точки на остаточных графиках теперь симметрично распределены без каких-либо четких нелинейных закономерностей (например, проверка гомоскедастичности очищена).

Вот показатели производительности (на тестовом наборе) базовой модели MLR:

Ансамблевое обучение

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

  • Bagging - это сокращение от b ootstrap agg regating. Интуиция, лежащая в основе бэггинга, заключается в том, что мы сначала генерируем (с заменой) многочисленные случайные выборки обучающего набора данных (это самонастройка). Оттуда мы обучаем модель (обычно дерево решений) на каждом из образцов. Все обучение проводится параллельно, и результаты этих отдельных моделей объединяются с использованием среднего или большинства голосов (это агрегирование).
  • Повышение основано на итеративно последовательных моделях обучения. Таким образом, каждая отдельная модель может улучшаться, извлекая уроки из ошибок (или остатков), допущенных предыдущей моделью.

Имея это в виду, давайте перейдем к трем ансамблевым моделям: Случайный лес (мешковина), XGBoost (усиление градиента) и LightGBM (усиление градиента). ).

Примечание: цель здесь - предложить вкус ансамблевого обучения. Таким образом, я не преследовал агрессивной настройки гиперпараметров, чтобы попытаться добиться максимального улучшения производительности модели с десятичной запятой.

Модель 1 - Регрессор случайного леса

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

Модель 2 - Регрессор XGBoost

XGBoost означает e X treme G radient Boost ing, и это еще одна ансамблевая модель, которая также основана на дереве решений. Он использует алгоритм повышения градиента, который представляет собой метод, в котором градиентный спуск используется для минимизации потерь (т. Е. Разницы между наблюдаемыми и прогнозируемыми значениями) в каждой модели, добавляемой последовательно. Во время обучения он итеративно добавляет новые деревья, которые объединяются с предыдущими деревьями, чтобы сделать окончательный прогноз.

Модель 3 - Регрессор LightGBM

LightGBM расшифровывается как Light G radient B oosting M achine, а также представляет собой ансамблевую модель, включающую структуру повышения градиента. который использует древовидные алгоритмы обучения. Он «легкий», потому что он быстрый и предназначен для распределенного обучения. Ключевым фактором его скорости является то, что он использует алгоритмы на основе гистограмм, которые объединяют непрерывные значения функций в отдельные интервалы. Это ускоряет обучение и снижает использование памяти.

Оценка и сравнение моделей

Теперь, когда мы запустили все наши модели на нашем тестовом наборе данных и получили показатели производительности, мы можем начать их сравнение:

Из показателей выше (с акцентом на среднеквадратичную ошибку) XGBoost выходит вперед (RMSE 0,1377), а LightGBM очень близко отстает (RMSE 0,1387). Преимущество LightGBM заключается в том, что он может проходить обучение быстрее, чем XGBoost.

Эти показатели показывают, что наши модели в целом работали хорошо, а методы ансамбля значительно превзошли нашу базовую модель MLR (RMSE 0,2143).

Имеют ли значение удобства?

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

Похоже, что включение в набор данных типов удобств (в качестве функций с горячим кодированием) действительно помогло (хотя и немного) улучшить RMSE для обоих XGBoost (с 0. 1383 до 0. 1377) и LightGBM (с 0. 1433 до 0. 1387). Это влияние более очевидно для LightGBM по сравнению с XGBoost.

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

Важность функции

Модели XGBoost и LightGBM могут легко производить оценки важности функций, которые показывают, насколько полезна каждая функция при построении усиленных деревьев решений в модели. Чем чаще функция использовалась для принятия ключевых решений с помощью деревьев решений, тем выше ее оценка важности.

И для XGBoost, и для LightGBM мы можем использовать функцию plot_importance, чтобы визуализировать важность функции. Вот 10 основных функций для каждой из 2 моделей:

Мы видим, что для обеих ансамблевых моделей размер помещения (sqft) безусловно является наиболее важным при прогнозировании стоимости аренды. За ним следует время в пути до основных мест аэропорта Чанги (международный аэропорт Сингапура) и Орчард-роуд (центр торгового и туристического района Сингапура, который находится в центральном центре страны). область).

Вывод

В этой статье я рассказал о концепциях и реализации полилинейной регрессии и регрессоров ансамблевого обучения (Random Forest, XGBoost и LightGBM) для прогнозирования стоимости аренды кондоминиума.

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

Наконец, не стесняйтесь проверить коды для этого проекта в репозитории Github, и я также с нетерпением жду возможности связаться с вами через LinkedIn. Как всегда, все отзывы приветствуются!