КурсоваяМашинное обучениеГод: 2024МУИВ: Московский университет им. С.Ю. Витте
👁 16💼 0

Готовая курсовая: Прогноз цен на квартиры Random Forest

Загружена: 21.02.2026 03:57

Прогнозирование цен на квартиры в Москве с использованием ансамблевых моделей (Random Forest). Рассмотрены сбор и предобработка набора с Kaggle, выбор признаков, обучение модели и её оценка (R²=0.7846). Полезно для оценки инвестиционных решений и автоматизации оценки недвижимости.

Содержание

Оглавление
Введение	2
Системный анализ объекта и предмета исследования	4
Описание методов, применяемых в исследовании	6
Сбор и предобработка данных	6
Методы машинного обучения	7
Обучение с подкреплением (Reinforcement Learning)	8
Ансамбльное обучение Random Forest Regression	8
Случайный лес	10
Что такое регрессия случайного леса?	12
Проектная часть	13
Заключение	27
Литература	29

Введение

Анализ цен на недвижимость в больших города, таких как Москва, является очень важной задачей для целого ряда выражающий интерес в этой области.  Это могут быть потенциальные покупатели, перекупщики, агенства недвижимости, риелторы, строительные компании, застройщики и инвесторов. Цены недвижимости меняются не только от экономических факторов, но и имеет свой вес такие факторы, как уровнь жизни населения и развита ли инфраструктура в этом районе. На сегодняшний день, с большой точностью прогноз на цен квартир можно сделать при помощи методов машинного обучения. И опираясь на эти результаты взвешия все «за» и «против», мы получаем выгодные сделки, которые достигаются путем глубокого понимания рынка. Очень много факторов такие, как спрос, сложившаяся экономическая ситуация в стране, развитость инфраструкты, индивидуальные особенности квартиры, которые влияют на конечную стоимость квартир и домов в Москве.
Очень важной проблемой на рынке недвижимости - это сложность предсказания будущих цен на квартиры, если принимать во внимание все факторы, которые тесно связаны между собой. Проблема усугубляется еще и изменчивостью экономически нашей страны. Нельзя отметить роль внешних условий, например инфляция, государственные программы поддержки, изменения в законодательстве, которые играют существенную роль при спросе и при предложении жилья. Если не знать достаточно информации и инструменты, которые можно использовать для анализа, то почти все участники рынка будут сталкиваться с неопределённостью когда будут принимать окончательное решений.
Актуальность анализа цен на квартиры в столице России обусловлена высоким уровнем спроса на недвижимость и очень частым изменчивостью стоимости на рынке. При условиях, что экономическая среда быстро меняется, мы должны понимать, что очень важным инструментом для объяснения данных и их дальнейшее предсказывания необходимо использовать современные методы. Эти методы помогают оптимизировать стратегии покупки, продажи и аренды жилья, что и делает данное исследование важным как для физических лиц, так и для бизнеса.
Целью курсового проекта является анализ цен на квартиры в Москве. А данные будем использовать из известной платформы Kaggle.
Задача этой работы заключается в следующим:
разработать предсказательную модель, которая дает возможность с высокой точностью прогнозировать стоимость квартир в Москве
собрать и проанализировать актуальные данные о ценах на квартиры в Москве
создать модель машинного обучения для предсказания стоимости жилья
провести анализ точности предсказаний
оценить, как разные факторы влияют на окончательную стоимость квартиры.
Системный анализ объекта и предмета исследования
Объектом данного исследования являются - квартиры в Москве, которые представляют непростую и динамично меняющуюся систему. В свою же очередь на эта система меняется из-за многих факторов, например, экономического и локального характера. Рынок недвижимости Москвы имеет большой уровень неопределенности, изменения цен и множество участников, которые влияют на образование конечной цены. Существенные сторонами рынка являются частные покупатели, продавцы, застройщикы, инвесторы, агентства недвижимости и еще органы регулирующие весь этот процесс.
Москва, как столица России и крупнейший мировой мегаполис, имеет неповторимую специфику на рынке недвижимости. Очень сильное влияние на цену в этом мегаполисе имеет развитсть инфраструктуры, социально-экономическая политика, уровень проживания населения, демографические изменения, вдобавок географическое расположение объектов недвижимости (центральные районы, спальные районы, близость к транспортным узлам). Международная экономическая ситуация имеет принципиальное значение при формировании цены и она также может изменить показатель покупательской способности населения и в целом динамику спроса на жилье.
Когда проводится комплексный анализ, то в него вписываются определение связей между характеристиками, которые формируют цену квартир на рынке. Очевидно, что квартиры, которые находятся в центре будут дороже нежели те, что расположены на окраине. Нельзя также не подчеркнуть, такие важные характеристики, как тип здания, этажность, присутствие инфраструктуры в районе, это школы, магазины, транспортная развязка, а также состояние жилья (новостройка, вторичный рынок). Эти показатели обязаны быть интегрированы в одну оющую модель, которая позволила бы прогнозировать стоимость объектов недвижимости адекватно.
В следующую очередь, системный анализ принимает во внимание внешние факторы, например, экономическая ситуация в стране, инфляционные процессы, курсы валют. Они непосредственно находятся в прямой связя со спросом на недвижимость как среди местных покупателей, так и среди инвесторов зарубежных. 	Кроме всего прочего, массовое переселение населения в большие города, 	увеличение численности молодых семей и изменение желаний покупателей на экологически чистые местности, в конечном итоге, имеет эффект на рынок.
Проблема  этого проекта, заключается, что степень неопределенности на рынке недвижимости Москвы очень высока, в силу множества причин. Вопреки, что есть очень огромный объем данных о сделках купли-продажи недвижимости, предсказывание цен на квартиры в когда постоянно меняются рыночные условия становится очень сложно.
Еще одна проблема, причем не менее важная, это то, что нет простого и доступного инструмента, который дал бы эффективный прогноз цены на жилье опираясь на исторические данных. В жизни же участники рынка, такие как частные покупатели, застройщики и агенты по недвижимости, часто исходят от оценки стоимости квартир в зависимости от затрат. И в конечном итоге это приводит к неправильным решениям, цена либо завышается или же занижается, тем самым риски увеличиваются при инвестициях в недвижимость.
На сегодняшний день, методы традиционные для оценки стоимости жилья обычно недостаточны потому, что они не учитывают сложные взаимосвязи между целого ряда факторов, которые влияют на рынок недвижимости. Проблема усугубляется когда на рынке есть как постоянные (географическое положение, характеристики жилья), так и переменные факторы (изменение экономической ситуации, колебания спроса и предложения), которые могут оказывать как краткосрочное, так и долгосрочное влияние на стоимость квартир.
В связи с этим возникает потребность в инструменте, который в условиях динамичной экономической и рыночной среды спрогнозировал цену с высокой точностью на основе анализа данных и методов машинного обучения. Дальнейшем, этот инструмент мог бы помочь игрокам рынка принимать более обоснованные решения, и тем самым уменьшить риски, а эффективность, наоборот, увеличить.
Основываясь на этом, главная проблема заключается в том, что необходимо разработать модель, которая способна учесть большое количество причин и связи между ними в пользу точного прогнозирования цен на квартиры в Москве.
Описание методов, применяемых в исследовании
На сегодняшний день, чтобы достичь этой цели и разработать модель для прогноза цены на жилье в Москве применяются некоторые современные методы анализа данных и машинного обучения. Такие приёмы делают возможным выявление важных факторов, которые меняют стоимость жилья, и создадим модель, которая умеет делать точные прогнозы исходя от индивидуальных характеристик объектов и текущих рыночных условий.
Сбор и предобработка данных
Первым шагом в этом исследовании будет сбор данных о рынке недвижимости Москвы. На то будем использовать публично доступный набор данных с платформы Kaggle. Этот датафрейм включена информация о ценах на квартиры, кроме того их ключевые характеристики, такие как площадь, количество комнат, этажность, район и т.д.. Данные пройдут тщательную предобработку, которая будет реализована после совершения следующих шагов:
Удаление пропущенных значений, аномалий и дубликатов для улучшения качества модели.
Преобразование текстовых данных (например, районов) в числовые значения с помощью методов кодирования (one-hot encoding или label encoding), чтобы они могли быть использованы в модели.
Нормализация и стандартизация числовых признаков для приведения всех данных к одному масштабу.
Методы машинного обучения
После того, как данные были проанализированы далее можно применить методы машинного обучения, которые позволят построить модели предсказывания на основе предыдущих данных.
Методы машинного обучения (ММО) — это большое количество алгоритмов и моделей, которые могут обучаться на основе данных и уже на их основе делать прогнозы или принимать решения. Машинное обучение является частью искусственного интеллекта (ИИ). И оно автоматизирует сложные процессы анализа данных. 	Основной смысл машинного обучения заключается в том, чтобы создать модели, которые способны выявлять закономерности в данных и использовать их для того, чтобы спрогнозировать новые, ранее не встречавшийся ранее данных.
Обучение с учителем (Supervised Learning) - является наиболее распространенным подход в машинном обучении. Этот подход подразумевает, что модель сама обучается на основе размеченных данных. Это подразумевает, что каждому примеру данных есть соответствующий правильный ответ, который используется для обучения модели. Идея состоит в том, чтобы модель была обучена нахождению закономерностей между вскармливаемыми данными и метками, и чтобы в дальнейшем она могла предсказать правильные значения для новых данных.
К задачам обучения с учителем относятся следующие понятия:
Классификация — задача, где модель предсказывает к какой категории относится объект.
Регрессия — является задачей, где предсказываются числовые значения.
Что касается, методов обучения с учителем, то это следующие понятия.
К линейная регрессия обращаемся, когда нужно предсказать непрерывные значения.
Логистическая регрессия используется в задачах для бинарной классификации.
Деревья решений - это такие алгоритмы, где необходимо найти решение и для этого строится дерево решений для классификации или регрессии.
Методы ансамблей - это скомбинированные модели, такие как Random Forest и Gradient Boosting.
Если мы разберем понятие обучении без учителя, то в данном случае модель работает с неразмеченными данными, или другими словами она не знает правильных ответов и должна сама в процессе обучения находить скрытые закономерности. Этот подход желательно использовать в задачах, где трудно написать правильный ответ или же не очевидны.
Обучение с подкреплением (Reinforcement Learning)
Обучение с подкреплением (RL) — это такой тип процесса машинного обучения, где фокус идет больше при принятии решений автономными агентами. Автономный агент — это может быть любая система, которая способна принимать решения и действовать в качестве ответа на окружающую среду независимо от прямых указаний человека-пользователя. Роботы и беспилотные автомобили как раз таки и являются наглядными примерами автономных агентов. В обучении с подкреплением автономный агент, также как и человек в жизни, учится выполнять задачу методом проб и ошибок при отсутствии какого-либо руководства со стороны человека-пользователя.1 Также он решает проблемы последовательного принятия решений в неопределенных условиях и можно сказать дает хорошую перспективу в разработке искусственного интеллекта.
Ансамбльное обучение Random Forest Regression
Random Forest Regression — это 	многофункциональный машинный метод обучения для того, чтобы был сделан прогноз числовых значений. Чтобы снизить переобучения и повысить точности он использует прогнозы нескольких деревьев. Библиотеки машинного обучения языка программирования Python позволяют легко осуществить и оптимизировать этот подход.
Ансамбли моделей машинного обучения
Когда нужно решить сложную вычислительную задачу и ни один алгоритм не подходит идеально, используют ансамбли. Ансамбли – сочетание сразу нескольких алгоритмов, которые учатся одновременно и исправляют ошибки друг друга. На сегодняшний день именно они дают самые точные результаты, поэтому именно их чаще всего используют все крупные компании, для которых важна быстрая обработка большого количества данных.
Как работают ансамбли
Идея очень проста – дать всем одну задачу и наблюдать как они найдут десятки и более новых способов решить задание.
Наилучший результат получается, когда алгоритмы в ансамблях максимально различны. Например, Регрессия (Regression) и Деревья Решений (Decision Trees) сочетаются отлично. А вот сочетание Наивный Байес (Naive Bayes) и метод k-ближайших соседей (k-nn method) в ансамблях не используют – они слишком стабильны и поэтому не могут выйти за привычные рамки решений.
Для сбора ансамблей применяют следующие подходы:
Ансамблевые методы МЛ
Стекинг = Stacking = Meta Ensembling
Сперва обучают несколько алгоритмов, затем результаты их работы показывают последнему алгоритму. Именно он и принимает окончательное решение. Стекинг – хороший, но наименее точный ансамбль среди остальных методов.
Беггинг = Bootstrap AGGregatING
Этот тип обучения означает: много раз обучать ансамбль на случайных выборках данных. И в конечном итоге усреднить ответы. Это выглядит как голосование за наиболее популярный ответ, где много моделей работают параллельно.
Результаты этого способа мы видим когда собираемся сделать фото, а камера находит и обводит лица в кадре.
Бустинг = Boosting
Этот способ включает последовательное обучение алгоритмов. То есть сперва обучаем первый и отмечаем места, где он ошибся. Затем обучаем второй, особое внимание уделяя местам, на которых ошибался первый. И так далее. До необходимого результата.
Бустинг
Здесь также делаются выборки данных, однако уже не по случайному признаку. Теперь каждая последующая выборка состоит из тех данных, на которых ошибся предыдущий алгоритм. Таким образом достигается наиболее качественный результат, но только в тех случаях, где не нужны параллельные методы.
Случайный лес
Случайный лес - один из самых удивительных алгоритмов машинного обучения, который был придуман Лео Брейманом и Адель Катлером еще в прошлом веке. До нас он дошел в «первозданном виде» (никакие эвристики его значительно не улучшили) и является одним из немногих универсальных алгоритмов. Универсальность его состоит, во-первых, в том, что он хорош почти во всех задачах (по моим оценкам, 70 % из всех встречающихся на практике, если не считать задачи с картинками), а во-вторых - в том, что есть случайные леса и под задачу классификации и под задачу регрессии и под задачу кластеризации и под задачу поиска аномалий и под задачу отбора признаков и т.д.
RF (random forest) - это множество решающих деревьев. Для задачи регрессии их ответы усредняются, в задаче классификации принимается решение голосованием по всем деревьям. Все деревья строятся независимо по следующей схеме:
1) Выбирается подвыборка обучающей выборки размера samplesize (может быть с возвращением), по ней строится дерево (для каждого дерева - своя подвыборка)
2) Для построения каждого разбиения пробегаем по max_features случайных признаков (для каждого нового разбиения - свои случайные признаки)
3) Выбираем лучше всего подходящее разбиение по эвристике (заранее заданной) дерево строиться, как правило, до исчерпания выборки (пока в листьях не окажутся представители одного класса), но существует параметры, которые могут ограничивать глубину деревьев, число объектов в листьях и число объектов в подвыборке, на которых разбиение вообще делается.
Понятно, что такая схема построения соответствует основному принципу ансамблирования (построения алгоритма машинного обучения на базе нескольких, в данном случае решающих деревьев), что базовые алгоритмы должны быть качественными и разнообразными (поэтому каждое дерево строится на своей обучающей выборке и рандомизация при выборе разбиений).
Рисунок 1. Работа модели регрессии случайного леса
Что такое регрессия случайного леса?
Регрессия случайного леса в машинном обучении — это техника, позволяющая выполнять задачи регрессии и классификации. Такими задачами условно с помощью нескольких деревьев решения и техники, называемой Bootstrap и Aggregation, обычно называемой bagging. Основная идея состоит в том, чтобы объединить несколько деревьев решения вместо использования одного отдельного дерева решения, для того чтобы определить конец.
Случайный лес имеет несколько деревьев решений в качестве базовых моделей обучения. Мы случайным образом выполняем выборку строк и выборку признаков из набора данных, формируя выборочные наборы данных для каждой модели. Эта часть называется Bootstrap.
Проектная часть
Набор данных представляет собой структурированную таблицу, содержащую информацию, необходимую для анализа и прогнозирования цен на недвижимость в Москве и Московской области. Данные были собраны в ноябре 2023 года, что делает их актуальными и подходящими для анализа. Набор содержит различные параметры, которые играют ключевую роль в оценке стоимости недвижимости, такие как местоположение, площадь, наличие удобств и другие факторы, влияющие на цену объектов недвижимости. Каждый ряд данных соответствует одной квартире и включает её основные характеристики.
import numpy as np # linear algebra
import pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)
import os
for dirname, _, filenames in os.walk('data.csv'):
for filename in filenames:
print(os.path.join(dirname, filename))
Данные содержат следующие ключевые атрибуты:
- Цена (целевая переменная) — стоимость квартиры, которую необходимо предсказать.
- Тип квартиры — студия, однокомнатная, двухкомнатная и т.д.
- Ближайшая станция метро и время до метро — транспортная доступность.
- Регион — Москва или Московская область.
- Количество комнат — основная характеристика жилого помещения.
- Общая площадь, жилая площадь и площадь кухни — размерные параметры квартиры.
- Этаж и количество этажей — информация о расположении квартиры в доме.
- Уровень ремонта — важный фактор, влияющий на стоимость жилья.
Этот набор данных предоставляет детализированную информацию о квартирах, позволяя использовать её для построения моделей прогнозирования цен (Рисунок 1).
Рисунок 2. Набор данных
Набор данных содержит различные типы переменных, каждая из которых имеет определённый формат. Проверяим тспользуя следующий код:
data.info()
Результат выполнения кода:
Рисунок 3. Типы данных
- Price (float64) — Цена квартиры представлена в формате чисел с плавающей точкой. Это основная целевая переменная, для которой будет производиться прогнозирование.
- Apartment_type (object) — Тип квартиры, такой как вторичное жилье или новый дом, представлен в виде текстовых данных (объект).
- Metro_station (object) — Название ближайшей станции метро также хранится в виде текстовых данных.
- Minutes_to_metro (float64) — Время, необходимое для пешей прогулки до ближайшей станции метро, представлено в виде чисел с плавающей точкой.
- Region (object) — Регион, в котором находится квартира (Москва или Московская область), хранится как текст.
- Number_of_rooms (float64) — Количество комнат представлено в виде числовых данных с плавающей точкой.
- Area (float64) — Общая площадь квартиры в квадратных метрах, указана числом с плавающей точкой.
- Living_area (float64) — Жилая площадь квартиры, также числовой показатель.
- Kitchen_area (float64) — Площадь кухни в квадратных метрах, представлена числами с плавающей точкой.
- Floor (float64) — Этаж, на котором находится квартира, числовой показатель с плавающей точкой.
- Number_of_floors (int64) — Общее количество этажей в здании представлено как целое число.
- Renovation (object) — Уровень ремонта в квартире, представленный в виде текстового описания.
Таким образом, данные включают как числовые (float64 и int64), так и категориальные (object) переменные. Числовые переменные используются для количественных характеристик квартиры (цена, площадь, количество этажей), тогда как текстовые описывают качественные параметры, такие как тип квартиры или уровень ремонта.
Также очень важно провести анализ чистоты данных. Он был проведён с помощью следующего блока кода:
data.isna().sum()
Анализ показал, что пропусков в данных не имеется.
Рисунок 4. Пропуски данных
Первичный анализ DataFrame показывает следующее:
Рисунок 5. Стандартные метрики исходного набора данных
Price (Цена): Средняя стоимость квартиры составляет 36,1 млн рублей, с очень высокой стандартной ошибкой (82,8 млн), что указывает на значительные колебания цен. Минимальная цена квартиры — 1,1 млн рублей, а максимальная — 2,45 млрд рублей, что говорит о большом разбросе цен в зависимости от характеристик.
Minutes_to_metro (Минут до метро): Среднее время пешего пути до ближайшей станции метро — 11,9 минут. Стандартное отклонение равно 6,2 минутам, что говорит о некотором разбросе. Минимальное время до метро — 0 минут (возможно, квартира находится в непосредственной близости), а максимальное — 60 минут.
Number_of_rooms (Количество комнат): В среднем в квартирах 2 комнаты, что является стандартом. Однако есть квартиры без комнат (возможно, студии) и объекты с до 12 комнат.
Area (Общая площадь): Средняя площадь квартиры составляет 72 квадратных метра. Стандартное отклонение (68,4 м²) говорит о том, что площадь сильно варьируется — от 6 м² (вероятно, очень маленькие студии) до 1117 м² (возможно, элитное жилье).
Living_area (Жилая площадь): Средняя жилая площадь — 38,5 м². Разброс также значительный — от 2 м² до 566,8 м².
Kitchen_area (Площадь кухни): Средний размер кухни составляет 12,6 м². Минимальная площадь кухни — 1 м², а максимальная — 122 м².
Floor (Этаж): Средний этаж, на котором расположены квартиры, — 9,2, но есть квартиры на 92 этаже (очевидно, в высотных зданиях). Минимальный этаж — 1.
Number_of_floors (Количество этажей в здании): Среднее количество этажей в зданиях — 16,6. Наименьшее количество этажей — 1, а наибольшее — 97.
Эти статистические показатели дают представление о том, как сильно варьируются характеристики квартир, включая их цену, площадь и количество комнат, что позволяет проводить дальнейший анализ и прогнозирование стоимости на основе этих данных.
Рисунок 4. Иллюстрирует количество проданных квартир по региону. Согласно диаграмме значительное количество квартир продаются именно в самой Москве.
Рисунок 6. Диаграмма проданных квартир по Москве и Московской области
Следующая диаграмма показывает, что на рынке недвижимости количество вторичного жилья больше, чем количество новых.
Рисунок 7. Диаграмма проданных квартир по типу зданий
Рисунок 8. Распределение цен на квартиры в зависимости от их типа
На данном графике отображается распределение цен на квартиры в зависимости от их типа: "Secondary" (вторичное жилье) и "New building" (новостройки).
Медиана (черная горизонтальная линия) цены на вторичное жилье значительно выше, чем у новостроек. Новостройки имеют более низкую медианную цену. Широкий диапазон (ящик и усы) цен, что говорит о большом разбросе стоимости вторичного жилья. Диапазон цен указывает на то, что некоторые квартиры могут быть крайне дорогими. У новостроек диапазон цен более узкий, что говорит о большей однородности цен. Оба типа квартир имеют выбросы (outliers) — это объекты с ценами, значительно превышающими основные данные. У вторичного жилья значительно больше выбросов, что говорит о наличии очень дорогих объектов на рынке, возможно элитных квартир.
Вторичное жилье имеет более широкий разброс цен и большую долю высокоценных объектов. Новостройки, наоборот, характеризуются более стабильными и, как правило, меньшими ценами.
Рисунок 9. График зависимости между ценой квартиры и ее площадью
На данном графике представлена диаграмма рассеяния (scatter plot), показывающая зависимость между ценой квартиры (по оси Y) и ее площадью в квадратных метрах (по оси X).
Чем больше площадь квартиры, тем выше ее цена. Это закономерность, которая ожидаема, так как цена жилья в значительной степени зависит от его размеров. Бóльшая часть квартир имеет площадь до 200 квадратных метров и стоимость до 10810^8108 (100 миллионов). Эти значения указывают на стандартные предложения квартир среднего и небольшого метража.
На графике также присутствуют объекты с очень большой площадью (свыше 600 квадратных метров) и соответствующе высокой ценой (более 1 миллиарда). Это, вероятно, элитные или уникальные объекты недвижимости.
Наблюдается значительный разброс данных для больших площадей (свыше 200 квадратных метров), что говорит о том, что на цену влияют и другие факторы, помимо площади. Квартиры с одной и той же площадью могут значительно различаться в цене в зависимости от местоположения, уровня отделки, инфраструктуры и других факторов.
Цена квартиры в Москве и Московской области в целом увеличивается с ростом площади, но для элитного жилья разброс цен становится значительно шире, что указывает на дополнительные факторы, влияющие на стоимость недвижимости.
Рисунок 10. Диаграмма размаха зависимости между ценой квартиры и количеством комнат
На графике показана зависимость между ценой квартиры и количеством комнат с помощью boxplot. Цена квартиры увеличивается с увеличением количества комнат. Это очевидно, так как большее количество комнат обычно связано с большей площадью и более высокой стоимостью. Квартиры с 1-4 комнатами имеют относительно схожее распределение цен. Средние цены увеличиваются с ростом количества комнат, однако разброс начинает заметно увеличиваться начиная с 3 комнат.
На графике присутствуют значительные выбросы для квартир с количеством комнат от 0 до 6. Эти квартиры стоят значительно больше, чем большинство других в своей категории. Например, квартиры с 6 комнатами имеют выбросы, превышающие 1 миллиард рублей. Видно, что квартиры с 6 комнатами имеют большое разнообразие в цене, что может свидетельствовать о том, что такие объекты часто принадлежат к сегменту элитного жилья с особыми характеристиками.
Квартиры с более чем 7 комнатами встречаются реже, и их данные на графике ограничены, что может указывать на эксклюзивность таких предложений на рынке. Чем больше комнат в квартире, тем выше её средняя цена. Однако квартиры с большим количеством комнат демонстрируют гораздо более широкий диапазон цен, что говорит о влиянии других факторов, таких как местоположение, качество ремонта, инфраструктура, и статус жилья.
Формирование обучающей и тестирующей выборок
Мы выделили из наших данных обучающие и тестирующие следующим
образом:
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import OneHotEncoder, StandardScaler
import numpy as np
import pandas as pd
# Целевая переменная
y = data['Price']
# Кодирование категориальных признаков
encoder = OneHotEncoder(sparse_output=False)  # Используем актуальный параметр sparse_output=False
X_cat_encoded = encoder.fit_transform(data[['Apartment type', 'Renovation']])
# Масштабирование числовых признаков
scaler = StandardScaler()
X_num_scaled = scaler.fit_transform(data[['Minutes to metro', 'Number of rooms', 'Area', 'Living area', 'Kitchen area', 'Floor', 'Number of floors']])
# Объединение закодированных и масштабированных признаков
X_combined = np.hstack([X_num_scaled, X_cat_encoded])
# Разделение на обучающий и тестовый наборы
X_train, X_test, y_train, y_test = train_test_split(X_combined, y, test_size=0.2, random_state=42)
Далее спрогнозируем цены на квартиры при помощи метода машинного обучения Random Forest Regressor и визуализируем их.
from sklearn.ensemble import RandomForestRegressor
random_forest_model = RandomForestRegressor(n_estimators=150, random_state=32)
random_forest_model.fit(X_train, y_train)
plt.figure(figsize=(13, 9))
# Plot Actual Value
sns.scatterplot(x=y_test, y=y_test, label='Фактическое значение', color='red', alpha=0.6)
# Plot prediction
sns.scatterplot(x=y_test, y=y_pred, label='Спрогнозированное значение', color='blue', alpha=0.6)
plt.plot([y.min(), y.max()], [y.min(), y.max()], 'k--', lw=2)
plt.xlabel('Фактическое значение')
plt.ylabel('Prediction / Actual Value')
plt.title('Прогноз цен')
plt.xscale('log')
plt.yscale('log')
plt.legend()
plt.show()
Рисунок 11. График спрогнозированных и фактических данных
На графике сравниваются фактические значения цен на квартиры с спрогнозированными значениями: красные точки — это фактические значения, синие точки — спрогнозированные моделью значения, черная пунктирная линия — линия идеального соответствия, на которой находятся точки, если бы модель предсказывала абсолютно точно.
Большинство точек (синие) находятся близко к черной линии, что говорит о том, что предсказания модели достаточно точны, хотя и есть некоторое количество отклонений.
import numpy as np
from sklearn.metrics import mean_squared_error, r2_score
# Make predictions
y_pred = random_forest_model.predict(X_test)
# Evaluate the model
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)
print(f'Random Forest Regressor Mean Squared Error: {mse}')
print(f'Random Forest Regressor R^2 Score: {r2}')
Результат выполнения кода программы:
Рисунок 12. Результаты тестирования
Mean Squared Error (MSE): Это метрика, измеряющая среднеквадратичное отклонение предсказанных значений от фактических = 1427140751266827.2, а R² Score (коэффициент детерминации)=0.7846.
MSE = 1427140751266827.2 — это довольно большое значение, что указывает на значительные отклонения предсказанных цен от фактических. Важно отметить, что данная метрика имеет единицы измерения в квадрате, поэтому для интерпретации можно также воспользоваться квадратным корнем из MSE (Root Mean Squared Error, RMSE). R² = 0.7846. Значение R² близко к 1 указывает на хорошее качество модели. В вашем случае модель объясняет примерно 78% дисперсии данных, что является неплохим результатом. Однако 22% дисперсии остаются неучтенными моделью, что может говорить о наличии факторов, которые не были учтены при обучении.
Модель Random Forest Regressor показала неплохие результаты с коэффициентом детерминации R² = 0.7846, что указывает на высокую предсказательную способность. Однако высокое значение Mean Squared Error указывает на необходимость дальнейшего улучшения модели.
Наглядно покажем график плотности фактических и прогнозируемых значений с помощью следующегокода.
import seaborn as sns
import pandas as pd
df_predictions = pd.DataFrame({'Фактические': y_test, 'Спрогнозированные': y_pred})
plt.figure(figsize=(10, 6))
sns.kdeplot(data=df_predictions, fill=True)
plt.title('График плотности фактических и прогнозируемых значений')
plt.xlabel('Значения')
plt.ylabel('Плотность')
plt.show()
На графике ниже изображен график плотности фактических и прогнозируемых значений. Такой график визуализирует распределение двух наборов данных — фактических и предсказанных значений. Это используется для анализа того, насколько близко распределение прогнозируемых значений (оранжевая линия) соответствует фактическим данным (синяя линия).
Рисунок 13. График плотности фактических и прогнозируемых значений
Синяя линия представляет плотность фактических значений. Оранжевая линия представляет плотность спрогнозированных значений. Сравнивая эти линии, можно увидеть, насколько прогнозы модели соответствуют фактическим данным. Если линии близки друг к другу, это свидетельствует о том, что модель хорошо справляется с прогнозированием. Если наблюдаются значительные отклонения, это может означать, что модель делает ошибки в предсказаниях для определенных диапазонов данных.
На графике видно, что обе линии имеют очень схожие пики, что говорит о том, что модель достаточно точно прогнозирует значения в этой области. Однако можно заметить небольшие отклонения на участках, где плотность значительно снижается. Эти отклонения могут указывать на случаи, где модель не так точно воспроизводит реальные данные. Точность модели составляет 0.977.
Данный график используется для оценки точности модели прогнозирования. Он позволяет наглядно увидеть, насколько хорошо модель "обучена" и как она справляется с задачей предсказания на основе фактических данных. Если линии на графике плотно совпадают, можно сделать вывод о высоком качестве модели; если наблюдаются значительные расхождения — это сигнал о необходимости улучшения модели или пересмотра метода прогнозирования.

Заключение

В рамках данного курсового проекта была рассмотрена задача анализа и прогнозирования цен на квартиры в Москве с использованием ансамдлевого метода машинного обучения Random Forest Regressor. Проведённый анализ позволил выделить ключевые факторы, влияющие на стоимость недвижимости, такие как расположение квартиры, её площадь, количество комнат, удалённость от станций метро, уровень ремонта и другие характеристики. С учетом этих факторов была разработана предсказательная модель, которая успешно прошла обучение на предоставленных данных и продемонстрировала высокую точность прогнозирования.
Одним из важнейших достижений данного исследования стало использование машинного обучения для моделирования сложных взаимосвязей между характеристиками недвижимости и её рыночной стоимостью. Разработанная модель позволяет не только анализировать существующие данные, но и с высокой степенью точности предсказывать стоимость жилья на основе его характеристик. Это может оказаться особенно полезным для всех участников рынка недвижимости — от частных покупателей до застройщиков и инвесторов, которым необходимо принимать взвешенные и обоснованные решения.
Результаты проекта также подтвердили актуальность применения данных технологий в условиях динамично меняющегося рынка недвижимости Москвы. В условиях нестабильной экономической ситуации, изменения спроса и предложения, прогнозирование цен с использованием предсказательных моделей становится важным инструментом, позволяющим минимизировать риски и более точно планировать финансовые операции.
Основные выводы исследования показывают, что использование машинного обучения для прогнозирования цен на жилье является эффективным подходом, который позволяет автоматизировать сложные аналитические процессы и значительно повысить точность оценок. В будущем данная методика может быть расширена и адаптирована для других регионов и рынков недвижимости, что делает её универсальной и перспективной для широкого круга задач.
Таким образом, разработанная модель не только демонстрирует возможности современных технологий, но и предоставляет практическую пользу, позволяя участникам рынка лучше ориентироваться в условиях нестабильности, оптимизировать свои стратегии и принимать более обоснованные решения.
Литература
Харрисон, В., Пальери, Дж. Почти 1 миллион новых угроз вредоносного ПО появляется каждый день [Электронный ресурс]. – Режим доступа: https://money.cnn.com/2015/04/14/technology/security/cyber-attack-hacks-security/ (дата обращения: 14.04.2019).
Су, Дж., Данило Васконцеллос, В., Прасад, С., Даниеле, С., Фенг, Ю., Сакурай, К. Легковесная классификация IoT-вредоносного ПО на основе распознавания изображений // 42-я ежегодная конференция по программному обеспечению и приложениям IEEE (COMPSAC), Токио. – 2018. – С. 664–669.
Cisco. Ежегодный отчет по кибербезопасности за 2018 год [Электронный ресурс]. – Режим доступа: https://www.cisco.com/c/m/en_au/products/security/offers/annual-cybersecurity-report-2018.html (дата обращения: 2018).
Ранкин, Б. Краткая история вредоносного ПО [Электронный ресурс]. – Режим доступа: https://www.lastline.com/blog/history-of-malware-it-evolution-and-impact/ (дата обращения: 05.04.2018).
Virusshare.com [Электронный ресурс]. – Режим доступа: https://virusshare.com/ (дата обращения: 2018).
Нгуен, К.Д.Т., Туан, Т.М., Ле, С.Х., Вьет, А.П., Огава, М., Минь, Н.Л. Сравнение трех подходов на основе глубокого обучения для обнаружения IoT-вредоносного ПО // 10-я международная конференция по знанию и системной инженерии (KSE), Хошимин. – 2018. – С. 382–388.
Сисодия, Д., Сингх, Л., Сисодия, С. Методы кластеризации: Краткий обзор различных алгоритмов кластеризации // Международный журнал компьютерных наук и управления информацией. – 2012. – Т. 1. – № 2. – С. 61–66.
Лю, Дж. Руководство по алгоритму кластеризации K-средних [Электронный ресурс]. – Режим доступа: https://www.kdnuggets.com/2019/05/guide-k-means-clustering-algorithm.html (дата обращения: май 2019).
K-Means Advantages and Disadvantages [Электронный ресурс]. – Режим доступа: https://developers.google.com/machine-learning/clustering/algorithm/advantages-disadvantages (дата обращения: 2018).
Редди, Ч. Понимание концепции иерархической техники кластеризации [Электронный ресурс]. – Режим доступа: https://towardsdatascience.com/understanding-the-concept-of-hierarchical-clustering-technique-c6e8243758ec (дата обращения: 10.12.2018).
Наик, А. Алгоритм иерархической кластеризации [Электронный ресурс]. – Режим доступа: https://sites.google.com/site/dataclusteringalgorithms/hierarchical-clustering-algorithm (дата обращения: 2018).
Сейф, Г. 5 алгоритмов кластеризации, которые нужно знать каждому ученому-данных [Электронный ресурс]. – Режим доступа: https://towardsdatascience.com/understanding-the-concept-of-hierarchical-clustering-technique-c6e8243758ec (дата обращения: 06.02.2018).
Лутинс, Э. DBSCAN [Электронный ресурс]. – Режим доступа: https://medium.com/@elutins/dbscan-what-is-it-when-to-use-it-how-to-use-it-8bd506293818 (дата обращения: 06.09.2017).
Лю, Дж., Цзявей. Алгоритмы и приложения для кластеризации данных. – Чапман и Холл/CRC. – 2014.
Ауллай, А. Спектральная кластеризация для начинающих [Электронный ресурс]. – Режим доступа: https://towardsdatascience.com/spectral-clustering-for-beginners-d08b7d25b4d8 (дата обращения: 08.05.2018).
Доши, Н. Спектральная кластеризация [Электронный ресурс]. – Режим доступа: https://towardsdatascience.com/spectral-clustering-82d3cff3d3b7 (дата обращения: 05.02.2019).
Чжан, Т., Рамакришнан, Р. Birch [Электронный ресурс]. – Режим доступа: https://slideplayer.com/slide/4224423/ (дата обращения: 2018).

Подробное описание

📘 О чем эта работа

Курсовая посвящена применению ансамблевых методов машинного обучения для решения прикладной задачи прогнозирования стоимости квартир в Москве и Московской области. Объект исследования — квартиры в Москве, предмет — зависимость цены от характеристик объекта (площадь, число комнат, этажность, удалённость от метро, тип жилья, уровень ремонта и др.). Данные взяты с платформы Kaggle (срез ноября 2023 г.).

📚 Что внутри

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

  • Таблицы и описание столбцов набора: Price, Apartment_type, Metro_station, Minutes_to_metro, Region, Number_of_rooms, Area, Living_area, Kitchen_area, Floor, Number_of_floors, Renovation.
  • Предобработка: проверка пропусков (в наборе пропусков не обнаружено), удаление аномалий, кодирование категориальных признаков (OneHotEncoder), масштабирование числовых признаков (StandardScaler).
  • Код и настройки разделения выборок: train_test_split (test_size=0.2, random_state=42).
  • Реализация модели RandomForestRegressor: n_estimators=150, random_state=32; обучение и получение прогнозов.
  • Графики и визуализации: boxplot цен по типу жилья, scatter Price vs Area, распределения (kde) фактических и прогнозируемых значений, диаграммы по регионам и типам зданий.
  • Метрики качества: MSE = 1427140751266827.2, R² = 0.7846 (обсуждается интерпретация и перевод в RMSE для практической оценки ошибок).
  • Выводы и рекомендации по улучшению модели: расширение признакового пространства, подбор гиперпараметров, исключение экстремальных выбросов, использование бустинга.

📊 Для кого подходит

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

✨ Особенности

В работе использованы актуальные данные (ноябрь 2023), приведён подробный список признаков и примеры кода на Python (pandas, sklearn, seaborn). Приведены реальные числовые статистики: средняя цена ~36.1 млн руб., сильный разброс (min=1.1 млн, max=2.45 млрд), средняя площадь 72 м², среднее время до метро ~11.9 мин. Модель Random Forest показала R²=0.7846, что подтверждает высокую объясняющую способность при сохранении простоты реализации.

❓ Частые вопросы

Подойдет ли для моего ВУЗа?
Структура соответствует требованиям курсовой: введение, методология, проектная часть с кодом и визуализациями, заключение и список литературы.

Можно ли адаптировать?
Да — код и этапы предобработки легко адаптируются под другие регионы, дополнительные признаки или альтернативные алгоритмы (Gradient Boosting, XGBoost, LightGBM).

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