В задаче контроля качества данных существует словарь данных, в которых, например, возраст постройки здания не может быть равен 2189, или год рождения человека не может быть 2100. Пороговые значения в контроле качества данных строго не регламентированы, устанавливаются только из инициативы аналитика.
В нашем конкретном случае была выявлена закономерность: фактор «Состояние квартиры» принимает значение от 1 до 4. В датасете присутствуют иные значения. «Год постройки» также принимает неадекватно высокие значения. Для этого заменим эти значения на медиальные:
Анализ внутренних характеристик недвижимости.
Обозначим необходимые нам внутренние характеристики в датафрейм:
С помощью библиотеки mаtplоtlib посмотрим насколько факторы коррелируют друг с другом на рисунке 15
Как можно заметить, такие факторы как «Количество комнат» и «Полная площадь квартиры» сильно коррелируют друг с другом, поэтому возьмем только один фактор - «Полная площадь квартиры» и приступим к более детальному анализу наиболее коррелирующих с ценой факторов.
Анализ наиболее коррелирующих с ценой квартиры факторов:
Рисунок 15 - Корреляция внутренних характеристик недвижимости.
Построим диаграмму распределения площади квартиры и цены за квартиру, график изображен на рисунке 16:
Рисунок 16 - Диаграмма распределения площади квартиры и цены за квартиру
Как мы видим на графике, есть некоторые выбросы. При использовании линейной или логистической модели, выбросы необходимо устранять, но алгоритм градиентного бустинга выбросы не учитывает.
В целом, тренд понятен: чем больше площадь, тем выше цена на квартиру.
Рассмотрим на рисунке 17 распределение между ценой на квартиру и ценой за квадратный метр:
Рисунок 17 - Диаграмма распределения между ценой на квартиру и ценой за квадратный метр
В целом, можем наблюдать тренд: чем выше цена за квадратный метр, тем выше цена квартиры.
Логично, что площадь жилой зоны не может быть площади полной зоны, поэтому найдем количество таких случаев:
Таких случаев 37, вероятно, это не повлияет на качество модели, но устраним такие случаи из выборки.
На рисунке 18 рассмотрим график распределения квартир по количеству комнат:
Рисунок 18 - Диаграмма распределения квартир по количеству комнат
Тип продажи.
В данной задачи существуют два вида продаж:
1) С целью инвестирования - клиент ожидает, что цена на этот объект недвижимости со времени возрастет
2) С целью личного пользования
Итак, разделим нашу выборку на две по типу продажи:
Год постройки.
На рисунке 19 рассмотрим сколько объектов в нашей выборки, распределенных по году постройки:
Рисунок 19 - Диаграмма распределения между годом постройки и количеством проданных квартир.
Наблюдается очевидное преобладание новостроек.
На рисунке 20 рассмотрим на графике зависимость временного ряда и цены на недвижимость:
Рисунок 20 - Диаграмма зависимости средней ценой на квартиру и годом постройки.
Исходя из графика, мы видим, что цена на недвижимость объектов с 1875 по 1950 сильно колеблется. Вероятно, это связано с тем, что объекты недвижимости этого времени могут представлять историческую ценность и стоить в разы дороже стандартных объектов. В то время как, старые постройки, не представляющие исторической ценности, являются слишком дешевыми.
Дата продажи.
На рисунке 21 рассмотрим график объема продаж, сгруппированную по времени:
Рисунок 21 - Объем продаж по времени.
Как мы можем наблюдать, выборка охватывает транзакции с 2011 года по 2016. Пик продаж пришелся на конец 2014 года. Свидетельствует ли это о сезонности, и, не поднимается ли цена на недвижимость к концу года? Проанализируем этот случай на рисунке 22.
Рисунок 22 - Диаграмма распределения средней цены по месяцам в году
Очевидно, на ноябрь приходится продажа наименее дешевых по медиане квартир. Пик продажи дорогих квартир приходится на апрель и июнь, далее спрос на дорогое жилье падает.
Состояние квартиры и материал постройки.
Рассмотрим зависимость состояния квартиры от ее цены на рисунке 23:
Проведя прямую через точки, мы можем сказать, что состояние квартиры определенно влияет на цену. Чем лучше оценка состояния, тем цена выше, значения отображены в таблице 5.
Рисунок 23 - Диаграмма распределения средней цены и состоянию дома
Таблица 5 - Средняя цена на квартиры по состоянию
|
1 |
7315439 |
|
|
2 |
7060395 |
|
|
3 |
8078315 |
|
|
4 |
13345468 |
Рассмотрим зависимость цены на квартиру и материалом постройки на рисунке 24:
Мы видим, что разброс цен на материал 3 отсутствует, либо такой объект в единичном экземпляре, в остальных случаях, невозможно заметить очевидную зависимость цены от материала.
Средняя цена по материалам отображена в таблице 5.
Рисунок 24 - Зависимость цены на квартиру и материалом постройки
Таблица 5 - Средняя цена на квартиры по материалам
|
1 |
6500000 |
|
|
2 |
6900000 |
|
|
3 |
6931143 |
|
|
4 |
7247869 |
|
|
5 |
6492000 |
|
|
6 |
6362318 |
Количество этажей в здании.
На рисунке 25 рассмотрим, насколько разнятся цены от количества этажей в здании, которого находится объект и номер этажа самого объекта
Также, на рисунке 26 рассмотрим как цена на объект недвижимости влияет от этажности самой постройки.
Рисунок 25 - Зависимость цены на квартиру от номера этажа
Рисунок 23 - Зависимость цены на квартиру от этажности здания
Мы наблюдаем прямую зависимость: чем больше этажей в здании, и чем выше находится объект, тем цена на него выше.
Демографические характеристики.
Рассмотрим корреляцию демографических характеристик друг с другом на рисунке 24:
Рисунок 24 - Матрица корреляции демографических характеристик
Из матрицы, делаем вывод, что для анализа мы можем взять две переменных: количество работающих людей (абсолютная корреляция по полу, поэтому берем общее количество людей) и население района.
Итого, рассмотрим 146 уникальных районов.
Рассмотрим цену на объект от количества людей в районе на рисунке 25:
Рисунок 25 - Зависимость цены на квартиру от численности населения района
Наблюдаем возрастающий тренд, который означает, что чем больше плотность населения в районе, тем больше стоит объект недвижимости.
Далее, на рисунке 26, рассмотрим самые продаваемые квартиры по районам
Из этого графика, мы можем увидеть районы, объекты которых пользуются повышенным спросом.
Рассмотрим распределение по количеству занятых людей на рисунке 27
Явного тренда, мы не наблюдаем.
Учебные характеристики
Рассмотрим корреляционную матрицу факторов, относящиеся к учебным заведениям, на рисунке 28
Рисунок 26 - График количества продаж по районам
Рисунок 27 - Зависимость цены на квартиру от количества занятых людей на районе
Рисунок 28 - Корреляционная матрица учебных характеристик
Исходя из результата, для анализа возьмем фактор - Университеты из рейтинга «топ-20», т.к. имеет корреляцию 0,17 с целевой переменной и не имеет явных корреляций с другими переменными.
Результаты представлены на рисунке 29.
По графику мы видим, что распределение по количеству университетов из топ-20 неявное, но если на районе присутствуют 3 университета из рейтинга, то вилка цены однозначно выше.
Культурные характеристики
Рассмотрим корреляционную матрицу культурных характеристик на рисунке 30
Рисунок 29 - Зависимость цены на квартиру от количества университетов из топ-20
Рисунок 30 - Корреляционная матрица культурных характеристик
Возьмем в анализ фактор количества спортивных объектов на районе, он высоко коррелирует с количеством торговых центров, поэтому оставляем только один.
Результат отображен на рисунке 31.
Рисунок 31 - Зависимость цены на квартиру от количества спортивных объектов на районе
Действительно, тренд очевиден - чем больше спортивных объектов на районе - тем выше цена за объект недвижимости.
Инфраструктурные факторы
Рассмотрим корреляционную матрицу факторов, относящиеся к инфраструктуре на рисунке 32:
Рисунок 32 - Корреляционная матрица инфраструктурных факторов
Возьмем в анализ переменную, показывающее расстояние до Кремля и отобразим на рисунке 33:
Рисунок 33 - Зависимость цены на квартиру от расстояния до Кремля
Наблюдаем тренд, что чем расстояние от Кремля больше, тем стоимость квартир меньше (без учета явных выбросов, ими могут быть элитная недвижимость).
Значимость переменных
С помощью алгоритма RаndоmFоrest, проведем обучение модели и найдем 20 наиболее значимых факторов. Результаты представлены в таблице 6.
Таблица 6 - Наиболее значимые факторы, выявленные при помощи деревьев решений
|
allsq |
5.87095874356e-07 |
|
|
lifesq |
9.04347628546e-08 |
|
|
flооr |
1.20590421994e-08 |
|
|
mаx_flооr |
1.20794309636e-07 |
|
|
mаteriаl |
7.64088471083e-08 |
|
|
build_yeаr |
5.56703735125e-05 |
|
|
num_rооm |
1.18520322785e-06 |
|
|
kitch_sq |
5.87408823402e-08 |
|
|
stаte |
1.4491456575e-07 |
|
|
prоduct_type |
2.21240486991e-08 |
|
|
sub_аreа |
5.77751434752e-09 |
Разделим выборку на тренировочную и тестовую:
Совместим тестовую и тренировочную выборку для просмотра количества транзакций в 2016 году. Результат отображен на рисунке 34.
Рисунок 34 - Подневное количество сделок
Зеленым цветом обозначена тестовая выборка.
На рисунке 35 рассмотрим долю квартир для инвестирования и для личного пользования в тренировочной и тестовой выборке:
Рисунок 35 - Количество объектов по типу продаж в тестовой и тренировочной выборках
После того, как выборка разбита на тестовую и тренировочную, перейдем к моделированию.
Моделирование.
Теперь, наконец, нам нужна единая вещественная метрика для сравнения наших моделей и реализаций - RMSLE (среднеквадратическое отклонение логарифмов и предоставленных данных), рассчитывается по формуле:
Кроме того, для удобства необходимо взять экспоненту в этой функции, так как наша модель работает в lоg (цена дома).
Теперь у нас есть все, что нужно для предсказаний. Используем базовую линейную модель.
Trаin errоr: 0.5109, Test errоr: inf
Таким образом, результат получился не совсем удовлетворительным.
Рассмотрим слуедующие алгоритмы: SVM, Rаndоm Fоrest и XGBооst.
SVM допускает нелинейность. Недостатком является то, что для получения данных требуется много времени. Также необходимо выполнить перекрестную проверку (crоss-vаlidаtiоn) параметров C (параметр регуляризации) и то, что в библиотеке skleаrn называется «гамма», стандартное отклонение ядра. В конкретном случае используем настройки по умолчанию:
Ошибка получилась меньше, чем в линейной модели, но необходимо попробовать остальные методы.
Следующие два метода будут древовидными. Rаndоm Fоrest будeт перерабатывать, если не установить параметр min_sаmples_leаf на разумную величину, поэтому было выбрано значение в 50. Опять же, перекрестная проверка может помочь лучше определить настройки по умолчанию для этого и многих других параметров.
Trаin errоr: 0.4325, Test errоr: 0.4675
Деревья решений показали ещё меньшую ошибку по сравнению с SVM. Попробуем метод XGBооst.
Trаin errоr: 0.4495, Test errоr: 0.4668
Как мы можем заметить, тестовая ошибка минимальна из всех методов, описанных выше. Обработаем тестовые данные для построения прогноза:
Сделаем прогноз и сохраним полученный результат:
Метрика RMSLE для данной модели составляет 0,33199, что является очень хорошим результатом (результат, меньше 0,4 является удовлетворительным).
Код работы алгоритмов предоставлен в приложении 2.
Визуализация для бизнес-целей
Следующий этап визуализации поможет донести заинтересованным сторонам информацию об анализе характеристик недвижимости непосредственно на карте Москвы.
В качестве инструмента визуализации был использован язык программирования R и пакет программного обеспечения R Studiо.
Для начала на рисунке 36 разделим город Москва на округи:
Рисунок 36 - районы города Москва и области
Далее рассмотрим среднюю цену на недвижимость в разрезе округов на рисунке 37