Научная статья на тему 'ОЦЕНКА СТОИМОСТИ ЖИЛЬЯ В ПЕНЗЕ С ПОМОЩЬЮ НЕЙРОННЫХ СЕТЕЙ'

ОЦЕНКА СТОИМОСТИ ЖИЛЬЯ В ПЕНЗЕ С ПОМОЩЬЮ НЕЙРОННЫХ СЕТЕЙ Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
233
43
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
НЕЙРОННЫЕ СЕТИ / ГЛУБОКОЕ ОБУЧЕНИЕ / МАШИННОЕ ОБУЧЕНИЕ / РЕГРЕССИЯ / ПРОГНОЗИРОВАНИЕ / ОЦЕНКА / АНАЛИЗ ДАННЫХ

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Испольнов Евгений Владиславович, Горюнов Юрий Юрьевич

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

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Испольнов Евгений Владиславович, Горюнов Юрий Юрьевич

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «ОЦЕНКА СТОИМОСТИ ЖИЛЬЯ В ПЕНЗЕ С ПОМОЩЬЮ НЕЙРОННЫХ СЕТЕЙ»

УДК 004.032.26

Е. В. Испольнов, Ю. Ю. Горюнов

ОЦЕНКА СТОИМОСТИ ЖИЛЬЯ В ПЕНЗЕ С ПОМОЩЬЮ НЕЙРОННЫХ СЕТЕЙ

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

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

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

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

Чаще всего услуги анализа рынка недвижимости и оценки стоимости квартиры за плату предоставляют риелторские компании. Но в интернете есть и бесплатные сервисы оценки квартир, такие как «Циан.ру», осуществляющие оценку с помощью нейронных сетей. Минусом данных сервисов (по сравнению с приложением собственной разработки для анализа квартир в Пензе) является то, что они используют единый общий алгоритм для всех городов и регионов, не учитывая расположение объектов недвижимости относительно местной инфраструктуры, а также попадание в выборку ложных и ошибочных объявлений, негативно влияющих на оценку стоимости квартир (например, сайт не учитывает, когда село Ленино путают с площадью Ленина). Исправить эти ошибки позволяет предварительный анализ собранных данных о продаваемых квартирах, проведенный в данной работе.

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

Глубокие сети прямого распространения, которые также называют многослойными персептронами, - самые распространенные примеры моделей глубокого обучения. Цель такой сети - аппроксимировать некоторую функцию /*. Глубокая сеть прямого распространения определяет отображение у = Л.х, и с помощью обучения находит параметры w, дающие самую точную аппроксимацию [1, с. 150-151].

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

© Испольнов Е. В., Горюнов Ю. Ю., 2020.

связи с нейронами следующего слоя. Связь нейрона на самого себя (петли) и/или связи с предыдущими слоями (обратные связи) в этой схеме отсутствуют.

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

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

Задача обучения глубокой сети прямого распространения сводится к задаче безусловной оптимизации. Таким образом, необходимо найти точку минимума функции E(w), где w = [W1, W2,..., Wn]T - вектор весов сети. Для решения данной задачи необходимо найти такой вектор весов w, на котором функция ошибки сети E(w) примет наименьшее значение. Чаще всего для этого используются градиентные методы первого порядка [2, с. 6о-68], например метод градиентного спуска. В данной работе для решения задачи оптимизации используется алгоритм adaptive moments (Adam), в котором для разных параметров применяются различные скорости обучения.

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

Для сбора, структурирования и записи данных с сайта Авито были использованы библиотеки Requests и Beautiful Soup, написанные на языке Python. Выбор обосновывается тем, что данные библиотеки представляют собой высокоуровневые инструменты, позволяющие без дополнительных настроек совершить http-запрос и представить полученные данные в виде дерева синтаксического анализа, из которого можно удобно извлечь необходимые данные.

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

На рис. 1 представлен формат полученных данных, собранных первой программой в csv-файл.

Тип продажи Этаж Этажей Материал Комнат Обцдо ПЛ01ЩЦЬ Жилая ПЛ01ЩЦЬ Плои^дь кухни Район X Y Цена

Вторична 19 22 монолитный 2 52.3 25 15.5 Железнодорожный 53.1902135311 45.0623432463 4500900

Вторична 9 12 кирпичный 2 41.5 19 5 Железнодорожный 53.1334779495 45.0691526479 2330900

Новостройки 3 13 кирпичный 2 30.2 Октябрьский 53.22953 44.93513 4251130

Новостройки г 17 монолитный 1 39.1 Железнодорожный 53.13211 45.05506 2112430

Вторична 7 9 кирпичный 1 23.5 5.5 Ленинский 53.191005372 45.01520555 2150900

Вторична 7 10 панельный 1 34 13 7 Первомайский 53.147579 45.023393 1700000

Рис. 1. Скриншот первых шести записей в исходном файле

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

После анализа основных статистических характеристик данных по каждому числовому признаку было выявлено, что всего лишь 22 объявления содержат информацию о продаже квартир с пятью и более комнатами. Во избежание дисбаланса классов данные примеры были удалены. После удаления всех лишних примеров в наборе осталось 3473 записи.

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

Для работы с нейронной сетью все необходимые данные, такие как район, тип продажи и материал дома, были приведены к категориальному виду с помощью функции categorical инструмента pandas.

Для повышения точности прогнозируемой цены был добавлен параметр «расстояние от центра», содержащий Евклидово расстояние точки нахождения продаваемой квартиры от центра города, заданного широтой и долготой расположения центрального рынка города Пензы (53,20o северной широты и 45,03o восточной долготы).

Таким образом, был получен набор данных, содержащий 22 столбца признаков и 3473 строки примеров. Для обучения нейронной сети от данного набора отделяется целевая переменная («цена»), после чего полученные наборы делятся на обучающую и тестовую выборки в соотношении 8:2. После разделения обучающий набор X_train получил 2778 примеров для 21 столбца. Тестовый набор X_test получил 695 примеров для 21 столбца. Наборы y_train и y_test с единственным целевым столбцом «цена» получили по 2778 и 695 примеров соответственно.

Как было сказано ранее, архитектура сети основана на глубокой нейронной сети прямого распространения. Данная сеть реализуется полносвязной моделью прямого распространения Sequential библиотеки keras. Keras представляет собой открытую нейросе-тевую библиотеку, написанную на языке Python. Выбор библиотеки обусловлен тем, что keras является простым и удобным инструментом по сравнению с другими, более низкоуровневыми библиотеками, такими как tensorflow [3, с. 291-293]. Для проектирования нейронной сети используется layers API библиотеки keras, позволяющий пользователю создавать произвольные слои. Для регуляризации применяется инструмент keras.regularizers, также находящийся в layers API. Для настройки метрик модели используется метод compile. Было определено три скрытых слоя, для каждого из которых было введено 512 нейронов и выбрана функция активации ReLu. В качестве алгоритма оптимизации был выбран Adam, в качестве метрик - среднеквадратичная и средняя абсолютная ошибки. Модель была обучена за фиксированное количество эпох, равное 100.

В результате тестирования обученной нейронной сети на тестовом наборе, состоящем из 695 примеров, была получена средняя абсолютная ошибка величиной 357 088. Это означает, что в среднем модель при оценке стоимости квартиры ошибается на 357 тыс. руб. При сопоставлении данной величины ошибки со средней стоимостью квар-

тиры в 2380 тыс. руб. можно приблизительно оценить точность оценки в 85 %, что является хорошим результатом.

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

Рис. 2. Среднеквадратичная ошибка во время обучения

Рис. 3. Средняя абсолютная ошибка во время обучения

Таким образом, нейронная сеть достигла приемлемого уровня точности для оценки стоимости квартир в Пензе. Были разработаны функции, предоставляющие пользователю возможность с помощью ранее обученной нейронной сети оценить стоимость квартиры по введенным данным. На отдельных примерах точность достигает 99 %.

Библиографический список

1. Бенджио, И. Глубокое обучение / Иошуа Бенджио, Ян Гудфеллоу, Аарон Курвилль. -Москва : ДМК-Пресс, 2018. - 652 с.

2. Осовский, С. Нейронные сети для обработки информации / С. Осовский. - 2-е изд., пере-раб. - Москва : Горячая линия-Телеком, 2017. - 448 с.

3. Жерон, О. Прикладное машинное обучение с помощью Scikit-Learn и TensorFlow: концепции, инструменты и техники для создания интеллектуальных систем / О. Жерон. - Москва : Альфа-книга, 2018. - 690 с.

Испольнов Евгений Владиславович, студент, Пензенский государственный университет. E-mail: [email protected]

Горюнов Юрий Юрьевич, кандидат физико-математических наук, доцент, кафедра компьютерных технологий, Пензенский государственный университет. E-mail: [email protected]

Образец цитирования:

Испольнов, Е. В. Оценка стоимости жилья в Пензе с помощью нейронных сетей / Е. В. Испольнов, Ю. Ю. Горюнов // Вестник Пензенского государственного университета. - 2020. - № 3 (31). - С. 155-159.

i Надоели баннеры? Вы всегда можете отключить рекламу.