Привет, Habr! Сегодня расскажу, как с помощью машинного обучения можно проанализировать рынок недвижимости. На примере Липецка я использовал алгоритм k-средних (KMeans), чтобы провести кластеризацию стоимости квартир. Поделюсь подходом, инструментами и результатами. Поехали! ?

? Почему это важно?

Анализ цен на недвижимость помогает:

  • выявить ценовые тренды;

  • принять стратегические решения в сфере недвижимости;

  • лучше понять рынок, чтобы сделать выгодную сделку.

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

? Инструменты

Для анализа я использовал:

  • Python — основной язык работы.

  • Pandas и NumPy — для обработки данных.

  • scikit-learn — для кластеризации.

  • Folium — для визуализации результатов на карте.

? Подготовка данных

Исходные данные предоставлены агентством недвижимости «Квадрат». Перед кластеризацией выполнены следующие шаги:

  1. Удалены пропуски, выбросы и дубликаты.

  2. С помощью библиотеки Folium, была произведена маркировка объектов на карте, для общего понимания расположенности квартир в каждом районе, демонстрация представлена на рисунке 1.

Рис.1 Визуализация объектов г. Липецка на карте
Рис.1 Визуализация объектов г. Липецка на карте
  1. Так же, была проведена стандартизация данных с помощью библиотеки StandardScaler, которая нужна для того, чтобы привести все числовые переменные к общему масштабу .

? Выбор количества кластеров

Для определения оптимального числа кластеров используется метод локтя:

Суть в этом методе, графическое определение оптимального числа кластеров в методе k-средних (KMeans). Идея заключается в том, чтобы найти точку на графике, где увеличение числа кластеров приводит к заметному уменьшению внутрикластерного расстояния (distortion) или суммы квадратов расстояний между точками и центроидами их кластера (WCSS). График метода локтя, представлен на рисунке 2.

Рис.2 Выбор количества кластеров методом локтя
Рис.2 Выбор количества кластеров методом локтя

Как видно на рисунке 2, когда мы перешли от пяти до шести кластеров, ошибка перестала существенно уменьшаться. Это объясняет, что выбор количества кластеров равен пяти.

? Кластеризация

Был создан объекта класса модели с использованием пяти кластеров, а также были проведены разные эксперименты с различными гиперпараметрами модели.

? Метрики качества

Выбор конкретных метрик, таких как Silhouette Score (Коэффициент Силуэта) равный 0,375 и индекс Calinski-Harabasz (Индекс Калински-Харабаша) равный 347,1, не является случайным. Эти метрики предоставляют важную информацию о качестве проведенного кластерного анализа. Коэффициент Силуэта отражает меру того, насколько объекты внутри кластера схожи между собой по сравнению с объектами в других кластерах. Значение 0,375 указывает на хорошую структуру кластеров, где объекты внутри кластеров сильно похожи друг на друга.

Индекс Calinski-Harabasz, в свою очередь, оценивает отношение межкластерной дисперсии к внутрикластерной. Значение 347,1 свидетельствует о хорошей компактности кластеров и их четкой отделимости друг от друга.

 Исходя из результатов метрики, сложно сделать выводы о правильности модели, так как это в основном зависит от контекста задачи и структуры данных. Для лучшего понимания, стоит визуализировать полученные результаты кластерного анализа. Для этого мы воспользуемся библиотекой Folium, чтобы продемонстрировать результаты на карте OpenStreetMap, представленная на рисунке 3.

Рис.3 Визуализация результатов кластерного анализа
Рис.3 Визуализация результатов кластерного анализа

? Результаты

На рисунке 3 видно, что результаты кластеризации совпадают с ожиданиями и логикой анализа. Это хороший знак: модель успешно отражает структуру данных и решает поставленную задачу. В итоге получилось 5 кластеров, каждый из которых представляет группу объектов с определёнными ценовыми диапазонами:

  • Зелёный кластер: бюджетные квартиры (700 тыс. — 3.79 млн руб.).

  • Оранжевый кластер: квартиры среднего ценового сегмента (1.15 млн — 4.45 млн руб.).

  • Синий кластер: небольшая группа со стоимостью от 700 тыс. до 4.55 млн руб.

  • Красный кластер: дорогие квартиры (3.6 млн — 10.9 млн руб.).

  • Фиолетовый кластер: самый разнородный сегмент (600 тыс. — 5.3 млн руб.).

Для более хорошего понимания результатов кластеров, представлены в виде диаграммы на рисунке 4.

Рис.4 Количество наблюдений в каждом кластере
Рис.4 Количество наблюдений в каждом кластере

? Заключение

Анализ показал, что кластеры 0, 1, 2 и 4 логично отражают структуру цен на рынке недвижимости Липецка. Однако кластер 3 выделяется, так как включает дорогие объекты, среди которых могут быть как элитные новостройки, так и дома премиум-класса.

Чёрные маркеры на карте обозначают центроиды кластеров, что дополнительно подтверждает корректность распределения.

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

Комментарии (14)


  1. sergeiosipoff
    02.12.2024 20:16

    Автор, вам не приходило в голову, что прежде чем решать задачу, её нужно сформулировать? Ответ на какой бизнес-вопрос вы пытались найти? Подозреваю, что на никакой


    1. kompilainenn2
      02.12.2024 20:16

      Может вся статья - это результат этого самого "машинного обучения"?


    1. IT_Crow Автор
      02.12.2024 20:16

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

      Основная задача, описанная в статье, — анализ структуры цен на вторичное жильё в Липецке с помощью кластеризации. Это позволяет выделить ценовые сегменты, которые могут быть полезны как для конечных покупателей, так и для участников рынка недвижимости.

      Да, я не ставил задачу ответа на конкретный "бизнес-вопрос" — потому что целью исследования было выявление закономерностей в данных. Такой подход часто используется на этапах предварительного анализа (EDA, exploratory data analysis), чтобы лучше понять структуру и особенности рынка.

      Если говорить о применимости результатов, то данный анализ помогает определить, какие ценовые сегменты существуют в городе.

      Если у вас есть идеи, как дополнить или расширить анализ, я буду рад услышать их. Однако голословные обвинения вроде "на никакой" только затрудняют конструктивное обсуждение.


      1. sergeiosipoff
        02.12.2024 20:16

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


        1. IT_Crow Автор
          02.12.2024 20:16

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


  1. krammnic
    02.12.2024 20:16

    Раскрыли бы хоть что elbow method на самом деле вообще не очень хорошая штука...


    1. IT_Crow Автор
      02.12.2024 20:16

      Спасибо за ваш комментарий!

      Вы правы, метод "локтя" (elbow method) действительно имеет свои ограничения. Он основан на визуальной интерпретации графика, что делает его менее точным по сравнению с другими методами.
      Однако в рамках данной задачи он был выбран по нескольким причинам:
      Во-первых, простота и наглядность. Метод "локтя" подходит для предварительного анализа, так как его результаты легко интерпретировать даже для аудитории, не знакомой с машинным обучением.
      Во-вторых, характер данных. Для сегментации цен на вторичное жильё в Липецке график явно демонстрировал оптимальное число кластеров, что сделало его использование оправданным в этом контексте.

      Если у вас есть предложения по альтернативным методам (например, анализ "gap statistics" или использование оценки "Davies-Bouldin index"), буду рад услышать ваше мнение!


      1. krammnic
        02.12.2024 20:16

        Ну наверное сошлюсь на: https://arxiv.org/abs/2212.12189

        VRC, BIC и gap statistics, который вы уже назвали заходял неплохо. Но в общем случае проблема оптимального k не решена


  1. DanilaX
    02.12.2024 20:16

    Почему вы примеры кода не показали ?


    1. IT_Crow Автор
      02.12.2024 20:16

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

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


  1. Fardeadok
    02.12.2024 20:16

    Какойто пиар курсовой работы


    1. IT_Crow Автор
      02.12.2024 20:16

      Понимаю, почему у вас могло возникнуть такое впечатление — стиль статьи действительно напоминает классическую структуру: задача, методы, результаты, выводы. Но цель была не «пиариться», а поделиться результатами анализа, которые, на мой взгляд, могут быть полезны для понимания структуры цен на рынке недвижимости.


  1. AlexanderPohozhalov
    02.12.2024 20:16

    Лет 6-8 назад тоже увлекался нейронными сетями для оценки недвижимости и прогнозирования её стоимости на примере г. Барнаула, там модель нейроимитатора сложнее была, т.е. отдельно рассматривались нейронные сети по типу недвижимости, площади, этажу, типу стен, расположению в городе, которые и давали итоговую оценку для новых объектов

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

    Ну и вообще там уравнение линейной регрессии по площади будет примерно на 90% обеспечивать достоверный расчет, возможно, нет смысла с нейронными сетями вообще возиться

    Даже пару скринов нашел...


    1. IT_Crow Автор
      02.12.2024 20:16

      Вы правы, площадь — это один из ключевых факторов, влияющих на стоимость недвижимости. Однако задача, поставленная в этом анализе, отличалась от прогнозирования цены.

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

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

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