Привет, Habr! Сегодня расскажу, как с помощью машинного обучения можно проанализировать рынок недвижимости. На примере Липецка я использовал алгоритм k-средних (KMeans), чтобы провести кластеризацию стоимости квартир. Поделюсь подходом, инструментами и результатами. Поехали! 🚀
🚀 Почему это важно?
Анализ цен на недвижимость помогает:
-
выявить ценовые тренды;
-
принять стратегические решения в сфере недвижимости;
-
лучше понять рынок, чтобы сделать выгодную сделку.
Кластеризация, в частности, позволяет группировать объекты по стоимости, что даёт больше информации о структуре цен в разных районах города.
🔧 Инструменты
Для анализа я использовал:
-
Python — основной язык работы.
-
Pandas и NumPy — для обработки данных.
-
scikit-learn — для кластеризации.
-
Folium — для визуализации результатов на карте.
📊 Подготовка данных
Исходные данные предоставлены агентством недвижимости «Квадрат». Перед кластеризацией выполнены следующие шаги:
-
Удалены пропуски, выбросы и дубликаты.
-
С помощью библиотеки Folium, была произведена маркировка объектов на карте, для общего понимания расположенности квартир в каждом районе, демонстрация представлена на рисунке 1.
-
Так же, была проведена стандартизация данных с помощью библиотеки StandardScaler, которая нужна для того, чтобы привести все числовые переменные к общему масштабу .
🔍 Выбор количества кластеров
Для определения оптимального числа кластеров используется метод локтя:
Суть в этом методе, графическое определение оптимального числа кластеров в методе k-средних (KMeans). Идея заключается в том, чтобы найти точку на графике, где увеличение числа кластеров приводит к заметному уменьшению внутрикластерного расстояния (distortion) или суммы квадратов расстояний между точками и центроидами их кластера (WCSS). График метода локтя, представлен на рисунке 2.
Как видно на рисунке 2, когда мы перешли от пяти до шести кластеров, ошибка перестала существенно уменьшаться. Это объясняет, что выбор количества кластеров равен пяти.
📌 Кластеризация
Был создан объекта класса модели с использованием пяти кластеров, а также были проведены разные эксперименты с различными гиперпараметрами модели.
📈 Метрики качества
Выбор конкретных метрик, таких как Silhouette Score (Коэффициент Силуэта) равный 0,375 и индекс Calinski-Harabasz (Индекс Калински-Харабаша) равный 347,1, не является случайным. Эти метрики предоставляют важную информацию о качестве проведенного кластерного анализа. Коэффициент Силуэта отражает меру того, насколько объекты внутри кластера схожи между собой по сравнению с объектами в других кластерах. Значение 0,375 указывает на хорошую структуру кластеров, где объекты внутри кластеров сильно похожи друг на друга.
Индекс Calinski-Harabasz, в свою очередь, оценивает отношение межкластерной дисперсии к внутрикластерной. Значение 347,1 свидетельствует о хорошей компактности кластеров и их четкой отделимости друг от друга.
Исходя из результатов метрики, сложно сделать выводы о правильности модели, так как это в основном зависит от контекста задачи и структуры данных. Для лучшего понимания, стоит визуализировать полученные результаты кластерного анализа. Для этого мы воспользуемся библиотекой Folium, чтобы продемонстрировать результаты на карте OpenStreetMap, представленная на рисунке 3.
🌍 Результаты
На рисунке 3 видно, что результаты кластеризации совпадают с ожиданиями и логикой анализа. Это хороший знак: модель успешно отражает структуру данных и решает поставленную задачу. В итоге получилось 5 кластеров, каждый из которых представляет группу объектов с определёнными ценовыми диапазонами:
-
Зелёный кластер: бюджетные квартиры (700 тыс. — 3.79 млн руб.).
-
Оранжевый кластер: квартиры среднего ценового сегмента (1.15 млн — 4.45 млн руб.).
-
Синий кластер: небольшая группа со стоимостью от 700 тыс. до 4.55 млн руб.
-
Красный кластер: дорогие квартиры (3.6 млн — 10.9 млн руб.).
-
Фиолетовый кластер: самый разнородный сегмент (600 тыс. — 5.3 млн руб.).
Для более хорошего понимания результатов кластеров, представлены в виде диаграммы на рисунке 4.
🧩 Заключение
Анализ показал, что кластеры 0, 1, 2 и 4 логично отражают структуру цен на рынке недвижимости Липецка. Однако кластер 3 выделяется, так как включает дорогие объекты, среди которых могут быть как элитные новостройки, так и дома премиум-класса.
Чёрные маркеры на карте обозначают центроиды кластеров, что дополнительно подтверждает корректность распределения.
Стоит отметить, что количество объектов в каждом кластере варьируется. Это обусловлено спецификой рынка: плотностью застройки, характеристиками районов и другими локальными факторами. Подобные различия подчёркивают сложность анализа недвижимости, но также открывают новые возможности для более глубокого понимания структуры рынка.
Автор: IT_Crow