Создать модель, предсказывающую цену недвижимости в Санкт-Петербурге на основании данных с avito.ru и реализовать телеграм бота для пользователя, чтобы он мог пользоваться представленным сервисом.
Данные собирались с сайта avito.ru.
Для извлечения данных был написан парсер, который собирал данные с сайта и сохранял их в файлы.
Сама модель построена на Catboost. На тестовой выборке MAPE показало 16%, что является весьма неплохим результатом.
Система анализа данных и моделирования построенна следующим образом:
Из первичного EDA видно можно сделать следующие выводы:
2.1. Есть признаки, которые будут лишь мешать при построение модели. От них нужно избавляться. Не несут никакой значимости для нашего проекта такие признаки, как например:
- Id;
- Official_developer;
- New_building_name;
- Building;
- link
2.2. Также следует избавиться от фичей, в которых пропусков свыше 65% и есть дубликаты.
2.3. В фичах присутcвтуют лишние значения, которые предают псевдоуникальность, такие как например в признаке Balcony: 'балкон' 'лоджия' 'балкон, лоджия'. Нужно их разделить.
2.4. В целевой переменной Price - есть выбросы, с которыми нужно будет бороться. Считаем нужным ввести новую целевую переменную, которая будет обозначать стоимость квадратного метра и рассчитываться по формуле Price/Total_area.
2.5. Также в рамках данного исследования были собраны данные за период с начала октября по середину ноября, в связи с чем, именно в этом исследование нам не потребуется признак Publication_date. Отметим, что если рассматривать выборку на длительном протяжении времени, то этот признак может быть весьма значимым в связи с изменчивостью стоимости рынка цен на недвижимость в зависимости от сезона.
3. feature_engineering_and_preprocessing - были сгенерированы новые фичи и проведен препроцессинг данных, для дальнейшего построения модели.
В ходе выполнения данного ноутбука, было принято решение рассматривать в качестве целевой переменной именно стоимость за квадратный метр общей площади, а не полную стоимость цены за дом. Таже были разработаны такие фичи, как возраст дома и расстояние до некоторых станций метро Санкт-Петеребурга.
Проведено моделирование с использованием инструментов CatBoost, в ходе которого настроены гиперпараметры и используемые признаки. Получена модель, ошибка предсказания которой не превосходит 16.2%. Указанное значение почти в 4 раза меньше ошибки предсказания "вручную", используя категоризацию по значению общей площади.
Бот выступает в качестве опросника-сборщика данных для референса модели. Для корректной работы модели требуются признаки, значение которых пользователь знать не может.Было решено конструировать признаки на основании координат здания и его возраста с использованием сторонних приложений. На основании полученной информации формируются признаки расстояний до метро, возраста и координат дома.